Python Pandas pandas 一列与所有列的相关性
Python Pandas pandas correlation one column vs all
我正在尝试获取单个列与数据框的其余数字列之间的相关性,但我被卡住了。
我正在尝试这样做:
corr = IM['imdb_score'].corr(IM)
但是我得到了错误
operands could not be broadcast together with shapes
我认为这是因为我试图找到向量(我的 imdb_score
列)与多列数据帧之间的相关性。
如何解决这个问题?
我想你可以只使用 .corr
其中 然后 select 只是你感兴趣的栏目。
所以,像
IM.corr()['imbd_score']
应该可以。
与其计算所有相关性并保留感兴趣的相关性,不如计算感兴趣相关性的子集在计算上更有效:
import pandas as pd
df = pd.DataFrame()
df['a'] = range(10)
df['b'] = range(10)
df['c'] = range(10)
pd.DataFrame([[c, df['a'].corr(df[c])] for c in df.columns if c!='a'], columns=['var', 'corr'])
最有效的方法是使用corrwith
。
示例:
df.corrwith(df['A'])
示例数据的设置:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randint(10, size=(5, 5)), columns=list('ABCDE'))
# A B C D E
# 0 7 2 0 0 0
# 1 4 4 1 7 2
# 2 6 2 0 6 6
# 3 9 8 0 2 1
# 4 6 0 9 7 7
输出:
A 1.000000
B 0.526317
C -0.209734
D -0.720400
E -0.326986
dtype: float64
我正在尝试获取单个列与数据框的其余数字列之间的相关性,但我被卡住了。
我正在尝试这样做:
corr = IM['imdb_score'].corr(IM)
但是我得到了错误
operands could not be broadcast together with shapes
我认为这是因为我试图找到向量(我的 imdb_score
列)与多列数据帧之间的相关性。
如何解决这个问题?
我想你可以只使用 .corr
其中
所以,像
IM.corr()['imbd_score']
应该可以。
与其计算所有相关性并保留感兴趣的相关性,不如计算感兴趣相关性的子集在计算上更有效:
import pandas as pd
df = pd.DataFrame()
df['a'] = range(10)
df['b'] = range(10)
df['c'] = range(10)
pd.DataFrame([[c, df['a'].corr(df[c])] for c in df.columns if c!='a'], columns=['var', 'corr'])
最有效的方法是使用corrwith
。
示例:
df.corrwith(df['A'])
示例数据的设置:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randint(10, size=(5, 5)), columns=list('ABCDE'))
# A B C D E
# 0 7 2 0 0 0
# 1 4 4 1 7 2
# 2 6 2 0 6 6
# 3 9 8 0 2 1
# 4 6 0 9 7 7
输出:
A 1.000000
B 0.526317
C -0.209734
D -0.720400
E -0.326986
dtype: float64