Нахождение среднего числа людей по часовым интервалам, панда / нампи - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть CSV-файл под названием "Work.csv".Время, когда человек регистрируется на работу в октябре (есть много записей).

MONTH   YEAR    DATE      TIME
Oct    2011  20/10/2011  22:04:52
Oct    2011  26/10/2011  11:15:16
Oct    2011  11/10/2011  10:52:52
Oct    2011  11/10/2011  16:40:06

Я хочу найти среднее количество людей, которые регистрируются на работу в каждом часовом интервале.например.Среднее число людей, которые регистрируются с 12:00 до 1:00, с 1:00 до 2:00 ... и т. Д.

Я попробовал свой собственный код, используя dt.hour, и мне удалось получить только частоту для общего числа.людей в определенный час.

Кажется, я не могу получить среднее.

Мой желаемый вывод:

Hour        Average Number of People
0                    40
1                    50
2                    65
3                    30
4                    30

Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Во-первых, вы должны преобразовать столбец TIME в DateTime.Затем сгруппируйте по времени и дате, чтобы узнать, сколько человек работало на каждую дату в каждый час.Наконец, снова сгруппируйте по часам и получите среднее значение:

df.groupby([pd.to_datetime(df.TIME).dt.hour, df.DATE]).size()\ # raw counts
  .groupby('TIME').mean() # mean counts
#TIME
#10    1
#11    1
#16    1
#22    1

Более компактный (и, возможно, менее эффективный) вариант благодаря @Wen (который всегда полезен):

df.groupby([pd.to_datetime(df.TIME).dt.hour, df.DATE]).size()\
  .mean(level='TIME') 
0 голосов
/ 16 сентября 2018

Сначала вам нужно посчитать все регистрации и сохранить их в df, затем использовать функцию mean () для интервала в 1 час, и это должно сделать это.Примерно так:

  df_registered['count'] = df_input['month'].resample("1h").count()
  df_registered['avg'] = df_registered['count'].resample("1h").mean()

Для повторной выборки для работы сначала нужно выбрать индекс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...