我在使用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会生成一个具有相同条高的条形图(所有票价的平均值,而不仅仅是每个类别男性、女性的平均值)
实际上,女性的平均票价为44.60美元,男性为30.37美元。如何将这些计算出的平均值作为相应的条形高度
我尝试过使用groupby(),但plt.bar不接受
train_embarkS_survive.groupby(['Sex']).mean()
对于y轴参数
通过使用groupby函数,您的方向是正确的。在绘制条形图之前,我会保存临时数据框。
pyplot
模块的函数bar
取x轴和y轴的序列,您需要分别传递它们,也就是说,这里它们由索引('female'
和'male'
)和票价平均值的聚合结果表示,该结果保存在'Fare'
列中条形图显示了相应的男性和女性平均值。
相关问题 更多 >
编程相关推荐