我正在用Python实现一个交叉制表库,作为我新工作的编程练习,我已经实现了工作的要求,但是不够优雅和冗余。我想要一个更好的模型,它允许在基本模型之间进行漂亮,干净的数据移动,作为平面文件中的表格数据存储,以及可能会被问到的所有统计分析结果。
现在,我从表格中每行的一组元组到一个直方图,计算出目标元组出现的频率,到一个序列化器 - 有点笨拙 - 编译输出进入一组表格单元格进行显示。但是,我最终不得不经常回到桌子或直方图,因为从来没有足够的信息。
那么,有什么想法吗?
编辑:以下是一些数据的示例,以及我希望能够构建的数据 它。注意 ”。”表示一些“缺失”数据,这只是有条件的 计数。
1 . 1
1 0 3
1 0 3
1 2 3
2 . 1
2 0 .
2 2 2
2 2 4
2 2 .
如果我正在查看上面第0列和第2列之间的相关性,那么这就是我所拥有的表格:
. 1 2 3 4
1 0 1 0 3 0
2 2 1 1 0 1
此外,我希望能够计算频率/总频率,频率/小计,& c的比率。
答案 0 :(得分:1)
您可以使用内存中的sqlite
数据库作为数据结构,并将所需的操作定义为SQL查询。
import sqlite3
c = sqlite3.Connection(':memory:')
c.execute('CREATE TABLE data (a, b, c)')
c.executemany('INSERT INTO data VALUES (?, ?, ?)', [
(1, None, 1),
(1, 0, 3),
(1, 0, 3),
(1, 2, 3),
(2, None, 1),
(2, 0, None),
(2, 2, 2),
(2, 2, 4),
(2, 2, None),
])
# queries
# ...
答案 1 :(得分:1)
S W发布了a good basic recipe for this on activestate.com。
本质似乎是......
然后例如,行y的总数将为sum([rs[y][x] for x in xsort])
答案 2 :(得分:0)
由于这是Python的早期编程练习,他们可能希望您了解Python内置机制适合初始版本的问题。字典结构似乎是一个很好的候选人。 tab-sep文件中的第一列值可以是字典中的键。该键找到的条目本身可以是字典,其键是第二列值。子字典的条目是一个计数,当你第一次遇到一对时添加一个新的子字典时,它被初始化为1。
答案 3 :(得分:-1)
为什么不使用HTML Tables存储它?它可能不是最好的,但您可以非常轻松地在浏览器中查看它。
编辑:
我只是重新阅读了这个问题而你要求的是数据模型,而不是存储模型。回答这个问题...
这完全取决于您将如何报告数据。例如,如果您要进行大量的旋转或聚合,那么将它存储在列主要顺序中会更有意义,例如,这样您就可以对列进行求和以获得计数。
如果你解释一下你想要提取的信息,那将会有很大的帮助。