我想检查一下pandas数据帧中多列之间的相关性和相关性。
使用以下数据帧,我构建了以下相关表:
ARI Flesch Kincaid time VIX_close FEDFUNDS
-2.090000 NaN -3.400000 2016-02-04 20.239333 0.345333
16.060272 38.489788 14.355616 2016-02-04 20.239333 0.345333
当我使用以下代码运行Kincaid与其他变量时,一切正常:
stats.pearsonr(master.Kincaid,master.VIX_close)
但是,当我为其他变量运行类似的代码时:
stats.pearsonr(master.ARI,master.VIX_close)
我得到以下输出:
(nan, 1.0)
据我所知,如果ARI的变化可以理解,那么情况并非如此 - ARI与Kincaid非常相似......
奖金问题:无论如何,一次性在整个关联表中运行显着性检验?提前谢谢。
答案 0 :(得分:0)
Pandas有一个内置的相关函数来对整个数据框运行
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.corr.html
也许只需运行master.corr()
计算所有组合:
import itertools
from scipy.stats import ttest_ind, pearsonr
columns_combinations = [c for c in itertools.combinations(master.columns,2)]
pearson_calc_df = pd.DataFrame([pearsonr(master[c[0]], master[c[1]]) for c in columns_combinations],
index=columns_combinations)
ttest_calc_df = pd.DataFrame([ttest_ind(master[c[0]], master[c[1]]) for c in columns_combinations],
index=columns_combinations)
尽管方差为零,你仍然会在相关性上保持NaN。