当前位置: 首页 > 知识库问答 >
问题:

在pandas中绘制求和和和平均值时出错

闻人树
2023-03-14
total_income_language = pd.DataFrame(df.groupby('language')['gross'].sum())   
average_income_language = pd.DataFrame(df.groupby('language')['gross'].mean()) 



plt.bar(total_income_language.index, total_income_language["gross"],  
                 label="Total Income of Language")
plt.bar(average_income_language.index, average_income_language["gross"], 
                 label="Average Income of Language")

plt.xlabel("Language")

plt.ylabel("Log Dollar Values(Gross)")

我想画出每种语言的总和和平均数。我不确定我的代码是否符合我的要求。我在画这张图时出错了。我不知道我在哪里把编码搞砸了。我需要一些帮助。

这是错误消息

共有2个答案

呼延才俊
2023-03-14

而不是:

df.groupby('language')['gross'].sum()

试试这个:

df.groupby('language').sum()

mean()类似。这将使您的代码更接近于运行。

调用数据帧的groupby()方法会生成一个groupby对象,然后需要在该对象上调用聚合函数,如summeanagggroupby文档非常棒:https://pandas.pydata.org/pandas-docs/stable/groupby.html

此外,您还可以通过两行代码实现所需的输出:

df.groupby('language').sum().plot(kind='bar')
df.groupby('language').mean().plot(kind='bar')
党航
2023-03-14

您可以使用通过agg聚合的Groupby,通过dics重命名列,并通过DataFrame.plot.bar绘制。

最后一组标签由ax设置。设置

df = pd.DataFrame({'language':['en','de','en','de','sk','sk'],
                   'gross':[10,20,30,40,50,60]})

print (df)
   gross language
0     10       en
1     20       de
2     30       en
3     40       de
4     50       sk
5     60       sk

d = {'mean':'Average Income of Language','sum':'Total Income of Language'}
df1 = df.groupby('language')['gross'].agg(['sum','mean']).rename(columns=d)
print (df1)
          Total Income of Language  Average Income of Language
language                                                      
de                              60                          30
en                              40                          20
sk                             110                          55

ax = df1.plot.bar()
ax.set(xlabel='Language', ylabel='Log Dollar Values(Gross)')

如果要旋转轴x的标签:

ax = df1.plot.bar(rot=0)
ax.set(xlabel='Language', ylabel='Log Dollar Values(Gross)')
 类似资料:
  • Flink(批处理/流式处理)中是否有方法同时计算字段的平均值和总和?使用聚合方法,我可以计算groupBy结果中字段的和,但如何同时计算平均值呢?下面的示例代码。

  • 我是新来的。任何帮助都将不胜感激 这是我的原始数据: 我想得到的是: 1创建一个新的列调用平均值,以计算每个提要的平均市值。 2求加权平均数。 这是我当前的代码,我得到NaN: 对于加权平均代码: 我得到了一个错误: AttributeError:“Series”对象没有属性“value”

  • 我尝试使用ireport对BigDecimal值进行sum和avg算术运算。我做的时候总会有误差。 所有类型都在 ireport 中定义为 BigDecimal 。 -分离,此示例中的变量工作正常,但我不能对变量进行算术运算。 总和与平均值如何键入BigDecimal? 在我的示例中,这不是工作: 我尝试在ireport中使用Java sintax,但是不起作用。 我使用的是3.0.0版iRepo

  • 问题内容: 作为输入,我有一个带时间的CSV文件,每次都有一串数字。 我想输出按小时平均和总和分组的每小时表格: 到目前为止,我一直在看用字典来完成它,其中小时是一个关键,值是一个计数和总和的列表,然后将总和除以计数就可以得到平均值。我敢肯定,必须有一种更清洁的方法来做到这一点。也许有些图书馆可以使用它。有什么建议? 问题答案: 一个熊猫的解决方案: 印刷品: 另存为csv文件: 这是以下内容:

  • 是否可以对流进行求和、平均并将其转换为新对象。我有个目标 现在我想得到这个对象列表的平均值和总和(代码总和价格和代码平均价格) 然后我想创建一个新对象(页脚 这就是我现在所拥有的,它可以工作,但是我要通过两次流。我想要一个方法,我可以通过一次流来做到这一点。 有没有更好的方法做到这一点而不必重复这一点。谢谢

  • 有没有办法从标准差和平均值生成钟形曲线?我读过关于这一点的参考文献,但找不到算法。 我有一个数字列表,它们是预先标准化的查找(得分=>百分位数)。我已经排列好了,我需要画一条钟形曲线,这样我就可以给曲线下的区域部分着色,以表示图表上的分数(我想是一个面积图/infrographic esk)。我真的卡在了第一道坎上。 我计划通过按以下方式对数据进行范围调整来绘制历史图: 谢谢你的帮助!