看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
滚动统计的一种常见替代方法是使用扩展窗口,该窗口可生成该统计的值以及该时间点之前所有可用的数据。
它们遵循与.rolling 类似的接口,其中.expanding 方法返回 Expanding 对象。
由于这些计算是滚动统计的特殊情况,因此它们在 Pandas 中实现,因此以下两个调用是等效的:
df.rolling(window=len(df), min_periods=1).mean()[:5]
'''
A B C D
2000-01-01 0.314226 -0.001675 0.071823 0.892566
2000-01-02 0.654522 -0.171495 0.179278 0.853361
2000-01-03 0.708733 -0.064489 -0.238271 1.371111
2000-01-04 0.987613 0.163472 -0.919693 1.566485
2000-01-05 1.426971 0.288267 -1.358877 1.808650
'''
df.expanding(min_periods=1).mean()[:5]
'''
A B C D
2000-01-01 0.314226 -0.001675 0.071823 0.892566
2000-01-02 0.654522 -0.171495 0.179278 0.853361
2000-01-03 0.708733 -0.064489 -0.238271 1.371111
2000-01-04 0.987613 0.163472 -0.919693 1.566485
2000-01-05 1.426971 0.288267 -1.358877 1.808650
'''
GroupBy 直接支持 EWM 操作:
df = pd.DataFrame({'A': ['a', 'b', 'a', 'b'], 'B': range(4)
df
'''
A B
0 a 0
1 b 1
2 a 2
3 b 3
'''
df.groupby('A').ewm(com=1.0).mean()
'''
B
A
a 0 0.000000
2 1.333333
b 1 1.000000
3 2.333333
'''
具有与.rolling方法类似的方法:
Method | Description |
---|---|
count() | Number of non-null observations |
sum() | Sum of values |
mean() | Mean of values |
median() | Arithmetic median of values |
min() | Minimum |
max() | Maximum |
std() | Bessel-corrected sample standard deviation |
var() | Unbiased variance |
skew() | Sample skewness (3rd moment) |
kurt() | Sample kurtosis (4th moment) |
quantile() | Sample quantile (value at %) |
apply() | Generic apply |
cov() | Unbiased covariance (binary) |
corr() | Correlation (binary) |
pandas 1.4+ 版本支持扩展窗口内的排序,它给给每个数据给出它在窗口中的序号,还可以指定序号赋于的方法:
s = pd.Series([1, 4, 2, 3, 5, 3])
s.expanding().rank()
'''
0 1.0
1 2.0
2 2.0
3 3.0
4 5.0
5 3.5
dtype: float64
'''
s.expanding().rank(method="max")
'''
0 1.0
1 2.0
2 2.0
3 3.0
4 5.0
5 4.0
dtype: float64
'''
s.expanding().rank(method="min")
'''
0 1.0
1 2.0
2 2.0
3 3.0
4 5.0
5 3.0
dtype: float64
'''
更新时间:2022-05-08 23:56:11 标签:pandas 扩展窗口