pandas - 如何从熊猫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
解决方案
您是否在寻找常见的非nan的数量:
s = df.notna().astype(int)
s.T @ s
输出:
A B C
A 5 5 3
B 5 6 3
C 3 3 3
推荐阅读
- linux - Vim 在生成新终端时使用不同的配置或 shell 环境变量
- python - 为什么 pip 执行 python 版本 3.8.3 而不是更高版本?
- c# - 我可以在两个不同的类中使用依赖注入单例吗?
- javascript - 如何使用 setTimeout 延迟代码执行?
- java - SSL 证书过期异常
- html - 调整到标题字长的容器元素的大小 - 如何修复它?(绝对初学者)
- sensors - 我怎样才能嗅探 LoRaWAN 包?
- gwt - CellTable 的事件
- c# - 使用单元格样式和格式将行插入现有表格
- typescript - 如何为使用 set 函数的组件声明类型?