Python Pandas - Fonctions de fenêtre
Pour travailler sur des données numériques, les pandas fournissent quelques variantes telles que les poids roulants, exponentiels et exponentiels pour les statistiques de fenêtre. Parmi ceux-ci sontsum, mean, median, variance, covariance, correlation, etc.
Nous allons maintenant apprendre comment chacun de ces éléments peut être appliqué aux objets DataFrame.
Fonction .rolling ()
Cette fonction peut être appliquée à une série de données. Spécifie lewindow=n argument et appliquez la fonction statistique appropriée par-dessus.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4),
index = pd.date_range('1/1/2000', periods=10),
columns = ['A', 'B', 'C', 'D'])
print df.rolling(window=3).mean()
Ses output est comme suit -
A B C D
2000-01-01 NaN NaN NaN NaN
2000-01-02 NaN NaN NaN NaN
2000-01-03 0.434553 -0.667940 -1.051718 -0.826452
2000-01-04 0.628267 -0.047040 -0.287467 -0.161110
2000-01-05 0.398233 0.003517 0.099126 -0.405565
2000-01-06 0.641798 0.656184 -0.322728 0.428015
2000-01-07 0.188403 0.010913 -0.708645 0.160932
2000-01-08 0.188043 -0.253039 -0.818125 -0.108485
2000-01-09 0.682819 -0.606846 -0.178411 -0.404127
2000-01-10 0.688583 0.127786 0.513832 -1.067156
Note - Puisque la taille de la fenêtre est de 3, pour les deux premiers éléments il y a des nuls et à partir du troisième la valeur sera la moyenne des n, n-1 et n-2éléments. Ainsi, nous pouvons également appliquer diverses fonctions comme mentionné ci-dessus.
Fonction .expanding ()
Cette fonction peut être appliquée à une série de données. Spécifie lemin_periods=n argument et appliquez la fonction statistique appropriée par-dessus.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4),
index = pd.date_range('1/1/2000', periods=10),
columns = ['A', 'B', 'C', 'D'])
print df.expanding(min_periods=3).mean()
Ses output est comme suit -
A B C D
2000-01-01 NaN NaN NaN NaN
2000-01-02 NaN NaN NaN NaN
2000-01-03 0.434553 -0.667940 -1.051718 -0.826452
2000-01-04 0.743328 -0.198015 -0.852462 -0.262547
2000-01-05 0.614776 -0.205649 -0.583641 -0.303254
2000-01-06 0.538175 -0.005878 -0.687223 -0.199219
2000-01-07 0.505503 -0.108475 -0.790826 -0.081056
2000-01-08 0.454751 -0.223420 -0.671572 -0.230215
2000-01-09 0.586390 -0.206201 -0.517619 -0.267521
2000-01-10 0.560427 -0.037597 -0.399429 -0.376886
Fonction .ewm ()
ewmest appliqué sur une série de données. Spécifiez l'un des com, span,halflifeargument et appliquez la fonction statistique appropriée par-dessus. Il attribue les poids de manière exponentielle.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4),
index = pd.date_range('1/1/2000', periods=10),
columns = ['A', 'B', 'C', 'D'])
print df.ewm(com=0.5).mean()
Ses output est comme suit -
A B C D
2000-01-01 1.088512 -0.650942 -2.547450 -0.566858
2000-01-02 0.865131 -0.453626 -1.137961 0.058747
2000-01-03 -0.132245 -0.807671 -0.308308 -1.491002
2000-01-04 1.084036 0.555444 -0.272119 0.480111
2000-01-05 0.425682 0.025511 0.239162 -0.153290
2000-01-06 0.245094 0.671373 -0.725025 0.163310
2000-01-07 0.288030 -0.259337 -1.183515 0.473191
2000-01-08 0.162317 -0.771884 -0.285564 -0.692001
2000-01-09 1.147156 -0.302900 0.380851 -0.607976
2000-01-10 0.600216 0.885614 0.569808 -1.110113
Les fonctions de fenêtre sont principalement utilisées pour rechercher graphiquement les tendances dans les données en lissant la courbe. S'il y a beaucoup de variations dans les données quotidiennes et que beaucoup de points de données sont disponibles, alors le prélèvement d'échantillons et le traçage sont une méthode et l'application des calculs de fenêtre et le traçage du graphique sur les résultats est une autre méthode. Par ces méthodes, nous pouvons lisser la courbe ou la tendance.