熊猫初学者问题:
如何为所有列创建跨频率计数表?我想利用输出制作一个海生热图,显示每对列之间的计数。
我有一个数据帧(从hdfs和pyspark中提取),有大约70个惟一的列和大约600K行
所需输出示例:
C1 C2 C3 C4 ...C70
C1 - 1 1 2
C2 1 - 0 2
C3 1 0 - 1
C4 2 2 1 -
...
C70
样品测向:
import numpy as np
import pandas as pd
raw_data = {'C1': [ 0, 2, 5, 0, 3], #...600K
'C2': [3, 0 , 2, 0, 0],
'C3': [0, 0, 0, 3, 3],
'C4': [2, 1, 1, 4, 0]}
df = pd.DataFrame(raw_data, columns = ['C1', 'C2', 'C3','C4'])
print(df)
我试过使用pandas中的crosstab、pivot、pivot_表,并认为解决方案使用的是crosstab,但我无法以所需的输出格式获得它(如果缺少明显的内容,很抱歉)。感谢任何帮助!
最佳答案
用1
将正值剪裁为clip_upper
,然后计算点积:
i = df.clip_upper(1)
j = i.T.dot(i)
j
C1 C2 C3 C4
C1 3 1 1 2
C2 1 2 0 2
C3 1 0 2 1
C4 2 2 1 4
关于python - 带有许多列的Python Pandas成对频率表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48673428/