jmv
jmv

Reputation: 61

How do I produce a bar chart of the mean of the data in each category in a data frame?

I am looking at the chickwts built-in data set. I want to display a bar chart of the mean of the chick weights for each feed category.

I can produce a bar chart for the counts and the individual weights but don't know how to get the means into a bar chart.

The dataframe structure is as follows.

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

Any help appreciated.

Upvotes: 0

Views: 51

Answers (1)

Alex Serra Marrugat
Alex Serra Marrugat

Reputation: 2042

I recommend you create two list, one for the category name, and another with the mean value. Then, use plt.bar() to plot it. Here a example code:

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

And then plot it:

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() 

Upvotes: 1

Related Questions