我正在编写一些Python脚本来分析和检索从大量名义类别中收集的交叉列表数据。例如,考虑来自大量邮政编码的数据,其中每个邮政编码都由一个年龄段(大约8个槽位)和一个性别槽(2个槽位)进行交叉制表。
从功能上讲,我可以使用以邮政编码为键,以列表为值的字典来实现所需的一切。但是,此解决方案有点过时。数据结构本身没有任何内容指示哪个交叉表到达何处,即在使用代码时,您必须来回滚动(或依靠注释)以确定年龄是内部列表还是外部列表等。并且对于将来的应用程序,我将处理4或5个交叉表变量。
在c语言中,通常可以通过将数组与结构组合在一起来解决,以便结构成员的名称有助于保持一切有条理,即ptrZipCodeEntry-> AgeBin [2] .Male = 1000。实质,我的问题是:在这种情况下,最佳的pythonic做法是什么?
答案 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