交叉统计数据的最佳Pythonic数据结构

时间:2018-10-11 00:25:14

标签: python data-structures

我正在编写一些Python脚本来分析和检索从大量名义类别中收集的交叉列表数据。例如,考虑来自大量邮政编码的数据,其中每个邮政编码都由一个年龄段(大约8个槽位)和一个性别槽(2个槽位)进行交叉制表。

从功能上讲,我可以使用以邮政编码为键,以列表为值的字典来实现所需的一切。但是,此解决方案有点过时。数据结构本身没有任何内容指示哪个交叉表到达何处,即在使用代码时,您必须来回滚动(或依靠注释)以确定年龄是内部列表还是外部列表等。并且对于将来的应用程序,我将处理4或5个交叉表变量。

在c语言中,通常可以通过将数组与结构组合在一起来解决,以便结构成员的名称有助于保持一切有条理,即ptrZipCodeEntry-> AgeBin [2] .Male = 1000。实质,我的问题是:在这种情况下,最佳的pythonic做法是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用Pandas来进行交叉制表。 Pandas是一个数据库管理库,通常在python中用于交叉列表等数据处理工作。

看看他们的cross-tabulation documentation中给出的示例,我们可以看到您是否有3个数据数组:

a = array([foo, foo, foo, foo, bar, bar,
   bar, bar, foo, foo, foo], dtype=object)
b = array([one, one, one, two, one, one,
   one, two, two, two, one], dtype=object)
c = array([dull, dull, shiny, dull, dull, shiny,
   shiny, dull, shiny, shiny, shiny], dtype=object)

您可以对

进行交叉制表

crosstab(a, [b, c], rownames=['a'], colnames=['b', 'c'])

b    one          two
c    dull  shiny  dull  shiny
a
bar  1     2      1     0
foo  2     2      1     2