English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Pandas窗口函数

Exemple d'opération de fonction fenêtre Pandas

Pour traiter les données numériques, Pandas fournit plusieurs variantes, telles que le roulement, l'extension et le déplacement exponentiel des pondérations pour les statistiques de fenêtre. Cela inclut la somme, la moyenne, la médiane, la variance, la covariance, la corrélation, etc.
Maintenant, nous allons apprendre à les appliquer respectivement aux objets DataFrame.

fonction rolling()

Cette fonction peut être appliquée à une série de données. Spécifiez le paramètre window = n et appliquez-y la fonction statistique appropriée.

 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())

运行结果如下:

                  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

En raison de la taille de la fenêtre de3Par conséquent, pour les deux premiers éléments vides, à partir du troisième élément, la valeur est n, n-1et n-2La moyenne des éléments. Par conséquent, nous pouvons également appliquer les fonctions ci-dessus.

.fonction expanding()

Cette fonction peut être appliquée à une série de données. Spécifiez le paramètre min_periods = n et appliquez-y la fonction statistique appropriée.

 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())

运行结果如下:

                 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

.ewm()函数

ewm 应用于一系列数据。指定com,span,halflife参数中的任何一个,并在其上面应用适当的统计函数。它按指数分配权重。

 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())

运行结果如下:

                  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

窗口函数主要用于通过平滑曲线以图形方式在数据中查找趋势。如果日常数据变化很大,并且有许多数据点可用,则采用样本和绘图是一种方法,应用窗口计算并在结果上绘图是另一种方法。通过这些方法,我们可以平滑曲线或趋势。