首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python对列表中的项进行分类

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

Stack Overflow用户
提问于 2012-10-03 23:27:30
回答 3查看 1.2K关注 0票数 3

目前,我在Excel中有一个110,000名捐赠者的名单。他们给我们的信息之一是他们的职业。我想将这个列表压缩到我定义的10到20个类别。

通常我会一行一行地读完,但是由于我需要一年的时间来处理这些数据,所以我真的没有时间逐行处理1,000,000+。

有没有办法定义我的10个或20个类别,然后让python从中进行排序?

更新:

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

我使用了一个排序UNIQ命令,发现我的列表中有大约13,000个不同的职业。

EN

回答 3

Stack Overflow用户

发布于 2012-10-03 23:36:25

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

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

一旦你弄清楚了你的问题案例是什么,回来向我们询问他们,样本数据,以及你一直在使用的代码。

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

票数 1
EN

Stack Overflow用户

发布于 2012-10-14 11:33:44

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

首席执行官、首席信息官、首席执行官、首席技术官都会去C星级category

  • Manager,PM,主管会去经理类别

  • One of,比如兽医或护理提供者,或者类似性质的东西都会去其他类别的

此手动分析还将让您深入了解如何为数据处理公司格式化更好的问卷或格式,并进一步增加您能够更快地处理后续数据的可能性。

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

代码语言:javascript
复制
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;你将不得不手动对这个集合进行分类,如果没有格式良好的数据集,几乎不可能达到所有可以通过编程实现的边缘情况。如果你没有时间,有专门的公司可以帮助你将你的数据格式化到你想要的组中,你将不得不花费时间或金钱来让你自己进入一个容易排序的数据集。

票数 0
EN

Stack Overflow用户

发布于 2012-10-14 12:31:52

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

简短的回答--“哦,见鬼**!@#,我是scr@#@#$。”

长答案--“有一些方法可以最小化你是短答案的程度”

就我个人而言,我会做以下事情:

  • 转换成RDMBS,至少你的职业是这样。sqlite很好。准备好为分析的每个“通过”或“阶段”添加新的列。我认为这些列是“提示”,可以帮助您更好地细化您的目标。
  • 编写了一个脚本来生成跨您姓名的分布报告。这将有助于您尽可能地不断地“标准化”它们。例如:“医生”=“医生”;“律师”=“律师”(和可能=“合伙人”,但这打开了一个蠕虫罐头……);ceo =首席执行官=首席执行官,等等。
  • 编写了一个脚本来遍历所有职业,并使用soundex / metaphone版本将它们转换为表示。我更喜欢metaphone2 / doubele metaphone (http://en.wikipedia.org/wiki/Metaphone)。这将帮助您克服大多数拼写错误和声音相似的问题words.
  • Continually运行分发脚本来查找应该合并到另一个概念中的项目组。

一般的攻击计划是,你需要不断地分析你的数据,以找出从成百上千个职业到几十个职业的某种映射。

在原始python中实现这一点的另一种选择是使用谷歌精炼( http://code.google.com/p/google-refine/)这样的软件,该软件过去是免费的。这让你可以在一个应用程序中做很多这样的事情。

无论如何,在不断改进的过程中,您将不得不处理大量的手动数据分析--而且在某些时候,您也将不得不放弃。如果你能在几个小时内将80%的职业分成< 50个小组,那就拍拍自己的后背,感到非常自豪。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12711743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档