Python Pandas 多列成对频率表

2023-12-28

初学者熊猫问题在这里:

如何为所有列创建交叉频率计数表?我想使用输出来制作一个 Seaborn 热图,显示每对列之间的计数。

我有一个数据框(使用 pyspark 从 hdfs 中提取),其中包含约 70 个独特的列和大约 600K 行

所需输出示例:

    C1 C2 C3 C4 ...C70
C1  -  1  1  2
C2  1  -  0  2
C3  1  0  -  1
C4  2  2  1  -
...   
C70

样本 DF:

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_table 并认为解决方案是使用 crosstab,但我无法以所需的输出格式获得它(很抱歉,如果我遗漏了一些明显的东西)。任何帮助表示赞赏!


将正值剪辑为1 with 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python Pandas 多列成对频率表 的相关文章

随机推荐