熊猫初学者问题:
如何为所有列创建跨频率计数表?我想利用输出制作一个海生热图,显示每对列之间的计数。
我有一个数据帧(从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/

10-12 19:12