首页 > 解决方案 > 如何为每个数字列按标签(分类变量)绘制密度图?

问题描述

我曾尝试使用地雷和岩石数据(http://archive.ics.uci.edu/ml/datasets/connectionist+bench+(sonar,+mines+vs.+rocks))进行 EDA。我已经放置了以下代码,可以绘制每个数字列的密度图。

有没有办法为数据集中的每个数字变量绘制相同的图表,但根据它是 M 还是 R(最后一列)在每个密度图中使用两条线。因此,我们可以看到哪个变量显示标签 M 与 R 的不同分布。

import pandas as pd

# import file
file = 'https://archive.ics.uci.edu/ml/machine-learning- 
databases/undocumented/connectionist-bench/sonar/sonar.all-data'
mr_df = pd.read_table(file, sep=',', header=None)

mr_df.plot(kind='density', subplots=True, layout=(8,8), sharex=False, legend=False, fontsize=1, figsize=(12,12))
plt.savefig('density plot.png')

在此处输入图像描述

标签: pythonpython-3.xpandasmatplotlib

解决方案


plt.subplots(nrows=8, ncols=8, figsize=(12,12))
for i in range(1, 61):
    plt.subplot(8, 8, i)
    mr_df.loc[mr_df[60] == 'R', i-1].plot(kind='density')
    mr_df.loc[mr_df[60] == 'M', i-1].plot(kind='density')

plt.subplot_tool() # allows easy adjustment of the subplot spacing

在此处输入图像描述


推荐阅读