[PYTHON] Comportement de la méthode pandas rolling ()

introduction

[Advanced Python (Time Series Analysis)](https://www.amazon.co.jp/%E6%99%82%E7%B3%BB%E5%88%97%E8%A7%A3%E6%9E % 90-% E8% 87% AA% E5% B7% B1% E5% 9B% 9E% E5% B8% B0% E5% 9E% 8B% E3% 83% A2% E3% 83% 87% E3% 83% AB% E3% 83% BB% E7% 8A% B6% E6% 85% 8B% E7% A9% BA% E9% 96% 93% E3% 83% A2% E3% 83% 87% E3% 83% AB% E3% 83% BB% E7% 95% B0% E5% B8% B8% E6% A4% 9C% E7% 9F% A5-Avancé-% E5% B3% B6% E7% 94% B0-% E7% 9B% B4% E5% B8% 8C / dp / 4320125010 / ref = pd_aw_sbs_14_4 / 355-0401449-3667847? _Encoding = UTF8 & pd_rd_i = 4320125010 & pd_rd_r = 1b383d15-c4b7-4c76-a51d15-c4b44ba_9c76-a51d15-c4b7-4c76-a51d15-c4b7-4c76-a51d J'ai lu 0dece788c310 & pf_rd_r = KNHHHK22TY4MB1ZQ5181 & psc = 1 & refRID = KNHHHK22TY4MB1ZQ5181). On dit que la méthode rolling () est utilisée lors de la prise de la moyenne mobile. J'ai quelques questions, c'est donc une brève note de vérification.

Question 1: Est-il inclus dans la taille de fenêtre spécifiée?

-> Inclus.


Tout d'abord, créez une série.
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

Essayez-le avec window = 3. Vous pouvez voir la moyenne de (2 premières lignes + propre ligne).
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

Question 2: Êtes-vous inclus même si center = True?

-> Inclus.


Si vous spécifiez `center = True` dans l'argument, vous pouvez voir qu'il fait la moyenne avec les lignes précédentes et suivantes.
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

Question 3: Que se passe-t-il lorsque center = True et que la taille de la fenêtre est égale?

-> La ligne du haut est prise en premier.


Validé avec window = 2 et window = 4. C'est la moyenne lorsque window = 2 (1 ligne au-dessus + propre ligne).
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

Si window = 4, la moyenne de (2 premières lignes + propre ligne + dernière ligne).
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

Question 4: Si le numéro d'index est décalé par shift (), la ligne calculée est-elle également décalée?

-> Aucun écart


Définissez la première valeur sur 100 pour plus de clarté.
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

Comparez celui qui n'est pas désaligné avec celui qui est désaligné de deux lignes. Après avoir pris la moyenne, vous pouvez voir que l'indice est désactivé.
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

Recommended Posts

Comportement de la méthode pandas rolling ()
Clustering de méthodes de clustering
Comportement de multiprocessing.pool.Pool.map
Parallélisation de la méthode de classe
[python] comportement d'argmax
À propos de MultiIndex of Pandas
Fonctionnement de base des Pandas
pandas rééchantillonner et rouler
Résumé de la méthode d'essai
[Python] Résumé de la méthode de création de table utilisant DataFrame (pandas)
Comment utiliser Pandas Rolling
Résumé de l'utilisation de base de Pandas
Index d'utilisation de certains pandas
Le pouvoir des pandas: Python
Méthode de visualisation de données utilisant matplotlib (+ pandas) (5)
Etosetra lié à Pandas read_csv
Implémentation Einsum de la méthode d'itération de valeur
Introduction d'une méthode de conception de contrôleur pilotée par les données
[Mémo] Petite histoire de pandas, stupide
Méthode de visualisation de données utilisant matplotlib (+ pandas) (3)
Résumé du comportement de conversion de go json
Comportement de python3 par le serveur de Sakura
À propos du comportement de yield_per de SqlAlchemy
[python] -1 signification de la méthode de remodelage de numpy
Comportement exact de diff --ignore-matching-lines = RE
Méthode de visualisation de données utilisant matplotlib (+ pandas) (4)
[Python] Comment lire le fichier csv (méthode read_csv du module pandas)