Как преобразовать в бин отфильтрованные данные панд? - PullRequest
0 голосов
/ 02 декабря 2018

Все,

Заголовок моего набора данных выглядит следующим образом. Я отфильтровал столбцы «Возраст» и «Время отсутствия на работе в часах» и рассчитал среднее значение часов.Теперь я хотел бы, чтобы бен на основе столбца возраста.Как я могу это сделать?Я бы хотел, чтобы в возрасте Возраст 31-33, Возраст 34-36, Возраст 37-39

{'Age': {0: 33, 2: 38, 3: 39, 4: 33, 5: 38}, 'BMI': {0: 30, 2: 31, 3: 24, 4: 30, 5: 31}, 'Social_drinker': {0: 1, 2: 1, 3: 1, 4: 1, 5: 1}, 'Social_smoker': {0: 0, 2: 0, 3: 1, 4: 0, 5: 0}, 'Son': {0: 2, 2: 0, 3: 2, 4: 2, 5: 0}, 'Day_of_the_week': {0: 3, 2: 4, 3: 5, 4: 5, 5: 6}, 'Month_of_absence': {0: 7, 2: 7, 3: 7, 4: 7, 5: 7}, 'Seasons': {0: 1, 2: 1, 3: 1, 4: 1, 5: 1}, 'Service_time': {0: 13, 2: 18, 3: 14, 4: 13, 5: 18}, 'Absenteeism_time_in_hours': {0: 4, 2: 2, 3: 4, 4: 2, 5: 2}}

Мой код для фильтрации:

filter= df.filter(['Age','Absenteeism_time_in_hours'], axis=1) 
group=filter.groupby('Age').mean()[['Absenteeism_time_in_hours']] 

IЯ новичок в Python, если вы можете дать объяснение, которое будет здорово!

1 Ответ

0 голосов
/ 02 декабря 2018

Вы ищете функцию cut.Он может быть использован для ваших данных следующим образом:

group.groupby(pd.cut(group.index, [31, 33, 36, 39])).mean().fillna(0)

Что приводит к

          Absenteeism_time_in_hours
(31, 33]                          3
(33, 36]                          0
(36, 39]                          3

Как вы видите, вы указываете края бункеров, а остальное он обрабатывает для вас.

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

Обратите внимание на разницу в последней возрастной группе, когда вы делаете

(df.groupby(pd.cut(df.Age, [31, 33, 36, 39]))
 .Absenteeism_time_in_hours.mean().fillna(0))

Результат:

Age
(31, 33]    3.000000
(33, 36]    0.000000
(36, 39]    2.666667
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...