Группировка данных по месяцам
У меня есть массив данных: браузерные сессии разделенные по датам примерно так (в массиве данные за год):
| Браузер | Дата посещения |
|---|---|
| Firefox Mobile | 23.01.2020 |
| Opera | 13.01.2020 |
| Яндекс.Браузер | 14.01.2020 |
| Яндекс.Браузер | 31.01.2020 |
| Opera | 07.02.2020 |
Я уже третий день пытаюсь сгруппировать данные таким образом, чтобы у меня выводилось количество сессий на определенных браузерах за месяц. Я понял, что можно посчитать общее количество сессий за месяц, например так:
df.groupby(df['Дата посещения'].dt.strftime('%B'))['Браузер'].count()
что даст результат:
| Дата посещения | |
|---|---|
| February | 1 |
| January | 4 |
Но как при этом разбить эти значения по браузерам, внутри месяца и можно ли это сделать?
Ответы (2 шт):
Автор решения: strawdog
→ Ссылка
Можно сделать так:
res = df.groupby([pd.Grouper(key='date',freq='M'), "browser"])["date"].count()
res:
date browser
2020-01-31 Firefox Mobile 1
Opera 1
Яндекс.Браузер 2
2020-02-29 Opera 1
Автор решения: SergFSM
→ Ссылка
вместо count возьмите value_counts:
res = df.groupby(df['Дата посещения'].dt.strftime('%B'))['Браузер'].value_counts()
print(res)
'''
Дата посещения Браузер
January Яндекс.Браузер 2
Firefox Mobile 1
Opera 1
July Opera 1
Name: Браузер, dtype: int64