python - 不同列的相关性
问题描述
我有一个巨大的 Excel 文件,有 100 列。例如,我想将前 10 列与接下来的 10 列或任何其他列范围相关联。什么是最好的方法来做到这一点。例如,df.iloc[:,0:10].corr()
我得到前 10 列。不幸的是,我不知道如何走得更远。
你能帮助我吗?
解决方案
考虑corr.with
代替corr
. 但是,corr.with
将DataFrame与Series进行比较(df 到 df 将是模棱两可的配对,因此返回NaN
)。因此,考虑从range
比较列中运行一个列表推导以返回一个Series列表,然后可以将其转换为DataFrame。下面使用随机种子数据进行演示。
import numpy as np
import pandas as pd
np.random.seed(61918)
# DATAFRAME OF 100 COLS AND 100 ROWS
df = pd.DataFrame(np.random.randn(100,100))
# CORRELATION BETWEEN FIRST 10 AND NEXT 10 COLUMNS
# (ADJUST .iloc INDICES AND range FOR OTHER COLS)
corr_df = pd.DataFrame([df.iloc[:,0:10].corrwith(df.iloc[:,i], axis=0) for i in range(10,20)])
print(corr_df)
# 0 1 2 3 4 5 6 7 8 9
# 0 -0.099616 0.052101 -0.089509 -0.053868 0.033873 -0.043973 0.044963 -0.012135 -0.021728 -0.052815
# 1 -0.111734 0.187650 0.104816 0.008250 -0.035936 0.002264 0.023941 -0.135608 0.081189 -0.073853
# 2 0.010684 -0.065890 -0.234728 -0.044789 0.042876 -0.114719 -0.073446 -0.185746 0.007169 0.158093
# 3 0.056081 -0.019951 -0.057006 -0.060794 -0.069991 0.039497 0.041345 0.018930 -0.056765 -0.128366
# 4 0.234364 -0.202907 0.039083 -0.017380 -0.020491 -0.126441 0.033971 -0.088621 -0.011655 -0.007285
# 5 0.010350 -0.160066 -0.141838 0.083785 -0.125714 -0.007721 0.082826 -0.207254 -0.064831 -0.036318
# 6 0.007275 -0.004525 -0.086660 -0.070298 0.024023 -0.087400 -0.029985 0.042614 -0.058841 0.035254
# 7 0.030607 -0.101061 0.004954 0.092204 -0.005586 0.041793 0.067349 -0.003554 0.050511 -0.039119
# 8 -0.061966 -0.198703 -0.011631 -0.028350 0.021107 0.160191 0.087607 -0.032543 -0.025399 0.005975
# 9 -0.053608 0.079021 -0.068879 0.005653 -0.040717 -0.030002 -0.008213 -0.005511 -0.052635 0.176989
推荐阅读
- python - 无法将索引转换为日期格式
- python - 在已部署的 Flask 应用程序 (Heroku) 上使用 OpenCV
- reactjs - React - 新的 Context API 不适用于 Class.contextType,但适用于 Context.Consumer
- c# - 序列包含多个匹配元素 - EF 数据库初始化
- sql - 创建自定义序列
- kubernetes - KUBECTL 错误:服务器已要求客户端提供凭据
- html - Angular 材质扩展面板点击事件
- python - 为什么我在 Python 请求中收到 502 代理错误?
- java - 运行方法时应用程序冻结
- r - R:层函数中未使用的参数