前回はデータセットConfirmedとPCR_TESTをマージしてデータセットc19j2_day1、セータセットDeathsとRecoveredをマージしてデータセットc19j2_totalを作成するところまでを行いました。
今回は通期累計数字になっているデータセットc19j2_totalを日別数字に変換し、そのデータとデータセットをc19j2_day1を結合してデータセットc19j2_dayを完成させたいと思います。
まずは以下コードを実行してデータセットc19j2_totalを日別数字に変換しデータセット19j2_day2を作成します。
#各カラムの日付数字への変換
def oneday(St):
#各列の数字を格納
St_d = []
for i_cd in c19j2_total[St] :
St_d.append(i_cd)
St_ED = []
#当日数字から前日数字を引いて日別数字を算出
for i in range(len(St_d)) :
if i +1 < len(St_d):
W = St_d[i] - St_d[i +1]
St_ED.append(W)
elif i == len(St_d)-1 :
W2 = c19j2_total[St][len(c19j2_total[St])-1]
St_ED.append(W2)
else :
break
St_day= pd.DataFrame(St_ED)
Cn = [St]
St_day.columns = Cn
#print(St_ed_df.head())
St_day.to_csv(St+"_day.csv", encoding = "utf-8", index = None)
oneday("Recovered")
oneday("Deaths")
問題なく変換が終わりました、変換の確認は最後にすることにして今は先に進めたいと思います。
次はデータの結合ですが、先に日付データだけのデータセットを作成します。
データセットc19j2_totalから列Deathsと列Recoveredを削除し、データセットc19j2_day2を作成します。
#日付のみのデータセットを作成
c19j2_day2 = c19j2_total.copy()
#不要列の削除
del c19j2_day2["Recovered"]
del c19j2_day2["Deaths"]
c19j2_day2 .head()
さらにデータセットc19j2_day2にRecovered_dayとDeaths_dayを結合します。
#データの結合(日付・Recovered_day・Deaths_day)
c19j2_day2 = pd.concat([c19j2_day2 , Recovered_day , Deaths_day], axis=1)
c19j2_day2.head()
c19j2_day2.tail()
これでデータセットc19j2_day2が完成しました。
問題がなければ、Deathsの合計が988,Recoveredの合計が20403になっているはずです。
結果は予定どおりの内容となっています。
さらにデータセットc19j2_day1とデータセットc19j2_day2を結合し、データセットc19j2_dayを作成します。
#最終結合・データの完成
c19j2_day = pd.merge(c19j2_day1 , c19j2_day2, left_on=["Date"] , right_on=["Date"], how ="left")
c19j2_day["Deaths"] = c19j2_day["Deaths"].fillna(0).astype(np.int64)
c19j2_day["Recovered"] = c19j2_day["Recovered"].fillna(0).astype(np.int64)
c19j2_day.head()
最後にカラムを並び替えて完成となります。
#カラムの並び替え
c19j2_day = c19j2_day[["Date" , "Confirmed" , "Deaths" , "Recovered" , "PCR_TEST"]]
c19j2_day.head()
最後に欠損値の有無を確認しておきます。
いずれも0で欠損値のないことが確認されました。
これでプログラムc19j2_df_ver2.0の完成となります。
次回はこのデータセットを使って視覚化を行いたいと思います。