5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pandas rolling()メソッドの挙動

Last updated at Posted at 2020-03-11

はじめに

Advanced Python(時系列解析)を読んで知りました。
移動平均を取る際にrolling()メソッドを使うとのこと。
いくつか疑問が出たので簡単な検証のメモです。

疑問1: 指定したwindowサイズに自身は含まれるの?

-> 含まれます。


まずはSeriesの作成。
series = pd.Series(range(10))
print(series)

# 0    0
# 1    1
# 2    2
# 3    3
# 4    4
# 5    5
# 6    6
# 7    7
# 8    8
# 9    9

window=3で試してみます。 (上2行 + 自身の行)の平均が出てますね。
series_size3 = series.rolling(window=3).mean()
print(series_size3)

# 0    NaN
# 1    NaN
# 2    1.0
# 3    2.0
# 4    3.0
# 5    4.0
# 6    5.0
# 7    6.0
# 8    7.0
# 9    8.0

疑問2: center=Trueの場合も自分は含まれる?

-> 含まれます。


引数で`center=True`を指定すると、前後の行との平均をとっていることがわかります。
series_size3 = series.rolling(window=3, center=True).mean()
print(series_size3)

# 0    NaN
# 1    1.0
# 2    2.0
# 3    3.0
# 4    4.0
# 5    5.0
# 6    6.0
# 7    7.0
# 8    8.0
# 9    NaN

疑問3: center=Trueでwindowサイズが偶数の時はどうなるの?

-> 上の行が優先して取られます。


window=2とwindow=4で検証。 window=2の場合 (上の1行 + 自身の行)の平均になっています。
series_size2 = series.rolling(window=2, center=True).mean()
print(series_size2)

# 0    NaN
# 1    0.5
# 2    1.5
# 3    2.5
# 4    3.5
# 5    4.5
# 6    5.5
# 7    6.5
# 8    7.5
# 9    8.5

window=4の場合は(上の2行 + 自身の行 + 下の1行)の平均。
series_size4 = series.rolling(window=4, center=True).mean()
print(series_size4)

# 0    NaN
# 1    NaN
# 2    1.5
# 3    2.5
# 4    3.5
# 5    4.5
# 6    5.5
# 7    6.5
# 8    7.5
# 9    NaN

疑問4: shift()でindex番号をズラす場合は計算する行もズレる?

-> ズレない


わかりやすいように、先頭の値を100にする。
series = pd.Series([100, 1, 2, 3, 4, 5, 6, 7, 8, 9])
print(series)

# 0    100
# 1      1
# 2      2
# 3      3
# 4      4
# 5      5
# 6      6
# 7      7
# 8      8
# 9      9

ズラしてないものと2行ズラしたものを比較。 平均をとってから、indexがズレていることがわかります。
series_size4 = series.rolling(window=4).mean()
series_size4_shift = series.rolling(window=4).mean().shift(-2)
print(series_size4)
print(series_size4_shift)

# 0     NaN
# 1     NaN
# 2     NaN
# 3    26.5
# 4     2.5
# 5     3.5
# 6     4.5
# 7     5.5
# 8     6.5
# 9     7.5

# 0     NaN
# 1    26.5
# 2     2.5
# 3     3.5
# 4     4.5
# 5     5.5
# 6     6.5
# 7     7.5
# 8     NaN
# 9     NaN
5
3
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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?