我在熊猫数据框架中有一个使用日志:
event_time session_id object
10:00:03 1 A
10:00:03 1 B
10:00:03 1 C
10:00:03 1 E
10:00:03 2 J
10:00:03 2 O
10:00:03 2 A
10:00:03 2 A我已将对象按session_id分组。现在,我希望为任何给定的对象(即针对同一session_id)中对象共发生的次数的给定对对象构建对象与每个单元格对应的对象共生矩阵:大致如下所示:
A B C ...
A 20 1 12
B 1 100 9
C 12 9 30
...是否有一种方法可以以dict的形式显示上面的内容,这样所有的非零事件都不会被表示为任何给定的对象'key'?
很明显,矩阵是三角形的。是否有办法将矩阵转换为表格的熔融数据表:
Object 1 Object 2 # of co-occurences
A A 20
A B 1
... ... ...提前感谢您的帮助。
更新:我正在运行用于12 TB数据原型的algos,但是我将在一个多TB数据集的2-3 GB数据集上在AMAZON上运行“for”。我不认为国标是猪圈--建议的效率越高越好。
我希望能够在字典中查找对象,然后查看与它们同时出现的所有对象和计数(将来可能会在Solr中索引此结构)。
发布于 2013-12-03 23:14:11
您可以使用表格
In [11]: df.pivot_table('event_time', 'session_id', 'object',
aggfunc=len, fill_value=0)
Out[11]:
object A B C E J O
session_id
1 1 1 1 1 0 0
2 2 0 0 0 1 1发布于 2013-12-03 19:51:30
你的投入
In [80]: df
Out[80]:
event_time session_id object
0 10:00:03 1 A
1 10:00:03 1 B
2 10:00:03 1 C
3 10:00:03 1 E
4 10:00:03 2 J
5 10:00:03 2 O
6 10:00:03 2 A
7 10:00:03 2 A
[8 rows x 3 columns]这是session_id计数矩阵。你大部分时间都在那里。(当然,如果你愿意的话,你也可以填写。)
In [81]: df.groupby('session_id').apply(lambda x: x['object'].value_counts()).unstack()
Out[81]:
A B C E J O
session_id
1 1 1 1 1 NaN NaN
2 2 NaN NaN NaN 1 1
[2 rows x 6 columns]https://stackoverflow.com/questions/20358962
复制相似问题