データクレンジング¶
データセット¶
新型コロナウイルス感染者数マップ
https://jag-japan.com/covid19map-readme/
CC BY-NC 4.0
[1]:
import pandas as pd
csvデータの読み込み¶
[2]:
url = "https://dl.dropboxusercontent.com/s/6mztoeb6xf78g5w/COVID-19.csv"
df = pd.read_csv(url, low_memory=False, index_col="通し", na_values=[" ", ""])
df.head()
[2]:
厚労省NO | 無症状病原体保有者 | 国内 | チャーター便 | 年代 | 性別 | 確定日 | 発症日 | 受診都道府県 | 居住都道府県 | ... | Field4 | Field5 | Field6 | Field7 | Field8 | Field9 | Field10 | Unnamed: 51 | Unnamed: 52 | Unnamed: 53 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
通し | |||||||||||||||||||||
1 | 1 | NaN | A-1 | NaN | 30 | 男性 | 1/15/2020 | 1/3/2020 | 神奈川県 | 神奈川県 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
2 | 2 | NaN | A-2 | NaN | 40 | 男性 | 1/24/2020 | 1/14/2020 | 東京都 | 中華人民共和国 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
3 | 3 | NaN | A-3 | NaN | 30 | 女性 | 1/25/2020 | 1/21/2020 | 東京都 | 中華人民共和国 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
4 | 4 | NaN | A-4 | NaN | 40 | 男性 | 1/26/2020 | 1/23/2020 | 愛知県 | 中華人民共和国 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
5 | 5 | NaN | A-5 | NaN | 40 | 男性 | 1/28/2020 | 1/22/2020 | 愛知県 | 中華人民共和国 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
5 rows × 53 columns
[3]:
df.columns
[3]:
Index(['厚労省NO', '無症状病原体保有者', '国内', 'チャーター便', '年代', '性別', '確定日', '発症日',
'受診都道府県', '居住都道府県', '居住管内', '居住市区町村', 'キー', '発表', '都道府県内症例番号',
'市町村内症例番号', 'ステータス', '備考', 'ソース', 'ソース2', 'ソース3', '人数', '累計', '前日比',
'発症数', '死者合計', '退院数累計', '退院数', 'PCR検査実施人数', 'PCR検査前日比', '職業_正誤確認用',
'勤務先_正誤確認用', 'Hospital Pref', 'Residential Pref', 'Release', 'Gender',
'X', 'Y', '確定日YYYYMMDD', '受診都道府県コード', '居住都道府県コード', '更新日時', 'Field2',
'Field4', 'Field5', 'Field6', 'Field7', 'Field8', 'Field9', 'Field10',
'Unnamed: 51', 'Unnamed: 52', 'Unnamed: 53'],
dtype='object')
[4]:
df.drop(df.columns[df.columns.get_loc("Field2"):], axis=1, inplace=True)
[5]:
df.iloc[:1, :].T
[5]:
通し | 1 |
---|---|
厚労省NO | 1 |
無症状病原体保有者 | NaN |
国内 | A-1 |
チャーター便 | NaN |
年代 | 30 |
性別 | 男性 |
確定日 | 1/15/2020 |
発症日 | 1/3/2020 |
受診都道府県 | 神奈川県 |
居住都道府県 | 神奈川県 |
居住管内 | NaN |
居住市区町村 | NaN |
キー | 神奈川県 |
発表 | 神奈川県 |
都道府県内症例番号 | 1 |
市町村内症例番号 | NaN |
ステータス | 退院 |
備考 | NaN |
ソース | https://www.mhlw.go.jp/stf/newpage_08906.html |
ソース2 | https://www.pref.kanagawa.jp/docs/ga4/bukanshi... |
ソース3 | NaN |
人数 | 1 |
累計 | 1.000000 |
前日比 | 1.000000 |
発症数 | 0.000000 |
死者合計 | NaN |
退院数累計 | 1.000000 |
退院数 | 1.000000 |
PCR検査実施人数 | NaN |
PCR検査前日比 | NaN |
職業_正誤確認用 | NaN |
勤務先_正誤確認用 | NaN |
Hospital Pref | Kanagawa |
Residential Pref | Kanagawa |
Release | Kanagawa Prefecture |
Gender | Male |
X | 139.642347 |
Y | 35.447504 |
確定日YYYYMMDD | 2020/1/15 |
受診都道府県コード | 14.000000 |
居住都道府県コード | 14.000000 |
更新日時 | 12/25/2020 12:04 |
データ型の変換¶
[6]:
df.dtypes
[6]:
厚労省NO object
無症状病原体保有者 object
国内 object
チャーター便 object
年代 object
性別 object
確定日 object
発症日 object
受診都道府県 object
居住都道府県 object
居住管内 object
居住市区町村 object
キー object
発表 object
都道府県内症例番号 object
市町村内症例番号 object
ステータス object
備考 object
ソース object
ソース2 object
ソース3 object
人数 int64
累計 float64
前日比 float64
発症数 float64
死者合計 float64
退院数累計 float64
退院数 float64
PCR検査実施人数 float64
PCR検査前日比 float64
職業_正誤確認用 object
勤務先_正誤確認用 object
Hospital Pref object
Residential Pref object
Release object
Gender object
X float64
Y float64
確定日YYYYMMDD object
受診都道府県コード float64
居住都道府県コード float64
更新日時 object
dtype: object
確定日
列と発症日
列をdatetime型に変換
[7]:
df["確定日"] = df["確定日"].map(pd.Timestamp)
df["発症日"] = df["発症日"].map(pd.Timestamp)
df.dtypes
[7]:
厚労省NO object
無症状病原体保有者 object
国内 object
チャーター便 object
年代 object
性別 object
確定日 datetime64[ns]
発症日 datetime64[ns]
受診都道府県 object
居住都道府県 object
居住管内 object
居住市区町村 object
キー object
発表 object
都道府県内症例番号 object
市町村内症例番号 object
ステータス object
備考 object
ソース object
ソース2 object
ソース3 object
人数 int64
累計 float64
前日比 float64
発症数 float64
死者合計 float64
退院数累計 float64
退院数 float64
PCR検査実施人数 float64
PCR検査前日比 float64
職業_正誤確認用 object
勤務先_正誤確認用 object
Hospital Pref object
Residential Pref object
Release object
Gender object
X float64
Y float64
確定日YYYYMMDD object
受診都道府県コード float64
居住都道府県コード float64
更新日時 object
dtype: object
欠損値を除外¶
年代
列と性別
列の欠損値を除外
[8]:
df["年代"].isnull().sum()
[8]:
1
[9]:
df["性別"].isnull().sum()
[9]:
3
[10]:
df.drop(
df.loc[df["年代"].isnull()].index.union(df.loc[df["性別"].isnull()].index), inplace=True
)
空白文字の除去¶
[11]:
df["年代"].unique()
[11]:
array(['30 ', '40 ', '60 ', '50 ', '20 ', '80 ', '70 ', '10 ', '0-10',
'不明', '90 ', '20', '50', '30', '40', '80', '10', '60', '70',
'不明\u3000', '90\xa0', '60\xa0', '90', '10\xa0', '0-10\xa0',
'30\xa0', '50\xa0', '40\xa0', '100 ', '20\xa0'], dtype=object)
年代
列の空白文字を削除
[12]:
df["年代"] = df["年代"].str.strip()
データの直列化¶
[13]:
df.to_pickle("../data.pickle", protocol=4)