У меня есть следующий DataFrame нарушений парковки .:
Я могу агрегировать и просматривать счет Violation_mod
по season
и year
следующим образом:
tickets_by_season_year = parking_data['season'].groupby([parking_data['Issue_Date_Time'].dt.year.rename('year'), parking_data['season'].rename('season')])
tickets_by_season_year.agg({'count'}).unstack()
Нажав tickets_by_season_year.agg({'count'}).unstack().columns
, я получаю следующее:
MultiIndex(levels=[['count'], [1, 2, 3, 4]],
labels=[[0, 0, 0, 0], [0, 1, 2, 3]],
names=[None, 'season'])
Я хочу иметь возможность взять эту сводную таблицу и сделать ANOVA, чтобы увидеть, одинаковое ли среднее количество билетов в каждом сезоне.
Вот решение, которое у меня есть, и я чувствую, что оно очень громоздкое и есть более элегантное решение:
tickets_by_season= tickets_by_season_year.agg({'count'}).unstack().reset_index(drop=True).reindex()
Что приводит к следующему (я пропустил бит кода, где я сопоставил номер сезона с именем):
tickets_by_season['count'].columns
И мы можем видеть следующие столбцы:
Index(['Fall', 'Spring', 'Summer', 'Winter'], dtype='object', name='season')
Из которого я могу выполнять следующие задания:
Fall = tickets_by_season['count']['Fall']
Spring = tickets_by_season['count']['Spring']
Summer = tickets_by_season['count']['Summer']
Winter = tickets_by_season['count']['Winter']
И запустить ANOVA так:
stats.f_oneway(Fall.dropna(), Spring.dropna(), Summer.dropna(), Winter.dropna())
Это самое элегантное решение? Можно ли сделать это более аккуратно?
Заранее спасибо за любую помощь!