Выход по среднему за день (пн, вт и т. Д.) - PullRequest
0 голосов
/ 08 сентября 2018

В настоящее время у меня есть CSV-файл, содержащий тысячи строк. Каждая строка показывает дату и время, но не в порядке возрастания. Как подсчитать количество событий / происшествий по дням (понедельник, вторник, среда и т. Д.)? Кроме того, это должно быть среднее количество вхождений в день. Например, среднее число вхождений на каждый понедельник составляет 712, на каждый вторник - 853 и т. Д.

Пока мне удалось добавить столбец для соответствующего дня, используя строку

df['DAY'] = pd.to_datetime(df['DATE']).dt.day_name()

Первые 10 строк но я не знаю, как приступить к созданию вывода, содержащего среднее количество вхождений в день (понедельник, вторник и т. д.) с использованием Python.

Вывод должен показывать: [среднее по понедельникам среднее по вторникам по средам и т. д.]

1 Ответ

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

Чтобы вернуть названия дней DateTimeIndex с указанным языком с понедельника по воскресенье

df['DAY'] = pd.to_datetime(df['DATE']).dt.day_name()

Затем создайте столбец для обозначения случаев вхождения, если у вас еще нет столбца для агрегирования:

#I'm assuming each day refers to a unique "instance" or occurrence 
#but this does not have to follow if you already have a column to count/aggregate
df['OCCURENCE'] = 1

Чтобы вернуть среднее число вхождений за данный день, просто используйте выражение groupby и укажите группу, которую вы хотите усреднить:

group_df = df.groupby('DAY')['OCCURENCE'].mean()

Чтобы удовлетворить странное требование формата иметь все в списке

output_list = []
for day in group_df.index:
    avg = group_df.loc[day][0]
    str_format = 'average for {d}:{v}'.foramt(d=day, v=avg) 
    output_list.append(str_format)

new_list = ' '.join(output_list)
...