37
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

pandasのindexはdatetimeにすると便利

はじめに

時系列を含むデータをpandasで処理する場合、indexにdatetime型を指定すると便利だったので、
備忘録的にまとめます。

使用データ

ネット上で拾ってきた2010年から2019年までの時系列データを使用します。

df["date"] = pd.to_datetime(df["date"])
df = df.set_index("date")
df.head()
date A B
2010-04-01 93.74 1859.96
2010-04-02 94.61 1859.96
2010-04-05 94.28 1836.82
2010-04-06 93.64 1839.07
2010-04-07 93.21 1800.12

ここが便利

1. 日付を指定することで、データを選択できる。

indexにdatetime型の方式で日付を指定すると、指定範囲のデータを取得できる。

年の指定

df["2011"].head(2)
date A B
2011-01-03 81.67 1663.29
2011-01-04 82.06 1659.39

月の指定

df["2011-3"].head(2)
date A B
2011-03-01 81.92 1424.76
2011-03-02 81.84 1374.43

2.範囲指定もできる。

スライスによる範囲指定もできる

df["2012-04":"2012-05"]
date A B
2012-04-02 81.64 1654.39
〜〜 〜〜
2012-05-31 78.36 1471.49

3.特定の月(日)だけ抜き出す

8月だけ抜き出すというような処理も可能です。

df[df.index.month == 8]
date A B
2010-08-02 86.53 1509.63
2010-08-03 85.88 1527.62
〜〜 〜〜
2018-08-30 110.98 2840.16
2018-08-31 111.04 2840.16

4.年月日ごとに計算を行う。

# 年なら'y'、日なら'D'を指定してください。
# もちろんmeanを他の計算メソッドに当てても計算できます。
df.resample('M').mean()
date A B
2010-04-30 93.455909 1784.934091
2010-05-31 91.914762 1684.609048
〜〜 〜〜

参考サイト様

https://note.nkmk.me/python-pandas-rolling/
https://towardsdatascience.com/basic-time-series-manipulation-with-pandas-4432afee64ea

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
37
Help us understand the problem. What are the problem?