python - Python:移动时间序列,使它们都匹配给定的 y 值
问题描述
我正在编写自己的代码来分析/可视化来自欧洲 CDC 的 COVID-19 数据。 https://opendata.ecdc.europa.eu/covid19/casedistribution/csv '
我有一个简单的代码来提取数据并绘制累积死亡随时间变化的图,并且正在尝试添加功能。
我的目标类似于附图,所有国家/地区的时间都转移到匹配(在这种情况下是第 5 次死亡)我想制作一个通用的代码来转移国家/地区以匹配第 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)
解决方案
您可以使用pd.transformgroupby('country')
函数来添加一列,该列将设置每一行的日期为该国第 n 次死亡的日期。
然后您可以对日期列和新列进行矢量化减法以获得天数。
推荐阅读
- spring-boot - MockMvc 在一个简单的 Spring Boot / Thymeleaf 集成测试上抛出一个断言
- c# - 将复杂的 JSON 反序列化为对象 - 出现错误无法反序列化当前的 JSON 数组(例如 [1,2,3])
- asp.net - 如何清除 Web 表单中的所有文本框?(当前上下文中不存在名称“form1”)
- arduino - ESP32 闪烁上传开始并因超时而失败
- php - 在远程套接字服务器中作为客户端连接
- ios - 如何修复 Xcode 中的错误 React Native 'UMCore' 构建错误
- java - 对话框片段和检测对其窗口外部的触摸
- android - 用户位置不打印纬度/经度
- python - 如何通过 ForeignKey 显示模型中的对象
- python-3.x - 我如何将一组数字/数组作为用户的输入