【问题标题】:Iterating through list and make a grouped boxplot遍历列表并制作分组箱线图
【发布时间】:2018-03-16 20:48:35
【问题描述】:

我有一个 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']

我真的不知道如何制作分组箱线图?我是否遍历箱线图列表,然后在每次迭代中将它们添加到绘图中?

非常感谢任何想法!

【问题讨论】:

  • 刚刚意识到:我犯了一个错误:我的意思是条形图而不是箱线图
  • 您可以编辑您的问题。

标签: pandas boxplot


【解决方案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')

【讨论】:

  • 有效,尽管我遇到了未定义的 line_couples 错误。删除我可以完成它!谢谢!
猜你喜欢
  • 2021-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-04
  • 2020-09-16
  • 2020-05-22
  • 1970-01-01
相关资源
最近更新 更多