Pandas-16.聚合

Pandas-16.聚合

以如下代码作为例子:

df = pd.DataFrame(np.random.randint(-10,10, (5,4)),
      index = pd.date_range('1/1/2020', periods=5),
      columns = ['A', 'B', 'C', 'D'])

在整个数据窗口内应用聚合

print(df)
print(df.rolling(window=3,min_periods=1).aggre)
'''
            A  B  C  D
2020-01-01 -6  3 -5  3
2020-01-02 -2  8 -2 -6
2020-01-03 -4 -6  3  2
2020-01-04 -4 -5  1  0
2020-01-05 -3 -9  2 -6
               A     B    C    D
2020-01-01  -6.0   3.0 -5.0  3.0
2020-01-02  -8.0  11.0 -7.0 -3.0
2020-01-03 -12.0   5.0 -4.0 -1.0
2020-01-04 -10.0  -3.0  2.0 -4.0
2020-01-05 -11.0 -20.0  6.0 -4.0
'''

DataFrame的单列进行聚合

print(df)
print("----------")
print(df.rolling(window=3,min_periods=1).A.aggregate(np.sum))
'''
            A  B  C  D
2020-01-01 -6  3 -5  3
2020-01-02 -2  8 -2 -6
2020-01-03 -4 -6  3  2
2020-01-04 -4 -5  1  0
2020-01-05 -3 -9  2 -6
----------
2020-01-01    -6.0
2020-01-02    -8.0
2020-01-03   -12.0
2020-01-04   -10.0
2020-01-05   -11.0
Freq: D, Name: A, dtype: float64
'''

多列聚合

print(df)
print("----------")
print(df.rolling(window=3,min_periods=1)["A","C"].aggregate(np.sum))
'''
            A  B  C  D
2020-01-01 -6  3 -5  3
2020-01-02 -2  8 -2 -6
2020-01-03 -4 -6  3  2
2020-01-04 -4 -5  1  0
2020-01-05 -3 -9  2 -6
----------
               A    C
2020-01-01  -6.0 -5.0
2020-01-02  -8.0 -7.0
2020-01-03 -12.0 -4.0
2020-01-04 -10.0  2.0
2020-01-05 -11.0  6.0
'''

多函数

print(df)
print("----------")
print(df.rolling(window=3,min_periods=1)["A","C"].aggregate([np.sum,np.mean]))
'''
            A  B  C  D
2020-01-01 -6  3 -5  3
2020-01-02 -2  8 -2 -6
2020-01-03 -4 -6  3  2
2020-01-04 -4 -5  1  0
2020-01-05 -3 -9  2 -6
----------
               A              C          
             sum      mean  sum      mean
2020-01-01  -6.0 -6.000000 -5.0 -5.000000
2020-01-02  -8.0 -4.000000 -7.0 -3.500000
2020-01-03 -12.0 -4.000000 -4.0 -1.333333
2020-01-04 -10.0 -3.333333  2.0  0.666667
2020-01-05 -11.0 -3.666667  6.0  2.000000
'''

不同函数不同列

print(df)
print("----------")
print(df.rolling(window=3,min_periods=1).aggregate({"A": np.sum, "C":np.mean}))
'''
            A  B  C  D
2020-01-01 -6  3 -5  3
2020-01-02 -2  8 -2 -6
2020-01-03 -4 -6  3  2
2020-01-04 -4 -5  1  0
2020-01-05 -3 -9  2 -6
----------
               A         C
2020-01-01  -6.0 -5.000000
2020-01-02  -8.0 -3.500000
2020-01-03 -12.0 -1.333333
2020-01-04 -10.0  0.666667
2020-01-05 -11.0  2.000000
'''

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux-Shell变量

    悠扬前奏
  • LeetCode-193. 有效电话号码

    给定一个包含电话号码列表(一行一个电话号码)的文本文件 file.txt,写一个 bash 脚本输出所有有效的电话号码。

    悠扬前奏
  • Pandas-17.缺失数据

    悠扬前奏
  • Linux常用命令 - cp命令详解

    21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!!

    小菠萝测试笔记
  • 如何在Java和Swift中避免空引用异常?

    您最近在代码中遇到过NullPointerException(空指针异常)吗? 如果没有,那你一定是一个很细心的程序员。在Java应用程序中最常见的异常类型之一...

    程序你好
  • 《笨办法学Python》 第15课手记

    《笨办法学Python》 第15课手记 本节课涉及i新内容,请仔细阅读本节内容,尤其是作者的说明和常见问题解答。 原代码如下: from sys import ...

    Steve Wang
  • Angular父子Component之间的事件通知机制

    例子:product-list为parent Component,product-alert为child Component.

    Jerry Wang
  • 如何利用分层测试概念设计针对性测试用例

    除了纯后台测试或者纯接口测试外,我想大部分人都会接触业务测试,至少我们目前的客户端产品测试就是这样。

    sylan215
  • 【分布式锁】04-使用Redisson实现ReadWriteLock原理

    关于读写锁,大家应该都了解JDK中的ReadWriteLock, 当然Redisson也有读写锁的实现。

    一枝花算不算浪漫
  • 微信公开课 PRO 版售票开启 | 2018,微信正当时

    “ 在微信发展的这个过程中,已经超越了原来的即时消息这个概念。——2017年《财富》论坛 马化腾”

    知晓君

扫码关注云+社区

领取腾讯云代金券