在《Python Pandas窗口函数》一节,我们重点介绍了窗口函数。我们知道,窗口函数可以与聚合函数一起使用,聚合函数指的是对一组数据求总和、最大值、最小值以及平均值的操作,本节重点讲解聚合函数的应用。

应用聚合函数

首先让我们创建一个 DataFrame 对象,然后对聚合函数进行应用。

  1. import pandas as pd
  2. import numpy as np
  3. df = pd.DataFrame(np.random.randn(5, 4),index = pd.date_range('12/14/2020', periods=5),columns = ['A', 'B', 'C', 'D'])
  4. print (df)
  5. #窗口大小为3,min_periods 最小观测值为1
  6. r = df.rolling(window=3,min_periods=1)
  7. print(r)

输出结果:

                   A         B         C         D
2020-12-14  0.941621  1.205489  0.473771 -0.348169
2020-12-15 -0.276954  0.076387  0.104194  1.537357
2020-12-16  0.582515  0.481999 -0.652332 -1.893678
2020-12-17 -0.286432  0.923514  0.285255 -0.739378
2020-12-18  2.063422 -0.465873 -0.946809  1.590234 Rolling [window=3,min_periods=1,center=False,axis=0]

1) 对整体聚合

您可以把一个聚合函数传递给 DataFrame,示例如下:

  1. import pandas as pd
  2. import numpy as np
  3. df = pd.DataFrame(np.random.randn(5, 4),index = pd.date_range('12/14/2020', periods=5),columns = ['A', 'B', 'C', 'D'])
  4. print (df)
  5. #窗口大小为3,min_periods 最小观测值为1
  6. r = df.rolling(window=3,min_periods=1)
  7. #使用 aggregate()聚合操作
  8. print(r.aggregate(np.sum))

输出结果:

                   A         B         C         D
2020-12-14 0.133713 0.746781 0.499385 0.589799
2020-12-15 -0.777572 0.531269 0.600577 -0.393623
2020-12-16 0.408115 -0.874079 0.584320 0.507580
2020-12-17 -1.033055 -1.185399 -0.546567 2.094643
2020-12-18 0.469394 -1.110549 -0.856245 0.260827 A B C D
2020-12-14 0.133713 0.746781 0.499385 0.589799
2020-12-15 -0.643859 1.278050 1.099962 0.196176
2020-12-16 -0.235744 0.403971 1.684281 0.703756
2020-12-17 -1.402513 -1.528209 0.638330 2.208601
2020-12-18 -0.155546 -3.170027 -0.818492 2.863051

2) 对任意某一列聚合

  1. import pandas as pd
  2. import numpy as np
  3. df = pd.DataFrame(np.random.randn(5, 4),index = pd.date_range('12/14/2020', periods=5),columns = ['A', 'B', 'C', 'D'])
  4. #窗口大小为3,min_periods 最小观测值为1
  5. r = df.rolling(window=3,min_periods=1)
  6. #对 A 列聚合
  7. print(r['A'].aggregate(np.sum))

输出结果:

2020-12-14    1.051501
2020-12-15 1.354574
2020-12-16 0.896335
2020-12-17 0.508470
2020-12-18 2.333732
Freq: D, Name: A, dtype: float64

3) 对多列数据聚合

  1. import pandas as pd
  2. import numpy as np
  3. df = pd.DataFrame(np.random.randn(5, 4),index = pd.date_range('12/14/2020', periods=5),columns = ['A', 'B', 'C', 'D'])
  4. #窗口大小为3,min_periods 最小观测值为1
  5. r = df.rolling(window=3,min_periods=1)
  6. #对 A/B 两列聚合
  7. print(r['A','B'].aggregate(np.sum))

输出结果:

                   A         B
2020-12-14 0.639867 -0.229990
2020-12-15 0.352028 0.257918
2020-12-16 0.637845 2.643628
2020-12-17 0.432715 2.428604
2020-12-18 -1.575766 0.969600

4) 对单列应用多个函数

  1. import pandas as pd
  2. import numpy as np
  3. df = pd.DataFrame(np.random.randn(5, 4),index = pd.date_range('12/14/2020', periods=5),columns = ['A', 'B', 'C', 'D'])
  4. #窗口大小为3,min_periods 最小观测值为1
  5. r = df.rolling(window=3,min_periods=1)
  6. #对 A/B 两列聚合
  7. print(r['A','B'].aggregate([np.sum,np.mean]))

输出结果:

                 sum      mean
2020-12-14 -0.469643 -0.469643
2020-12-15 -0.626856 -0.313428
2020-12-16 -1.820226 -0.606742
2020-12-17 -2.007323 -0.669108
2020-12-18 -0.595736 -0.198579

5) 对不同列应用多个函数

  1. import pandas as pd
  2. import numpy as np
  3. df = pd.DataFrame(np.random.randn(5, 4),
  4. index = pd.date_range('12/11/2020', periods=5),
  5. columns = ['A', 'B', 'C', 'D'])
  6. r = df.rolling(window=3,min_periods=1)
  7. print( r['A','B'].aggregate([np.sum,np.mean]))

输出结果:

                   A                   B
sum mean sum mean
2020-12-14 -1.428882 -1.428882 -0.417241 -0.417241
2020-12-15 -1.315151 -0.657576 -1.580616 -0.790308
2020-12-16 -2.093907 -0.697969 -2.260181 -0.753394
2020-12-17 -1.324490 -0.441497 -1.578467 -0.526156
2020-12-18 -2.400948 -0.800316 -0.452740 -0.150913

