首页 > 解决方案 > 不同列的相关性

问题描述

我有一个巨大的 Excel 文件,有 100 列。例如,我想将前 10 列与接下来的 10 列或任何其他列范围相关联。什么是最好的方法来做到这一点。例如,df.iloc[:,0:10].corr()我得到前 10 列。不幸的是,我不知道如何走得更远。

你能帮助我吗?

标签: pythonpandasseaborn

解决方案


考虑corr.with代替corr. 但是,corr.withDataFrameSeries进行比较(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

推荐阅读