目录

上一个主题

6.5. Pandas统计函数

下一个主题

6.7. Pandas聚合


>>> from env_helper import info; info()
待更新

6.6. Pandas窗口函数

为了处理数字数据,Pandas提供了几个变体,如滚动,展开和指数移动窗口统计的权重。 其中包括总和,均值,中位数,方差,协方差,相关性等。

下来学习如何在DataFrame对象上应用上提及的每种方法。

.rolling()函数

这个函数可以应用于一系列数据。指定window=n参数并在其上应用适当的统计函数。

>>> import pandas as pd
>>> import numpy as np
>>>
>>> df = pd.DataFrame(np.random.randn(10, 4),index = pd.date_range('1/1/2020', periods=10),columns = ['A', 'B', 'C', 'D'])
>>> df
A B C D
2020-01-01 0.528600 1.623984 0.478942 -0.790543
2020-01-02 0.763437 -0.438010 -0.070689 -0.936289
2020-01-03 1.243134 1.096209 -0.627720 1.399032
2020-01-04 -1.142767 0.755329 -1.419957 -1.425151
2020-01-05 0.396647 -0.356554 -0.227605 0.362909
2020-01-06 -0.268281 0.012169 -0.646941 1.164585
2020-01-07 0.695133 -1.222514 -1.615608 0.004939
2020-01-08 1.587524 -0.532473 -0.102960 -0.076520
2020-01-09 -0.821160 0.023728 -0.077339 1.586905
2020-01-10 -0.282919 -0.163516 0.703653 2.334238
>>> df.rolling(window=3).mean()
A B C D
2020-01-01 NaN NaN NaN NaN
2020-01-02 NaN NaN NaN NaN
2020-01-03 0.845057 0.760728 -0.073156 -0.109266
2020-01-04 0.287934 0.471176 -0.706122 -0.320802
2020-01-05 0.165671 0.498328 -0.758427 0.112263
2020-01-06 -0.338134 0.136981 -0.764834 0.034114
2020-01-07 0.274500 -0.522300 -0.830051 0.510811
2020-01-08 0.671459 -0.580940 -0.788503 0.364335
2020-01-09 0.487166 -0.577086 -0.598636 0.505108
2020-01-10 0.161149 -0.224087 0.174451 1.281541
注 - 由于窗口大小为3(window),前两个元素有空值,第三个元素的值将是n,n-1和n-2元素的平均值。这样也可以应用上面提到的各种函数了。

.expanding()函数

这个函数可以应用于一系列数据。 指定min_periods = n参数并在其上应用适当的统计函数。

>>> import pandas as pd
>>> import numpy as np
>>>
>>> df = pd.DataFrame(np.random.randn(10, 4),
>>>       index = pd.date_range('1/1/2018', periods=10),
>>>       columns = ['A', 'B', 'C', 'D'])
>>> print (df.expanding(min_periods=3).mean())
                   A         B         C         D
2018-01-01       NaN       NaN       NaN       NaN
2018-01-02       NaN       NaN       NaN       NaN
2018-01-03  0.032260 -0.261143  0.021765  0.160825
2018-01-04 -0.046046 -0.031841 -0.170154  0.117050
2018-01-05 -0.304701  0.195699  0.063942  0.153628
2018-01-06 -0.155876 -0.188956  0.394389 -0.044482
2018-01-07  0.032707 -0.267137  0.406838 -0.032869
2018-01-08 -0.197960 -0.104805  0.556705 -0.095725
2018-01-09 -0.365651 -0.120115  0.736378 -0.261385
2018-01-10 -0.316331 -0.277407  0.570784 -0.167081

.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/2019', periods=10),
>>>    columns = ['A', 'B', 'C', 'D'])
>>> print (df.ewm(com=0.5).mean())
                   A         B         C         D
2019-01-01  0.418827 -0.554295  0.116418  1.335763
2019-01-02  1.015934 -1.290212  0.207759  0.882574
2019-01-03  0.075384  0.141328  0.772029  1.041951
2019-01-04  0.293864  0.364801  1.654613  1.445466
2019-01-05 -0.530265 -0.561341  0.663789 -0.845996
2019-01-06 -0.181633 -0.811195 -0.050319 -0.900416
2019-01-07  1.075773  0.022815  0.286409 -1.208064
2019-01-08 -0.072613 -0.847369  0.055422 -0.050620
2019-01-09  0.913678  0.096890 -0.659329  0.464709
2019-01-10  1.182321 -1.166641 -0.413356  0.233695

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