6) 对不同列应用不同函数

  1. import pandas as pd
  2. import numpy as np
  3. df = pd.DataFrame(np.random.randn(3, 4),
  4. index = pd.date_range('12/14/2020', periods=3),
  5. columns = ['A', 'B', 'C', 'D'])
  6. r = df.rolling(window=3,min_periods=1)
  7. print(r.aggregate({'A': np.sum,'B': np.mean}))

输出结果:

                   A         B
2020-12-14 0.503535 -1.301423
2020-12-15 0.170056 -0.550289
2020-12-16 -0.086081 -0.140532

pandas之聚合函数的更多相关文章

  1. pandas 之 groupby 聚合函数

    import numpy as np import pandas as pd 聚合函数 Aggregations refer to any data transformation that produ ...

  2. pandas的聚合操作: groupyby与agg

    pandas提供基于行和列的聚合操作,groupby可理解为是基于行的,agg则是基于列的 从实现上看,groupby返回的是一个DataFrameGroupBy结构,这个结构必须调用聚合函数(如su ...

  3. python重要的第三方库pandas模块常用函数解析之DataFrame

    pandas模块常用函数解析之DataFrame 关注公众号"轻松学编程"了解更多. 以下命令都是在浏览器中输入. cmd命令窗口输入:jupyter notebook 打开浏览器 ...

  4. 可以这样去理解group by和聚合函数

    写在前面的话:用了好久group by,今天早上一觉醒来,突然感觉group by好陌生,总有个筋别不过来,为什么不能够select * from Table group by id,为什么一定不能是 ...

  5. TSQL 聚合函数忽略NULL值

    max,min,sum,avg聚合函数会忽略null值,但不代表聚合函数不返回null值,如果表为空表,或聚合列都是null,则返回null.count 聚合函数忽略null值,如果聚合列都是null ...

  6. SQL Server 聚合函数算法优化技巧

    Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这个程序的声明周期.Sql server聚合函数对一组值 ...

  7. Mongodb学习笔记四(Mongodb聚合函数)

    第四章 Mongodb聚合函数 插入 测试数据 ;j<;j++){ for(var i=1;i<3;i++){ var person={ Name:"jack"+i, ...

  8. sql语句 之聚合函数

      聚合分析 在访问数据库时,经常需要对表中的某列数据进行统计分析,如求其最大值.最小值.平均值等.所有这些针对表中一列或者多列数据的分析就称为聚合分析. 在SQL中,可以使用聚合函数快速实现数据的聚 ...

  9. oracle数据库函数之============‘’分析函数和聚合函数‘’

    1分析函数 分析函数根据一组行来进行聚合计算,用于计算完成狙击的累积排名等,分析函数为每组记录返回多个行 rank_number() 查询结果按照次序排列,不存在并列和站位的情况,可以用于做Oracl ...

  10. ORACLE 自定义聚合函数

    用户可以自定义聚合函数  ODCIAggregate,定义了四个聚集函数:初始化.迭代.合并和终止. Initialization is accomplished by the ODCIAggrega ...

随机推荐

  1. 如何用虚拟机VMware Workstation安装CentOs-7

    因为我是先安装虚拟机的,再安装CentOs的.在此建议大家先安装CentOs-7再安装虚拟机,比较方便. 1.首先进入centos官方网站下载,网站如下:https://www.centos.org/ ...

  2. DPDK在虚拟机上运行时,报错: Ethdev port_id=0 requested Rx offloads 0xe doesn't match Rx offloads capabilities 0x82a1d in rte_eth_dev_configure()

    这个错误是因为RX_OFFLOAD与TX_OFFLOAD可能不支持IPV4_CKSUM的检验 解决办法: 1,在配置中注释掉 DEV_RX_OFFLOAD_CHECKSUM 2,在代码中关闭 DEV_ ...

  3. win10 IE浏览器中,设置指定程序查看源文件,设置查看源默认程序

    解决 win10下修改ie默认查看网页源文件程序无效,设置View Source Editor ----> Editor Name注册表项无效 1. 修改注册表 计算机\HKEY_CLASSES ...

  4. 电脑日常维护技巧(windows系统)

    一.磁盘检测 cmd-->chkdsk 二.磁盘修复 cmd-->sfc/scannow 三.删除缓存文件 运行-->%temp%

  5. hbase 集群写入能力优化-预分区、TTL的应用

    一.概述 hbase 写入优化除了参数配置之外,很大的一块要考虑避免region的热点问题,避免region 热点问题,主要的目的是提高hbase 数据表rowkey的分散.结合实际情况主要有以下几个 ...

  6. Undelivered Mail Returned to Sender

    电子邮件是使用电子邮件地址application@sample.com从Application发送的. 出于业务原因我们无法在此应用程序中更新/删除无效的外部电子邮件地址,因此响应出站电子邮件会生成许 ...

  7. 后端006_登录之后返回Token

    现在开始我们就可以写登录相关的东西了.首先登录相关的流程是这样的,前端输入用户和密码传给后端,后端判断用户名和密码是否正确,若正确,则生成JWT令牌,若不正确,则需要让前端重新输入,前端如果拿到了JW ...

  8. sqlserver 生成随机值

    随机生成100以内的整数 select top 10 number,ceiling(rand(checksum(newid()))*100) from master.dbo.spt_valueswhe ...

  9. Linux部分文件管理类命令

    1.创建空文件和刷新时间 touch命令可以用来创建空文件或刷新文件的时间 touch [OPTION]... FILE... 选项: -a 仅改变atime和ctime -m 仅改变mtime和ct ...

  10. v2即时通讯的应用

    1.建立webscoket.js: import Vue from 'vue' import { Message } from 'element-ui' let v = new Vue() v.$me ...