今回から世界版のデータの前処理を始めたいと思います。
使用するのはジョンズ・ホプキンズ大学が以下URLでGitHubにて公開している以下のデータです。
https://github.com/CSSEGISandData/COVID-19
こちらのデータは四月の時点で一度前処理に取り組んだことがあります。
その時使用したのはarchived_dataフォルダ内のarchived_daily_case_updates内あった2020/1/21から2020/2/14のデータです。
そのデータを以下、プログラムで処理してデータの作成を行いました。
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline
import datetime
#archived_daily_case_updatesフォルダ内の全csvファイルをパスに格納
import glob
p = "./COVID-19-master/archived_data/archived_daily_case_updates/"
csv_list = glob.glob(p + "*.csv")
#リスト数の確認
len(csv_list)
#リストに各csvファイルをデータフレーム化して格納
df_list = []
n=0
for i in csv_list:
df= pd.read_csv(i)
df_list.append(df)
n+=1
#csvファイルの結合
df = pd.concat(df_list , sort=False)
#不要行の削除
del df["Province/State"]
del df["Suspected"]
del df["ConfnSusp"]
del df["Notes"]
#欠損値を0で補間
df = df.fillna(0)
#バラバラの日付の表示を整形・統一
Last_Update = []
days_test_list = df["Last Update"]
for i in days_test_list:
# print(i)
z= i.split(" ")[0]
if len(z) == 9 :
m = z.split("/")[0]
d = z.split("/")[1]
y = z.split("/")[2]
day1 = y + "0" + m + d
print(day1)
Last_Update.append(day1)
elif len(z) == 10 :
day2 = z.replace("-","")
print(day2)
Last_Update.append(day2)
if len(z) == 7 :
m = z.split("/")[0]
d = z.split("/")[1]
y = z.split("/")[2]
day3 = y + "20" + "0"+ m + d
print(day3)
Last_Update.append(day3)
if len(z) == 6 :
m = z.split("/")[0]
d = z.split("/")[1]
y = z.split("/")[2]
day4 = y + "20" + "0" + m + "0" + d
print(day4)
Last_Update.append(day4)
if len(z) == 8 :
m = z.split("/")[0]
d = z.split("/")[1]
y = z.split("/")[2]
day5 = y + "0" + m+ "0" + d
print(day5)
Last_Update.append(day5)
print()
print(len(Last_Update))
#データフレームに上記で処理した新規日付列を追加
df["Date"] = Last_Update
df.head()
#不要になった日付の列を削除
del df["Last Update"]
#csvファイルに書き込み
df.to_csv("df_COVID19.csv", index= None, encoding="utf-8")
かいつまんで内容を説明すると、
①フォルダ内の全てのcsvファイルのパスを取得、リストに格納
②上記パスをfor文を回して全csvファイルをデータフレーム化しリストに格納
③上記データフレームを結合
④日付の表記がバラバラなので整形して統一
⑤完成データをcsvファイルに書き込み
といった流れです。
しかし、国によっては州や県ごとにバラバラになっていて、それを合計する処理がさらに必要です。
また、今回使用するcsse_covid_19_data内のcsse_covid_19_daily_reports内あった2020/1/22から2020/6/26のデータ(6/26取得)に適用すると、データの構成が変わってしまっており、このままでは使用できない状況となっています。
大幅なプログラムの訂正が必要となります。
その為、今の自分が早く確実に実行し、視覚化・分析できる別の方法も模索することにしました。
検討した結果、csse_covid_19_time_series内のデータを使った方が、日本版(1)での経験を活かせそうだと判明しました。
テストで前処理を行った限り、以前のプログラムを修正して進めるより、こちらの方が早く確実に進められそうです。
次回からこちらの方法で実際に前処理を進めようと思います。