0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

indexが日付、データが個数になっているSeriesについて、存在しない日のデータをreindexを使って0で埋めようと思ったらすべて0で埋まった件

Posted at

結論

reindexする前に、df.datatypeで形式を確認しよう。
indexの型がdateと思っていたが、実はdateではなく、objectになっていた。そうすると、df.reindexではすべてのindexについて、fill_valueで指定した値に埋められてしまう。

今回はpandas.Seriesを、dataframe.groupby()を使って作成したが、その処理の前に、groupby()する対象のcolumnをpd.to_datetime()を使ってdatetime型にしておくのが良い。

csvは以前datetimeのdtypeを持ったdataframeから作ったものだったので、read_csv()で読み込んだ後にdtypeobjectとなっていることに気が付かなかった。

うまくいかない例

import pandas as pd
import seaborn as sns

df = pd.read_csv('some_kind_of.csv')

# csvの中身
# 日毎の発生件数をヒストグラムに表すのが今回の目的。
# ...
# 2018-02-01,ANAウイングス,ボンバルディア式DHC-8-402型,ANA331,中部国際空港,熊本空港,中部国際空港,上昇中、プロペラの除氷系統に不具合が発生したことを示すライトが点灯したため引き返した。,,2018,2
# 2018-02-04,日本エアコミューター,サーブ式SAAB340B型,JAC2321,大阪国際空港,但馬飛行場,大阪国際空港,上昇中、気流の擾乱により機体への荷重に係る運用限界一時的に超過した可能性があり、点検が必要となったため引き返した。,,2018,2
# 2018-02-05,全日本空輸,ボーイング式737-800型,ANA313,東京国際空港,富山空港,東京国際空港,上昇中、副操縦士席側前方の操縦室窓にひび割れが発生したため引き返した。,,2018,2
# ...

date_range = pd.date_range(start='2000-02-01', end='2024-03-31')
daily_count = df.groupby('発生日').count()['運航者']

daily_count = daily_count.reindex(date_range, fill_value=0)

この結果、daily_countとして、2000/2/1から2024/3/31まですべて0となるSeriesを得る。

うまくいく例

import pandas as pd
import seaborn as sns

df = pd.read_csv('some_kind_of.csv')

# csvの中身
# 日毎の発生件数をヒストグラムに表すのが今回の目的。
# ...
# 2018-02-01,ANAウイングス,ボンバルディア式DHC-8-402型,ANA331,中部国際空港,熊本空港,中部国際空港,上昇中、プロペラの除氷系統に不具合が発生したことを示すライトが点灯したため引き返した。,,2018,2
# 2018-02-04,日本エアコミューター,サーブ式SAAB340B型,JAC2321,大阪国際空港,但馬飛行場,大阪国際空港,上昇中、気流の擾乱により機体への荷重に係る運用限界一時的に超過した可能性があり、点検が必要となったため引き返した。,,2018,2
# 2018-02-05,全日本空輸,ボーイング式737-800型,ANA313,東京国際空港,富山空港,東京国際空港,上昇中、副操縦士席側前方の操縦室窓にひび割れが発生したため引き返した。,,2018,2
# ...

df['発生日'] = pd.to_datetime(df['発生日']) # この行を加える。

date_range = pd.date_range(start='2000-02-01', end='2024-03-31')
daily_count = df.groupby('発生日').count()['運航者']

daily_count = daily_count.reindex(date_range, fill_value=0)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?