首页 > 解决方案 > 如何从熊猫df相关中获取元素数量

问题描述

我有:

df=pd.DataFrame({'A':[1,2,3,np.NaN,435,546],
             'B':[10,2,3,4,867,23],
             'C':[4,5,np.NaN, np.NaN,np.NaN,64]})
df


    A       B   C
0   1.0     10  4.0
1   2.0     2   5.0
2   3.0     3   NaN
3   NaN     4   NaN
4   435.0   867 NaN
5   546.0   23  64.0

我计算相关性,df.corr()返回相关性矩阵。根据文档,相关性删除了 NaN,这在计算相关性(A,B)时有 5 个值可供选择,而相关性(A,C)有 3 个值。

我运行它以获取基于每个配对的元素数量。

for i in range(df.shape[1]):
  for j in range(df.shape[1]):
    if j==i: continue
    print(df.columns[i],df.columns[j],df.iloc[:,np.r_[i,j]].dropna().shape)
A B (5, 2)
A C (3, 2)
B A (5, 2)
B C (3, 2)
C A (3, 2)
C B (3, 2)

我怎样才能转换它,以便我可以在一个与使用类似的矩阵中得到它df.corr()

    A           B           C
A   1.000000    0.508726    0.999916
B   0.508726    1.000000    0.920458
C   0.999916    0.920458    1.000000

标签: pandassizecorrelation

解决方案


您是否在寻找常见的非nan的数量:

s = df.notna().astype(int)

s.T @ s

输出:

   A  B  C
A  5  5  3
B  5  6  3
C  3  3  3

推荐阅读