如何为每个数字列按标签(分类变量)绘制密度图?

时间:2018-06-29 11:46:49

标签: python python-3.x pandas matplotlib

我尝试使用矿山和岩石数据(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')

enter image description here

1 个答案:

答案 0 :(得分:0)

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

enter image description here