Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python对列表中的项目进行分类_Python_List - Fatal编程技术网

使用python对列表中的项目进行分类

使用python对列表中的项目进行分类,python,list,Python,List,目前我在Excel中有一份110000名捐赠者的名单。他们提供给我们的信息之一是他们的职业。我想把这个列表浓缩成我定义的10或20个类别 通常我只是一行一行地快速浏览,但由于我需要做一年的数据,所以我没有时间逐行做1000000多行 是否有必要定义我的10或20个类别,然后让python从中进行分类 更新: 数据格式不好。人们在网上或纸条上自行填写字段,然后将其邮寄到数据处理公司。差异很大。首席执行官,首席执行官,执行办公室,还有很多 我使用了UNIQ comand的分类,发现我的列表中有大约1

目前我在Excel中有一份110000名捐赠者的名单。他们提供给我们的信息之一是他们的职业。我想把这个列表浓缩成我定义的10或20个类别

通常我只是一行一行地快速浏览,但由于我需要做一年的数据,所以我没有时间逐行做1000000多行

是否有必要定义我的10或20个类别,然后让python从中进行分类

更新:

数据格式不好。人们在网上或纸条上自行填写字段,然后将其邮寄到数据处理公司。差异很大。首席执行官,首席执行官,执行办公室,还有很多


我使用了UNIQ comand的分类,发现我的列表中有大约13000种不同的职业。

我假设这些数据很嘈杂,从某种意义上说,它们可能是任何用文字写的东西。这里的主要困难是如何定义输入数据和类别之间的映射,这首先涉及到查看数据

我建议你看看你所拥有的,并制定一个从输入职业到类别的映射列表。然后,您可以使用几乎任何工具(如果您使用excel,请坚持使用excel)将该映射应用到每一行。有些行不属于任何类别。您应该查看它们,并找出这是因为您的映射不充分(例如,您没有考虑如何与兽医打交道),还是因为数据太嘈杂。如果是噪声,您可以手动处理剩余部分,或者尝试使用其他技术对数据进行分类,例如正则表达式或某种自然语言处理库

一旦你弄清楚了你的问题案例是什么,回来问我们关于它们的情况,并提供示例数据和你一直在使用的代码


如果你甚至不能迈出第一步,弄清楚如何运行映射,做一些研究,试着写一些东西,然后带着一个具体的问题回来。

以当前格式转储这些数据几乎是不可能的。您需要手动将所有案例简化为定义良好的案例集,例如:

  • 首席执行官、执行办公室、首席信息官、首席执行官、首席技术官都属于C级明星
  • 经理、PM、主管将进入经理类别
  • 像兽医、护理人员或类似性质的人这样的一次性工作也属于另一类
本手册还将让您深入了解如何为数据处理公司编制更好的问卷或格式,并进一步提高您能够更快地处理后续数据的可能性

一旦达到这一点,元组字典就足以进行数据分类,其中您将有如下内容:

dict_x = {'C-Star': (('bob', donation_dollars, 'company_y', 'e_mail_addy'), 
                    ('jim', donation_dollars_2, 'company_z', 'e_mail_addy')),
          'Other': (('sophie', donation_dollars_3, 'company_x', 'e_mail_addy')) }
这可以通过列表理解、lambda函数、生成器或一些老式for循环来构建


tl:dr;您将不得不手动对该集合进行分类,几乎不可能在没有格式良好的数据集的情况下以编程方式完成所有边缘情况。如果你没有时间,有专门从事这项工作的公司能够帮助你将数据格式化为你想要的组,那么你需要花费时间或金钱才能进入一个易于排序的数据集。

我以前也处理过类似/几乎完全相同的情况。很多次

简短回答:“哦,我是scr$”

长答案——“有很多方法可以尽量减少你是短答案的程度”

就我个人而言,我会做以下工作:

  • 至少将你的职业转换为RDMBS。sqlite很好。准备为分析的每个“过程”或“阶段”添加新列。我认为这些列是“提示”,可以帮助你更好地细化你的目标。
  • 编写一个脚本,生成跨姓名分布的报告。这将帮助您尽可能地不断“标准化”它们。例如:“Dr”=“Doctor”=“Dr.”;“律师”=“律师”(和may=“合伙人”,但这会打开一罐蠕虫;首席执行官=首席执行官=首席执行官等
  • 编写一个脚本,遍历所有专业,并使用soundex/metaphone版本将它们转换为表示形式。我更喜欢变音2/双倍变音(http://en.wikipedia.org/wiki/Metaphone). 这将帮助你克服大多数拼写错误和发音相似的单词
  • 持续运行分发脚本以查找 应该合并到另一个概念中
攻击的总体计划是,你需要不断地分析你的数据,找出从数百/数千个职业到几十个职业的某种映射

在原始python中执行此操作的另一种方法是使用像GoogleRefine()这样的软件,它以前是freebase。这可以让你在一个应用程序中做很多事情


不管怎样,在不断优化的过程中,您将不得不处理大量的手动数据分析——而且在某个时候您也不得不放弃。如果你能在几个小时内将80%的职业分为<50个组,那么拍拍自己的后背并感到非常自豪。

你的意思是你有一个不同职业的列表,并且知道每个职业属于哪一类?如果是这样的话,那么是的,你可以在Python中这样做,但你也可以在数据库中这样做,甚至可以直接在Excel中使用查找表。你至少需要告诉我们这些数据是否格式正确(例如,这些职业是从一百人的名单中挑选出来的),或者这些数据是否都是由数据录入员输入的。嘿,对不起,我没有提到这一点。数据格式不好。人们自己填充一个f