我正在使用欧洲疾病预防控制中心的Covid19数据集。我已经旋转了数据帧,但是看起来这些值是聚合的

2024-05-19 14:32:34 发布

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

我正在使用新冠病毒-19数据集,并使用了以下pivot函数:

url = 'https://opendata.ecdc.europa.eu/covid19/casedistribution/csv'
data = pd.read_csv(url,parse_dates=['dateRep'],index_col=['dateRep'])
data.head()

data.index.name = "date"
data = data.drop(['day', 'month', 'year','geoId','countryterritoryCode','continentExp'], axis = 1)
data = data.rename(columns={'countriesAndTerritories': 'country', 'popData2019':'population', 'continentExp' : 'continent' })

df_pivot = data.pivot(index = 'date', columns = 'country', values = 'cases').fillna(0)
df_pivot`

当我查看2020-01-04的美国案例时,数据透视框中的数字是“24998.0”,这是不正确的(应该是0)。谢谢你的建议


Tags: columnscsv数据函数urldfdatadate
1条回答
网友
1楼 · 发布于 2024-05-19 14:32:34

pivot无法聚合,它只会重塑

问题在于pandas自动解析索引,并将其与月份和日期混淆(因此将4月1日解析为1月4日)。最简单的方法是在读取数据后用一种格式手动解析数据

import pandas as pd
df = pd.read_csv('https://opendata.ecdc.europa.eu/covid19/casedistribution/csv')

df['dateRep'] = pd.to_datetime(df['dateRep'], format='%d/%m/%Y')
df = df.set_index('dateRep')

现在我们可以看到一切都会好起来:

df[df['countriesAndTerritories'] == 'United_States_of_America'].sort_index().plot(y='cases')

enter image description here


我们可以检查您的方法的解析是否变得混乱。自动解析将4月1日和1月4日混在一起

df[(df.index == '2020-04-01') & df['countriesAndTerritories'].eq('United_States_of_America')].cases
#dateRep
#2020-04-01    24998     # <  That's your number for Jan 4th.
#Name: cases, dtype: int64

相关问题 更多 >