不同列的相关性

时间:2018-06-19 13:10:38

标签: python pandas seaborn

我有一个巨大的Excel文件,其中包含几百列。例如,我想将前10列与接下来的10列或任何其他列范围相关联。什么是做到这一点的最佳方法。例如,使用View,我得到前10列。不幸的是,我不知道该怎么做。

你能帮我吗?

1 个答案:

答案 0 :(得分:0)

考虑使用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