zar*_*ski 5 python statistics heatmap pandas categorical-data
我有一个由22个分类变量(无序)组成的数据集。我想在一个不错的热图中可视化它们的相关性。自熊猫内置功能
DataFrame.corr(method='pearson', min_periods=1)
Run Code Online (Sandbox Code Playgroud)
仅实现数值变量的相关系数(Pearson,Kendall,Spearman),我必须自己对其进行汇总以执行卡方或类似操作,而且我不太确定哪个函数可以一步一步完成操作(而不是遍历所有cat1 * cat2对)。需要明确的是,这就是我想要的最终结果(一个dataframe):
cat1 cat2 cat3
cat1| coef coef coef
cat2| coef coef coef
cat3| coef coef coef
Run Code Online (Sandbox Code Playgroud)
有与pd.pivot_table相同的想法吗?
先谢谢了。
您可以使用 pd.factorize
df.apply(lambda x : pd.factorize(x)[0]).corr(method='pearson', min_periods=1)
Out[32]:
a c d
a 1.0 1.0 1.0
c 1.0 1.0 1.0
d 1.0 1.0 1.0
Run Code Online (Sandbox Code Playgroud)
数据输入
df=pd.DataFrame({'a':['a','b','c'],'c':['a','b','c'],'d':['a','b','c']})
Run Code Online (Sandbox Code Playgroud)
更新资料
from scipy.stats import chisquare
df=df.apply(lambda x : pd.factorize(x)[0])+1
pd.DataFrame([chisquare(df[x].values,f_exp=df.values.T,axis=1)[0] for x in df])
Out[123]:
0 1 2 3
0 0.0 0.0 0.0 0.0
1 0.0 0.0 0.0 0.0
2 0.0 0.0 0.0 0.0
3 0.0 0.0 0.0 0.0
df=pd.DataFrame({'a':['a','d','c'],'c':['a','b','c'],'d':['a','b','c'],'e':['a','b','c']})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14819 次 |
| 最近记录: |