我有一个由500行和105列组成的数据框,我希望使用卡方检验对所有变量进行关联。
df = pd.read_csv('segment.csv')
pd.crosstab(**df.melt(var_name='columns', value_name='index'))
我为一个变量和一个变量编写了一个脚本,如下所示:
import pandas
from scipy.stats import chi2_contingency
def chisq_of_df_cols(df, c1, c2):
groupsizes = df.groupby([c1, c2]).size()
ctsum = groupsizes.unstack(c1)
return(chi2_contingency(ctsum.fillna(0)))
chisq_of_df_cols(df, 'aa_19-24', 'aa_25-34')
Out[1]:
(0.6698331506515647, 0.41310978435048606, 1, array([[4.7817e+02, 1.6830e+01],[4.8300e+00, 1.7000e-01]]))
用(1-n)个变量而不是多次调用函数chisq_of_df_cols
来对每个变量进行卡方检验的最佳方法是什么。