2

我有数以千计的调查回复,这些回复已根据回复的内容进行了标记。每个响应可以有一个或多个标签(最多 20 个),并且标签彼此独立,而不是被构造成类别子类别或其他东西。

我希望能够进行如下分析:

  • 给定标签有多少个实例?
  • 哪些标签总体上出现频率最高?
  • 标签 X 出现在哪里,还有哪些其他标签最常出现?
  • 所有标签的列表及其旁边的每个标签的计数
  • 选择数据子集进行类似分析(例如按国家/地区)

与我一起工作的人传统上在 Excel 中处理所有事情(一般业务战略咨询工作),而在这种情况下则行不通。他们的反应是将项目框架更改为 Excel 可以在数据透视表中处理的东西,但如果我们可以使用更强大的工具来支持更复杂的关系,那就更好了。

我一直在学习 SQLite,但开始担心我想做的事情会非常复杂。

我也一直在学习 Python(出于不相关的原因),我想知道 ORM 工具和一些 Python 代码是否是更好的选择。

然后有类似 Access 的东西(我没有,但如果它是这种东西的最佳选择,我可能愿意获得)。

总而言之,我很想知道这些分析总体上会有多难,以及哪些工具最适合这项工作。我完全接受这样一种想法,即我正在以一种倒退的方式思考部分或全部问题,并欢迎就我在这里所写内容的任何方面提出任何建议。

4

4 回答 4

1

虽然关于单个标签频率的数据应该很容易构建,但关于标签之间关系的数据非常困难并且属于数据挖掘领域。假设您有一个响应表、一个标签表和一个 response_tag 表,我将在非常高的级别上执行以下操作。

创建一个汇总表,列出响应标签的每个唯一组合,以及一个指示该组合出现次数的列。表结构应该类似于combination (id, count), combination_tags(combination_id, tag_id)。使用过程语句(ORM 或 SQL 游标)填充表,然后使用即席查询对数据进行采样。

这不是一个简单的操作,但它会使用简单的 RDBMS 为您提供结果,而无需使用企业级数据挖掘解决方案。

于 2012-05-09T18:59:43.097 回答
1

你有一个很小的数据集,所以你真的不需要任何类型的 ORM,只需在 Python 中加载所有数据并咀嚼它的报告。

SQL 作为一种语言对于更复杂的数据分析来说是可怕的(例如,你真的想对事物进行交叉制表等)。

于 2012-05-09T19:11:08.463 回答
1

将所有标签收集到一个列表中,并使用 python collections.Counter 和相关方法来获取频率和许多其他统计信息。像这样

>>> from collections import Counter
>>> x=['java', 'python', 'scheme', 'scheme', 'scheme', 'python', 'go', 'go', 'c',
... 'c']
>>> freqs = Counter(x)
>>> freqs.most_common(1)
[('scheme', 3)]
>>> 
于 2012-05-09T18:52:47.273 回答
0

使用 SQL!它对于数据分析非常强大。它将允许您在未来询问有关数据的问题。你还没有想到的问题。

尽管 SQL 作为一种语言可能看起来有点麻烦,但它比“真正的”编程语言更容易使用。在您的情况下,SQL 与 Excel 接口,因此用户可以通过他们熟悉的工具访问数据。

如果您确实使用 SQL,那么真正的数据库 (SQLLite) 是比 MSAccess 更好的解决方案。

我对 SQL 作为一种分析工具有足够的感觉,所以我写了一本关于这个主题的书,“使用 SQL 和 Excel 进行数据分析”。您可以查看亚马逊评论 (http://www.amazon.com/Data-Analysis-Using-SQL-Excel/dp/0470099518/ref=pd_sim_b_1) 以了解它的有效性。

于 2012-05-09T20:16:39.430 回答