微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何生成数据框中每个类别中数据均值的条形图?

如何解决如何生成数据框中每个类别中数据均值的条形图?

我正在查看chickwts 内置数据集。 我想显示每个饲料类别的雏鸡体重平均值的条形图。

我可以为计数和单个权重生成条形图,但不知道如何将均值放入条形图中。

数据帧结构如下。

list (chickwts)
[[1]]
   weight      Feed
1     179 horsebean
2     160 horsebean
3     136 horsebean
4     227 horsebean
5     217 horsebean
6     168 horsebean
7     108 horsebean
8     124 horsebean
9     143 horsebean
10    140 horsebean
11    309   linseed
12    229   linseed
13    181   linseed
14    141   linseed
15    260   linseed
16    203   linseed
17    148   linseed
18    169   linseed
19    213   linseed
20    257   linseed
21    244   linseed
22    271   linseed
23    243   soybean
24    230   soybean
25    248   soybean
26    327   soybean
27    329   soybean
28    250   soybean
29    193   soybean
30    271   soybean
31    316   soybean
32    267   soybean
33    199   soybean
34    171   soybean
35    158   soybean
36    248   soybean
37    423 sunflower
38    340 sunflower
39    392 sunflower
40    339 sunflower
41    341 sunflower
42    226 sunflower
43    320 sunflower
44    295 sunflower
45    334 sunflower
46    322 sunflower
47    297 sunflower
48    318 sunflower
49    325  meatmeal
50    257  meatmeal
51    303  meatmeal
52    315  meatmeal
53    380  meatmeal
54    153  meatmeal
55    263  meatmeal
56    242  meatmeal
57    206  meatmeal
58    344  meatmeal
59    258  meatmeal
60    368    casein
61    390    casein
62    379    casein
63    260    casein
64    404    casein
65    318    casein
66    352    casein
67    359    casein
68    216    casein
69    222    casein
70    283    casein
71    332    casein

感谢任何帮助。

解决方法

我建议您创建两个列表,一个用于类别名称,另一个用于平均值。然后,使用 plt.bar() 绘制它。这是一个示例代码:

cat=[]
mean_value=[]
for e in df["feed"].unique():
    cat.append(e)
    mean_value.append(df["feed"][df["feed"]==e])

然后绘制它:

import matplotlib.pyplot as plt

fig = plt.figure(figsize = (10,5)) 
  
# creating the bar plot 
plt.bar(cat,mean_value,color ='maroon',width = 0.4) 
  
plt.xlabel("Feed") 
plt.ylabel("Mean") 
plt.title("Mean of feeds") 
plt.show() 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。