在打印时如何计算动态百分比?

2024-09-26 22:10:07 发布

您现在位置:Python中文网/ 问答频道 /正文

看一些新冠病毒-19的数据,我想以百分比的形式描绘每个国家的死亡人数

目前,我可以按国家分组,将总死亡人数汇总如下:

ecdc.groupby("countriesAndTerritories")["deaths"].sum().sort_values(ascending = False).head(10).plot(kind = "bar")

这将生成以下绘图:

enter image description here

这几乎是我想要的,但我不知道如何从这里开始/如果我的想法是可能的。我想使用的另一个字段是popData2018,因此:deaths/popData2018给我每个国家的死亡百分比

目前,美国的总死亡人数超过65000人,居首位,但他们并不是人口死亡比例最高的国家(比利时居首位),我希望我的图表能够反映这一点

我怎样才能做到这一点

如果您希望复制我的作品:

import pandas as pd

ecdc = pd.read_csv("https://opendata.ecdc.europa.eu/covid19/casedistribution/csv")

Tags: csv数据国家形式pd汇总百分比病毒
1条回答
网友
1楼 · 发布于 2024-09-26 22:10:07

您可以使用以下选项:

(ecdc.groupby('countriesAndTerritories').agg(
    total_deaths=('deaths', 'sum'),
    population=('popData2018', 'first')
).assign(perc=lambda x: x['total_deaths'] / x['population'])
 .nlargest(10, 'perc')
 .plot(kind='bar', y='perc')
)

或者对于pandas < 0.25.0,我们不能使用^{}

(ecdc.groupby('countriesAndTerritories').agg(
    {'deaths':'sum',
     'popData2018':'first'}
).assign(perc=lambda x: x['deaths'] / x['popData2018'])
 .nlargest(10, 'perc')
 .plot(kind='bar', y='perc')
)

它获取sum死亡人数和popdata,然后创建perc列并绘制前10个最高百分比的死亡人数


或多个故障,且不在同一行中:

grps = ecdc.groupby('countriesAndTerritories').agg(
    total_deaths=('deaths', 'sum'),
    population=('popData2018', 'first')
).reset_index()

grps['perc'] = grps['total_deaths'] / grps['population']
grps.nlargest(10, 'perc').plot(kind='bar', x='countriesAndTerritories', y='perc')

相关问题 更多 >

    热门问题