带值平均值的Python条形图yaxis

2024-10-01 13:39:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用Pandas和Pyplot生成条形图时遇到问题。我试图使用条形图y轴/条形高度的平均值,x轴是每个性别的条形图

通过调用以性别为x的列,我可以绘制一个正确显示性别的条形图,但当我仅调用以票价为y的列时,绘制失败。当我调用fare列的df.mean()时,条形图在相同的高度上绘制(fare的总平均值)

我想做的是得到酒吧的高度=该性别票价的平均值

import pandas as pd                                 # import pandas package (install via settings first)
from matplotlib import pyplot as plt                # import pyplot package (install via settings first)

# train_df pulls from a .CSV file

train_embarkS_survive = train_df.filter(['Sex', 'Embarked', 'Fare', 'Survived'])    
train_embarkS_survive = train_embarkS_survive.query('Embarked == "S" and Survived == 1')

plt.figure('Q13: ')
plt.bar(train_embarkS_survive['Sex'], train_embarkS_survive['Fare'].mean(axis=0)) 
plt.xlabel('Sex')                                                
plt.ylabel('Fare')                                               
plt.title('Embarked = S | Survived = 1')    
plt.show()  

使用“性别”列(具有男性、女性唯一值的分类变量)和“票价”列的平均值,过滤后的数据帧的plt.bar会生成一个具有相同条高的条形图(所有票价的平均值,而不仅仅是每个类别男性、女性的平均值)

enter image description here

实际上,女性的平均票价为44.60美元,男性为30.37美元。如何将这些计算出的平均值作为相应的条形高度

我尝试过使用groupby(),但plt.bar不接受

train_embarkS_survive.groupby(['Sex']).mean()

对于y轴参数


Tags: importdf高度绘制trainpltmean平均值
1条回答
网友
1楼 · 发布于 2024-10-01 13:39:39

通过使用groupby函数,您的方向是正确的。在绘制条形图之前,我会保存临时数据框。pyplot模块的函数bar取x轴和y轴的序列,您需要分别传递它们,也就是说,这里它们由索引('female''male')和票价平均值的聚合结果表示,该结果保存在'Fare'列中

df_mean=train_embarkS_survive.groupby(['Sex']).agg({'Fare':'mean'})
plt.bar(df_mean.index,df_mean['Fare'])
plt.show()

条形图显示了相应的男性和女性平均值。 Bar chart for fare mean by sex

相关问题 更多 >