首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找出每个人的平均值

找出每个人的平均值
EN

Stack Overflow用户
提问于 2021-12-21 22:03:51
回答 3查看 33关注 0票数 0

我有一个像这样的数据文件:

代码语言:javascript
复制
id    name         industry               income
1     apple       telecommunication         100     
2     oil           gas                     100
3    samsung      telecommunication         200
4   coinbase       crypto                   100
5   microsoft    telecommunication          30

所以我想做的是找出每个行业的平均收入。它将是:电信110,gas 100,密码100。

我所做的就是找出每个行业的频率:

代码语言:javascript
复制
df.groupby(['industry']).sum().value_counts('industry')

其结果是:

代码语言:javascript
复制
industry
telecommunication       3
gas                     1
crypto                  1

我还发现了每个行业的收入之和:

代码语言:javascript
复制
df.groupby(['industry']).sum()['income']

这会导致

代码语言:javascript
复制
industry
telecommunication       330
gas                     100
crypto                  100

现在我有点纠结于如何继续..。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-12-21 22:05:31

你在找mean

代码语言:javascript
复制
means = df.groupby('industry')['income'].mean()

输出:

代码语言:javascript
复制
>>> means
industry
crypto               100.0
gas                  100.0
telecommunication    110.0
Name: income, dtype: float64

>>> means['telecommunication']
110.0
票数 1
EN

Stack Overflow用户

发布于 2021-12-21 22:25:57

如果你想保留所有其他细节,群并转换

代码语言:javascript
复制
df['mean']=df.groupby('industry')['income'].transform('mean')



  id       name           industry  income   mean
0   1      apple  telecommunication     100  110.0
1   2        oil                gas     100  100.0
2   3    samsung  telecommunication     200  110.0
3   4   coinbase             crypto     100  100.0
4   5  microsoft  telecommunication      30  110.0

如果你需要一个概括的框架

代码语言:javascript
复制
df.groupby('industry')['income'].mean().to_frame('mean_income')

   

                     mean_income
industry                      
crypto                   100.0
gas                      100.0
telecommunication        110.0
票数 0
EN

Stack Overflow用户

发布于 2021-12-21 23:44:09

也许您应该使用agg来避免多个操作:

代码语言:javascript
复制
out = df.groupby('industry', sort=False).agg(size=('income', 'size'), 
                                             mean=('income', 'mean'), 
                                             sum=('income', 'sum')).reset_index()
print(out)

# Output:
            industry  size   mean  sum
0  telecommunication     3  110.0  330
1                gas     1  100.0  100
2             crypto     1  100.0  100
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70442065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档