我正在编写自己的代码来分析/可视化来自欧洲疾病预防控制中心的新冠病毒-19数据。 https://opendata.ecdc.europa.eu/covid19/casedistribution/csv'
我有一个简单的代码来提取数据并绘制累积死亡与时间的关系图,我正在尝试添加功能
我的目标类似于所附的图表,所有国家的时间都会在第五次死亡时进行匹配。我想编写一个通用代码,在第n次死亡时将国家进行匹配。 https://ourworldindata.org/grapher/covid-confirmed-deaths-since-5th-death
目前我尝试这样做的方式是有一个“如果组是‘国家’转移…”术语的迷宫
在哪里。。。是查找特定“国家”发生“n”起死亡事件的日期,并在适当情况下插入小数日期的查找
也就是说,目前的死亡分配为00:00天/月,但数据每天可以移动2/3,如下所示
日期时间累计死亡人数
00:00 15/02 80
00:00 16/02 110
我的“…”应该是16:00 15/02
我现在正在做这件事,但感觉不是很有效,我相信一定有一个更简单的方法,我没有看到
基本上,尽管有大量的谷歌搜索,我似乎找不到一种简单的方法来自动移动一组时间序列以匹配特定的y值,这感觉它应该有一些内置的功能,即使用插值进行查找
####Live url (I've downloaded my own csv and been calling that for code development)
url = 'https://opendata.ecdc.europa.eu/covid19/casedistribution/csv'
dataraw = pd.read_csv(url)
#extract relevanty colums
data = dataraw.loc[:,["dateRep","countriesAndTerritories","deaths"]]
####convert date format
data['dateRep'] = pd.to_datetime(data['dateRep'],dayfirst=True)
####sort by date
data = data.sort_values(["dateRep"],ascending=True)
data['cumdeaths'] = data.groupby(['countriesAndTerritories']).cumsum()
##### limit to countries with cumulative deaths > 500
data = data.groupby('countriesAndTerritories').filter(lambda x:x['cumdeaths'].max() >500)
###### remove China from data for now as it doesn't match so well with dates
data = data.groupby('countriesAndTerritories').filter(lambda x:(x['countriesAndTerritories'] != "China").any())
##### only recent dates
data = data[data['dateRep'] > '2020-03-01']
print(data)
您可以使用
groupby('country')
和pd.transform函数添加一列,该列将在每一行中设置其国家第n次死亡的日期然后,您可以对日期列和新列进行矢量减法,以获得天数
相关问题 更多 >
编程相关推荐