我想計算 rate_death 百分比如下 - (new_deaths / population) * 100 按位置分組并匯總 new_deaths 后。
示例:對于阿富汗,rate_death 必須計算為 ((1 4 10) / 38928341) * 100 而對于阿爾巴尼亞,它必須計算為 ((0 0 1) / 2877800) * 100
以下是我嘗試但不起作用的資料和方法 -
df_data
地點 日期 new_cases new_deaths 人口 0 阿富汗 2020 年 4 月 25 日 70 1 38928341 1 阿富汗 2020 年 4 月 26 日 112 4 38928341 2 阿富汗 2020 年 4 月 27 日 68 10 38928341 3 阿爾巴尼亞 2020 年 4 月 25 日 15 0 2877800 4 阿爾巴尼亞 2020 年 4 月 26 日 34 0 2877800 5 阿爾巴尼亞 2020 年 4 月 27 日 14 1 2877800
資料列(共5列): # 列非空計數 Dtype --- ------ -------------- ----- 0 位置 6 非空物件 1 個日期 6 個非空物件 2 new_cases 6 非空 int64 3 new_deaths 6 個非空 int64 4 人口 6 非空 int64
方法一:
df_res = df_data[['location','new_deaths','population']].groupby(['location']).sum()
位置 new_deaths 人口 阿富汗 15 116785023 阿爾巴尼亞 1 8633400
df_res['rate_death'] = (df_res['new_deaths'] / df_res['population'] * 100.0)
位置 new_deaths 人口 rate_death 阿富汗 15 116785023 0.000 阿爾巴尼亞 1 8633400 0.000
我知道由于上述 groupby 的“sum”操作,人口總計兩次,但我仍然想知道為什么 rate_death 沒有按預期計算百分比,而是顯示為 0.000
方法 2:(如本文所述嘗試過 -使用 groupby 的 Pandas 占總數的百分比)
location_population = df_data.groupby(['location', 'population']).agg({'new_deaths': 'sum'})
location = df_data.groupby(['location']).agg({'population': 'mean'})
location_population.div(location, level='location') * 100
地點人口新死亡人口
阿富汗 38928341 NaN NaN
阿爾巴尼亞 2877800 NaN NaN
但它以 NaN 的形式出現。
如果這些方法有任何問題或如何解決,請提供幫助。謝謝!
uj5u.com熱心網友回復:
你可以做 -
df = df.groupby(['location']).agg({'new_deaths': sum, 'population': max})
df['rate_death'] = df['new_deaths'] / df['population'] * 100
結果
new_deaths population rate_death
location
Afghanistan 15 38928341 0.000039
Albania 1 2877800 0.000035
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/409865.html
標籤:
上一篇:使用BeautifulSoup來利用URL及其依賴頁面并將結果存盤在csv中?
下一篇:使用資料和浮點資料型別創建列
