迭代列表并制作分组的箱形图

时间:2018-03-16 10:28:42

标签: pandas boxplot

我有一个DataFrame,并希望为具有特定标签(列表框图)的数据选择制作分组箱图。箱线图应显示值并添加一条线,显示每组箱线图中值的平均值。

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,30,size=(100, 4)), columns=list('ABCD'))
label = ['A','B','C','D','E','F']
df['label'] = np.random.choice(label, df.shape[0])
boxplots = ['A', 'D']

我无法弄清楚如何制作分组箱图?我是否遍历箱线图列表,然后在每次迭代中将它们添加到绘图中?

非常感谢任何想法!

1 个答案:

答案 0 :(得分:1)

使用isingroupby

绘制条形图并不困难
df_selection = df[df['label'].isin(boxplots)]

df_sum = df_selection.groupby('label').sum()
df_mean = df_sum.mean(axis=1)
line_data = [(i-.3, i+.3, value) for i, (label, value) in enumerate(df_mean.iteritems()) ]
x_min, x_max, y = zip(*line_data)

ax = df_sum.plot.bar()
ax = ax.hlines(y, x_min, x_max, linewidth=2, color='k')

plot