我找到了这个关于新冠病毒疫苗接种的数据文件,我想看看(部分)人群的疫苗接种覆盖率。实际例子可能会更清楚,所以请耐心听我说
如果我使用df = pd.read_csv('https://epistat.sciensano.be/Data/COVID19BE_VACC.csv', parse_dates=['DATE'])
读取csv,我会得到以下结果:
DATE REGION AGEGROUP SEX BRAND DOSE COUNT
0 2020-12-28 Brussels 18-34 F Pfizer-BioNTech A 1
1 2020-12-28 Brussels 45-54 F Pfizer-BioNTech A 2
2 2020-12-28 Brussels 55-64 F Pfizer-BioNTech A 3
3 2020-12-28 Brussels 55-64 M Pfizer-BioNTech A 1
4 2020-12-28 Brussels 65-74 F Pfizer-BioNTech A 2
我对按地区划分的数字特别感兴趣;日期。
所以我用df.groupby(['REGION','DATE']).sum()
重新组合
COUNT
REGION DATE
Brussels 2020-12-28 56
2020-12-30 5
2021-01-05 725
2021-01-06 989
2021-01-07 994
... ...
Wallonia 2021-06-18 49567
2021-06-19 43577
2021-06-20 2730
2021-06-21 37193
2021-06-22 16938
为了比较不同地区的疫苗接种“速度”,我必须使用每个地区的人口将数据从绝对数转换为相对数
我发现一些帖子解释了如何在这样的多索引数据框中计算百分比,但问题是我想用原始数据框中没有的人口数除以每个计数
人口数字如下
REGION POP
Flanders 6629143
Wallonia 3645243
Brussels 1218255
我认为解决方案必须是通过原始df循环并检查两个区域或索引级别,但我完全不知道如何进行。这是一项我想掌握的技术,因为当我想要不同人群的其他子集(可能是年龄组或性别)时,它可能会派上用场
非常感谢您阅读到这里
免责声明:我刚刚开始使用Python,这是我关于堆栈溢出的第一个问题,所以请对我温和一些。。。我之所以发布这篇文章,是因为我在其他任何地方都找不到答案。这可能是因为我没有记下术语,也不知道该找什么^ ^ ^
您可以在
groupby
上运行reset_index()
,然后在执行计算的自定义函数上运行df.apply
:输出
df.head()
:一种选择是用^{} +^{} 重新格式化
population_df
:denom
:然后^{} 相对于
level=0
的groupby sum
的结果:new_df
:或作为新专栏:
new_df
:相关问题 更多 >
编程相关推荐