2024-05-29 03:00:41 发布
网友
我正在使用约翰·霍普金斯的新冠病毒数据来制作图表。数据显示了各个国家的累计死亡人数,我想要每天的死亡人数。在我看来,最简单的方法是创建两个数据帧,然后从另一个数据帧中减去一个数据帧。但是文件的列名是日期,代码是df3=df2-df1,用匹配的日期减去列。所以我想用一些简单的索引重命名所有列,例如,1,2,3
我不知道怎么做
您可以重新设置数据的形状:使用日期和行标签,并使用国家、省作为列标签
import pandas as pd covid_csv = 'https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv' df_raw = (pd.read_csv(covid_csv) .set_index(['Country/Region', 'Province/State']) .drop(columns=['Lat', 'Long']) .transpose()) df_raw.index = pd.to_datetime(df_raw.index) print( df_raw.iloc[-5:, 0:5] ) Country/Region Afghanistan Albania Algeria Andorra Angola Province/State NaN NaN NaN NaN NaN 2020-07-27 1269 144 1163 52 41 2020-07-28 1270 148 1174 52 47 2020-07-29 1271 150 1186 52 48 2020-07-30 1271 154 1200 52 51 2020-07-31 1272 157 1210 52 52
现在,您可以使用丰富的pandas工具集进行时间序列分析。例如,使用diff()将累计死亡数转换为每日死亡率。或者,你可以计算N天移动平均数,创建时间序列图
diff()
print(df_raw.diff().iloc[-5:, 0:5]) Country/Region Afghanistan Albania Algeria Andorra Angola Province/State NaN NaN NaN NaN NaN 2020-07-27 10.0 6.0 8.0 0.0 1.0 2020-07-28 1.0 4.0 11.0 0.0 6.0 2020-07-29 1.0 2.0 12.0 0.0 1.0 2020-07-30 0.0 4.0 14.0 0.0 3.0 2020-07-31 1.0 3.0 10.0 0.0 1.0
最后,df_raw.sum(level='Country/Region', axis=1)将一个国家内的所有省份汇总
df_raw.sum(level='Country/Region', axis=1)
new_names=list(range(data.shape[1])) data.columns=new_names
这将从0向上重命名数据列
谢谢你的时间和努力,但我想出了一个简单的方法
对于i,枚举中的行(df): rename(columns={row:str(i)},inplace=True)
更改列名称,然后
对于i,枚举中的行(df): rename(columns={row:str(i+43853)},inplace=True)
把它们改回我想要的日期
您可以重新设置数据的形状:使用日期和行标签,并使用国家、省作为列标签
现在,您可以使用丰富的pandas工具集进行时间序列分析。例如,使用
diff()
将累计死亡数转换为每日死亡率。或者,你可以计算N天移动平均数,创建时间序列图最后,
df_raw.sum(level='Country/Region', axis=1)
将一个国家内的所有省份汇总这将从0向上重命名数据列
谢谢你的时间和努力,但我想出了一个简单的方法
对于i,枚举中的行(df): rename(columns={row:str(i)},inplace=True)
更改列名称,然后
对于i,枚举中的行(df): rename(columns={row:str(i+43853)},inplace=True)
把它们改回我想要的日期
相关问题 更多 >
编程相关推荐