python - 分组数据的平均值

标签 python pandas numpy

我的数据框中有有关员工工资的数据。每个员工还存储了有关其性别、纪律、获得博士学位后的年限以及在当前雇主工作年限的数据。数据示例如下。

    rank    dsc phd srv sex     salary
1   Prof    B   19  18  Male    139750
2   Prof    B   20  16  Male    173200
3   Asst    B   4   3   Male    79750
4   Prof    B   45  39  Male    115000
5   Prof    B   40  41  Male    141500
6   Assoc   B   6   6   Male    97000
7   Prof    B   30  23  Male    175000
8   Prof    B   45  45  Male    147765
9   Prof    B   21  20  Male    119250
10  Prof    B   18  18  Female  129000

我想要访问的是按性别和服务十年范围分组的所有员工的平均工资。例如;工龄 0-10 年的男性、工龄 0-10 年的女性、工龄 11-20 年的男性等。我可以得到一系列工作年限范围内的 worker 的平均值,而无需按通过做的事情来性别:

 serviceSalary = data.groupby(pd.cut(data['yrs.service'], np.arange(0, 70, 
 10)))['salary'].mean()

我还可以做什么来向该变量添加第三个分组?

最佳答案

您可以使用列表作为第一个参数对多个列进行分组,而不是仅一个:

In [11]: df.groupby(pd.cut(df['srv'], np.arange(0, 70, 10)))['salary'].mean()
Out[11]:
srv
(0, 10]      88375.0
(10, 20]    140300.0
(20, 30]    175000.0
(30, 40]    115000.0
(40, 50]    144632.5
(50, 60]         NaN
Name: salary, dtype: float64

也可以传递'sex':

In [12]: df.groupby([pd.cut(df['srv'], np.arange(0, 70, 10)), 'sex'])['salary'].mean()
Out[12]:
srv       sex
(0, 10]   Male       88375.000000
(10, 20]  Female    129000.000000
          Male      144066.666667
(20, 30]  Male      175000.000000
(30, 40]  Male      115000.000000
(40, 50]  Male      144632.500000
Name: salary, dtype: float64

关于python - 分组数据的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50205096/

相关文章:

optimization - 对大数据集进行曲线拟合

python - 与另一个列表进行比较,确定列表中所有元素的索引

python - Plotly:如何设置线条颜色?

Python CURL 指定ip地址

javascript - 使用 Django 进行视频聊天?或其他Python框架?

python - 按周将时间序列数据叠加在同一图上 - 修复我的多重索引?

python - 将 numpy 数组中的连续值及其长度分组

python - 如何在现有数据框中创建具有独立行值的列

python - 连接 Pandas DataFrame 不符合预期

python - 将一列列表拆分为不同的列时出错