コロナデータ1(multi indexの抽出)

やること

インデックスを用いたデータの整理 + スライスを用いたデータ抽出

before f:id:iiiiikamirin:20201029100439p:plain

after f:id:iiiiikamirin:20201029100530p:plain

参考サイト

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)

f:id:iiiiikamirin:20201029102308p:plain

スライスのその他

やったこと以外にもスライスについてちょっとしぼったので、まとめ。xsもつかっていたのだけど、今後はlocで統一しようかなと。

multi_indexをスライスする際は、タプルで指定が基本。

  • スライスしないとき(リストで指定)
row_data.loc[(['2019-12-31','2020-05-31'], 'Japan'), :] #  OK

f:id:iiiiikamirin:20201029103259p:plain

  • スライスするとき
  • 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)

f:id:iiiiikamirin:20201029103556p:plain