【Python】時系列データをpandasを使って切り出す方法のメモ
時系列データを扱う際に、特定の時間帯のみを切り出したい場合や、特定の条件が合致している部分のみを抽出したい場合があります。ここでは東京のアメダスデータをPandasを利用して抽出操作を行う際のメモです。
以降、データの表示のために .head() や .tail() を付けている箇所がありますが、操作するだけであれば削除して構いません。
ライブラリとデータの読み込み
[code lang="python"]
import numpy as np
import pandas as pd
%matplotlib inline
# データの読み込み
data_tokyo = pd.read_csv('./tokyo_amedas.csv’, sep=’,’, index_col=’date’, parse_dates=['date’], encoding=’SHIFT-JIS’)
data_tokyo = data_tokyo.dropna()
print(type(data_tokyo.index))
data_tokyo.head()
[/code]
インデックスが"DateTimeIndex"になっています。それぞれの項目は気温、風速、風向、湿度、前1時間降水量です。
日時で絞り込み
between_time()を使って、特定の時間帯だけを絞り込めます。
[code lang="python"]
data_tokyo.between_time('2:00’, '4:00’, include_end=True).head(10)
[/code]
毎日の2:00, 3:00, 4:00のデータが選択されている事が分かります。
.loc を使って、指定の月を絞り込めます。
[code lang="python"]
data_tokyo.loc['2018-2′:’2018-4’].tail()
[/code]
これらを組みあわせて、指定した月の指定時間帯を絞り込むことが出来ます。
[code lang="python"]
data_tokyo.loc['2018-2′:’2018-4’].between_time('2:00′,’4:00’, include_end=True).tail()
[/code]
値が条件に合致する場合の絞り込み
気温が30度を超える夏日の条件を指定します。
[code lang="python"]
data_tokyo[ data_tokyo['temperature’] > 30 ].head()
[/code]
.query() を使うと、複合条件を指定できます。気温が30度を超え、かつ湿度が75%を超える条件を指定します。
[code lang="python"]
data_tokyo.query('temperature > 30 and humidity > 75’).head()
[/code]