我的数据框(Pandas的结构)看起来像上面的
现在我想在单独的画布上为每个特征绘制箱线图。分离条件是第一列。我有类似的直方图图(下面的代码),但我不能为箱线图绘制工作版本。
hist_params = {'normed': True, 'bins': 60, 'alpha': 0.4}
# create the figure
fig = plt.figure(figsize=(16, 25))
for n, feature in enumerate(features):
# add sub plot on our figure
ax = fig.add_subplot(features.shape[1] // 5 + 1, 6, n + 1)
# define range for histograms by cutting 1% of data from both ends
min_value, max_value = numpy.percentile(data[feature], [1, 99])
ax.hist(data.ix[data.is_true_seed.values == 0, feature].values, range=(min_value, max_value),
label='ghost', **hist_params)
ax.hist(data.ix[data.is_true_seed.values == 1, feature].values, range=(min_value, max_value),
label='true', **hist_params)
ax.legend(loc='best')
ax.set_title(feature)
以上代码生成的输出如下(仅附加了部分输出):
3条答案
按热度按时间lxkprmvk1#
DataFrame.boxplot()
很好地实现了自动化:第一个参数告诉Pandas要画哪一列,第二个参数告诉Pandas要按哪一列分组(你称之为分离条件),第三个参数告诉Pandas要画哪一个轴。
列出所有列(除了要分组的列)可能会很繁琐,但可以通过省略第一个参数来避免这种情况,然后必须显式地指定其他两个参数:
368yc8dk2#
如果要为每列创建单独的图,则可以迭代每列,并使用
plt.figure()
为每个图初始化一个新图形。如果只想将所有列放入同一个箱线图中,则可以使用
df.plot(kind='box')
roejwanj3#
如果您想使用Seaborn在一个图形中绘制所有这些数据,您可以先对数据框进行
melt
,然后再进行绘制。