Среднее сгруппированных данных - PullRequest
0 голосов
/ 07 мая 2018

У меня есть данные в рамках данных о зарплатах сотрудников. У каждого сотрудника также хранятся данные о его поле, дисциплине, годах, прошедших с момента получения степени доктора наук, и годах работы в текущем работодателе. Пример данных следующий:

    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 лет и т. Д. Я могу получить среднее значение для ряда работников с интервалами лет, работающих без разделения на полов, делая:

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

Что еще я могу сделать, чтобы добавить третью группу к этой переменной?

1 Ответ

0 голосов
/ 07 мая 2018

Вы можете сгруппировать несколько столбцов со списком в качестве первого аргумента, вместо одного:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...