Я пытаюсь рассчитать процентное изменение для определенных c подмножеств фрейма данных на основе номера их недели. Фрейм данных выглядит следующим образом:
ref_dt week_name county_name state_name county_fips_code cmi
0 2020-01-01 2020-W01 Broward Florida 12011 3.651278
1 2020-01-02 2020-W01. Broward Florida 12011 3.851842
2 2020-01-03 2020-W01. Broward Florida 12011 3.868523
3 2020-01-04 2020-W01. Broward Florida 12011 3.748446
4 2020-01-05 2020-W01. Broward Florida 12011 3.650769
5 2020-01-06 2020-W02. Broward Florida 12011 3.878860
6 2020-01-07 2020-W02. Broward Florida 12011 3.899171
7 2020-01-08 2020-W02. Broward Florida 12011 3.907816
8 2020-01-09 2020-W02. Broward Florida 12011 3.913623
9 2020-01-10 2020-W02. Broward Florida 12011 3.919010
Он содержит информацию для каждого округа (здесь показаны только подмножества с примером Броварда) в штате Флорида и индекс мобильности, рассчитанный в столбце cmi. Процентное изменение рассчитывается путем сравнения движения за день недели (ref_dt) со средним значением за те же дни недели. Вот пример для week1 и Broward после поднабора, который я сделал в pandas.
df = counties[counties['county_name']=='Broward']
week1 = df[df['week_name'] == '2020-W01']
cmi_mean = week1['cmi'].mean()
week1['percent_change'] = week1['cmi']/cmi_mean * 100
Окончательный вывод CSV будет выглядеть примерно так (я отбросил код состояния и county_fips_code):
ref_dt week_name county_name cmi percent_change
0 2020-01-01 2020-W01 Broward 3.651278 97.259216
1 2020-01-02 2020-W01 Broward 3.851842 102.601642
2 2020-01-03 2020-W01 Broward 3.868523 103.045989
3 2020-01-04 2020-W01 Broward 3.748446 99.847497
4 2020-01-05 2020-W01 Broward 3.650769 97.245656
Я хочу применять один и тот же лог c для каждой недели (от 1 до 14), для каждого округа. Каков был бы лучший способ сделать это? мне нужно изменить форму моего фрейма данных, используя сводную или стековую структуру и сделать столбцы для каждой недели, основываясь на их имени_недели, или я могу рассчитать процентное изменение с текущей структурой моего фрейма данных?
Примечание: каждое среднее значение должно быть рассчитано для каждой недели.