コロナデータ1(multi indexの抽出)
やること
インデックスを用いたデータの整理 + スライスを用いたデータ抽出
before
after
参考サイト
pandasのMultiindexの指定・追加・解除・ソート・レベル変更 | note.nkmk.me
pandasのMultiIndexから任意の行・列を選択、抽出 | note.nkmk.me
コード
multi_indexの作成
row_data = pd.read_csv('input/owid-covid-data_20201027.csv') row_data['date'] = pd.to_datetime(row_data['date']) row_data = row_data.set_index(['date', 'location'], drop = True) row_data = row_data.sort_index()
multi_indexのスライス
やったこと
データ内にはめちゃくちゃたくさんの国があるので、対象国を一旦絞る
とりあえず対象国は以下の通り
- アメリカ
- 中国
- イギリス
- フランス
- ドイツ
- インド
- ブラジル
- 日本
countries = ['United States', 'China', 'United Kingdom', 'France', 'Germany', 'India', 'Brazil', 'Japan'] data = row_data.loc[(slice(None), countries), :] data.head(5)
スライスのその他
やったこと以外にもスライスについてちょっとしぼったので、まとめ。xs
もつかっていたのだけど、今後はloc
で統一しようかなと。
multi_indexをスライスする際は、タプルで指定が基本。
- スライスしないとき(リストで指定)
row_data.loc[(['2019-12-31','2020-05-31'], 'Japan'), :] # OK
- スライスするとき
- NGの場合
row_data.loc[(['2019-12-31':'2020-05-31'], 'Japan'), :] # NG
エラー文
File "<ipython-input-34-2764d062ff95>", line 8 row_data.loc[(['2019-12-31':'2020-05-31'], 'Japan'), :] # NG ^ SyntaxError: invalid syntax
- OKの場合
row_data.loc[(slice('2019-12-31','2020-05-31'), 'Japan'), :] # OK row_data.loc[(slice('2019-12-31','2020-05-31'), 'Japan'), :].head(5)