주 번호를 기반으로 데이터 프레임의 특정 하위 집합에 대한 백분율 변화를 계산하려고합니다. 데이터 프레임은 다음과 같습니다.
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
여기에는 플로리다주의 모든 카운티에 대한 정보 (여기서는 Broward가 포함 된 하위 집합 만 표시됨)와 cmi 열에서 계산 된 이동성 인덱스가 있습니다. 변동률은 요일 (ref_dt)의 이동을 같은 요일의 평균과 비교하여 계산됩니다. 다음은 pandas에서 하위 선택 후 1 주차와 Broward의 예입니다.
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의 최종 출력은 다음과 같습니다 (state와 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
매주 (1-14) 모든 카운티에 동일한 논리를 적용하고 싶습니다. 이를 수행하는 가장 좋은 방법은 무엇입니까? 피벗 또는 스택을 사용하여 데이터 프레임의 모양을 변경하고 week_name을 기준으로 매주 열을 만들어야합니까? 아니면 현재 데이터 프레임의 구조로 퍼센트 변화를 계산할 수 있습니까?
참고 : 각 평균은 매주 계산되어야합니다.
df.groupby
with를 사용 transform
하고 pandas가 인덱스를 사용하여 계산 정렬을 처리하도록합니다.
df['percent_change'] = df['cmi'] / df.groupby(['county_name', 'week_name'])['cmi'].transform('mean') * 100
산출:
ref_dt week_name county_name state_name county_fips_code cmi percent_change
0 2020-01-01 2020-W01. Broward Florida 12011 3.651278 97.259220
1 2020-01-02 2020-W01. Broward Florida 12011 3.851842 102.601650
2 2020-01-03 2020-W01. Broward Florida 12011 3.868523 103.045982
3 2020-01-04 2020-W01. Broward Florida 12011 3.748446 99.847487
4 2020-01-05 2020-W01. Broward Florida 12011 3.650769 97.245661
5 2020-01-06 2020-W02. Broward Florida 12011 3.878860 99.363782
6 2020-01-07 2020-W02. Broward Florida 12011 3.899171 99.884084
7 2020-01-08 2020-W02. Broward Florida 12011 3.907816 100.105541
8 2020-01-09 2020-W02. Broward Florida 12011 3.913623 100.254297
9 2020-01-10 2020-W02. Broward Florida 12011 3.919010 100.392295
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다