我有一个具有大量特征的数据集,因此分析相关矩阵变得非常困难。我想绘制一个相关矩阵,我们使用dataframe.corr()函数从pandas库中获得。pandas库是否提供了任何内置函数来绘制这个矩阵?
当前回答
Statmodels图形也提供了一个很好的相关矩阵视图
import statsmodels.api as sm
import matplotlib.pyplot as plt
corr = dataframe.corr()
sm.graphics.plot_corr(corr, xnames=list(corr.columns))
plt.show()
其他回答
如果你的dataframe是df,你可以简单地使用:
import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(15, 10))
sns.heatmap(df.corr(), annot=True)
Seaborn的热图版本:
import seaborn as sns
corr = dataframe.corr()
sns.heatmap(corr,
xticklabels=corr.columns.values,
yticklabels=corr.columns.values)
你可以通过绘制海洋出生的热图或熊猫的散射矩阵来观察特征之间的关系。
散射矩阵:
pd.scatter_matrix(dataframe, alpha = 0.3, figsize = (14,8), diagonal = 'kde');
如果你想可视化每个特征的偏度,也可以使用海运配对图。
sns.pairplot(dataframe)
党Heatmap:
import seaborn as sns
f, ax = pl.subplots(figsize=(10, 8))
corr = dataframe.corr()
sns.heatmap(corr,
cmap=sns.diverging_palette(220, 10, as_cmap=True),
vmin=-1.0, vmax=1.0,
square=True, ax=ax)
输出将是特征的相关映射。参见下面的例子。
杂货店和洗涤剂之间的相关性很高。类似的:
高相关性产品:
杂货和洗涤剂。
相关性中等的产品:
牛奶和杂货 牛奶和洗涤剂。纸
低相关性产品:
牛奶和熟食 冷冻和新鲜。 冷冻熟食店。
从配对图中:你可以从配对图或散射矩阵中观察到相同的一组关系。但从这些可以判断数据是否正态分布。
注:上图为取自数据的同一张图,用于绘制热图。
为了完整起见,截至2019年底,我所知道的seaborn最简单的解决方案,如果使用Jupyter:
import seaborn as sns
sns.heatmap(dataframe.corr())
我更喜欢用Plotly,因为它的图表更具交互性,也更容易理解。可以使用下面的代码片段。
import plotly.express as px
def plotly_corr_plot(df,w,h):
fig = px.imshow(df.corr())
fig.update_layout(
autosize=False,
width=w,
height=h,)
fig.show()
推荐文章
- 在每个列表元素上调用int()函数?
- 当使用代码存储库时,如何引用资源的相对路径
- 如何在Flask-SQLAlchemy中按id删除记录
- 在Python中插入列表的第一个位置
- Python Pandas只合并某些列
- 如何在一行中连接两个集而不使用“|”
- 从字符串中移除前缀
- 代码结束时发出警报
- 如何在Python中按字母顺序排序字符串中的字母
- 在matplotlib中将y轴标签添加到次要y轴
- 如何消除数独方块的凹凸缺陷?
- 为什么出现这个UnboundLocalError(闭包)?
- 使用Python请求的异步请求
- 如何检查一个对象是否是python中的生成器对象?
- 如何从Python包内读取(静态)文件?