数据分析必备:一步步教你如何用Pandas做数据分析(14)

1、Pandas 聚合

Pandas 聚合的操作实例
创建滚动,扩展和ewm对象后,可以使用多种方法对数据执行聚合。

1.1、对DataFrame聚合

我们创建一个DataFrame并对其应用聚合

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4),index = pd.date_range('6/1/2024', periods=10),columns = ['A', 'B', 'C', 'D'])
print(df)
r = df.rolling(window=3,min_periods=1)
print(r)

运行结果

                   A         B         C         D
2024-06-01  1.441992  0.507236 -1.279692 -0.283955
2024-06-02  0.732984 -1.022779 -1.188695  0.899738
2024-06-03  0.363206 -0.610489  0.987919 -0.556534
2024-06-04  1.760517  0.513175 -1.952190 -0.371333
2024-06-05 -0.975915  0.941488  0.116632 -1.384646
2024-06-06  0.278110  2.193880  0.434967 -3.136830
2024-06-07  0.998929 -1.174505 -0.512467 -0.076176
2024-06-08 -0.836676  0.255251 -0.283001 -0.069504
2024-06-09 -1.042460  1.008820  1.203172  1.790213
2024-06-10 -0.000309  0.327030  0.235055  0.137578
Rolling [window=3,min_periods=1,center=False,axis=0,method=single]

我们可以通过将函数传递给整个DataFrame进行聚合,也可以通过标准的get item方法选择一列。

1.2、对Dataframe聚合

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

运行结果

                   A         B         C         D
2024-06-01  0.137541 -0.666472 -0.512313  0.124189
2024-06-02 -0.274006  0.546432  0.804729  0.444257
2024-06-03  0.656569  1.087017  0.546081 -0.645019
2024-06-04  0.287474 -0.037974  0.646037 -0.116104
2024-06-05  0.159287  0.242253  1.092559 -0.437320
2024-06-06 -1.081650  0.408552  0.273044 -0.802035
2024-06-07 -1.384118  0.366630  0.503155 -1.720862
2024-06-08  0.016059 -0.177049  0.066783  0.138181
2024-06-09  0.189092  1.099488  0.788672 -0.643970
2024-06-10  0.504482  0.307674 -1.186342 -1.958610A         B         C         D
2024-06-01  0.137541 -0.666472 -0.512313  0.124189
2024-06-02 -0.136465 -0.120041  0.292416  0.568445
2024-06-03  0.520104  0.966977  0.838497 -0.076574
2024-06-04  0.670037  1.595475  1.996847 -0.316866
2024-06-05  1.103330  1.291296  2.284677 -1.198443
2024-06-06 -0.634889  0.612831  2.011640 -1.355459
2024-06-07 -2.306481  1.017435  1.868758 -2.960217
2024-06-08 -2.449709  0.598133  0.842982 -2.384716
2024-06-09 -1.178967  1.289068  1.358610 -2.226651
2024-06-10  0.709633  1.230113 -0.330886 -2.464399

1.3、将聚合应用于Dataframe的单列

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

运行结果

                   A         B         C         D
2024-06-01  1.337425 -2.008430  0.487408  0.619035
2024-06-02 -1.057971 -0.454410  1.029195  1.031153
2024-06-03  0.180957 -1.598784  0.235843 -1.234636
2024-06-04 -0.215478 -0.283628 -0.159067 -0.441236
2024-06-05  0.568535  0.468742 -0.981265 -0.225904
2024-06-06  1.251656  0.045891  0.533743 -1.809453
2024-06-07 -0.118663  0.430278 -1.811598  1.199368
2024-06-08  1.103233 -0.909900  0.184519  0.363605
2024-06-09  0.499495  1.120610 -1.283629  0.073462
2024-06-10  1.182883 -0.573653  0.291168 -1.079381
2024-06-01    1.337425
2024-06-02    0.279453
2024-06-03    0.460411
2024-06-04   -1.092492
2024-06-05    0.534014
2024-06-06    1.604712
2024-06-07    1.701527
2024-06-08    2.236225
2024-06-09    1.484064
2024-06-10    2.785611
Freq: D, Name: A, dtype: float64

1.4、将聚合应用于DataFrame的多个列

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

运行结果

                A         B         C         D
2024-06-01 -0.315264 -1.007784 -0.422830  0.240110
2024-06-02 -0.899798  1.220554  0.043764 -0.724214
2024-06-03 -0.506266 -1.114019  0.970437 -1.436598
2024-06-04 -0.567130 -0.358241 -2.330796  0.720396
2024-06-05  0.002677  0.358061 -0.191730 -2.024825
2024-06-06 -1.241444 -0.185388  1.539475 -0.398289
2024-06-07 -0.394370  0.899715 -0.235603  2.083027
2024-06-08 -0.063937 -0.703623 -0.771960  1.069107
2024-06-09 -0.997480 -0.145053 -2.013109  0.630082
2024-06-10 -1.323366  0.407704 -1.958234 -0.136122A         B
2024-06-01 -0.315264 -1.007784
2024-06-02 -1.215063  0.212770
2024-06-03 -1.721329 -0.901249
2024-06-04 -1.973195 -0.251705
2024-06-05 -1.070719 -1.114198
2024-06-06 -1.805897 -0.185567
2024-06-07 -1.633136  1.072388
2024-06-08 -1.699751  0.010704
2024-06-09 -1.455787  0.051039
2024-06-10 -2.384783 -0.440971

1.5、在数据框的单列上应用多个功能

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

运行结果

                  A         B         C         D
2024-06-01 -1.353324  0.127682 -0.200629  0.450458
2024-06-02  0.949610 -1.400609  0.627148 -0.043679
2024-06-03  0.033043  0.892801 -0.425507  0.880760
2024-06-04 -0.717365 -0.126336 -0.688569  0.406762
2024-06-05 -1.432076  1.305415  0.316325  1.700087
2024-06-06 -0.130123  1.470843  0.255068 -0.466856
2024-06-07 -0.259649  0.972374 -0.294581 -0.246689
2024-06-08  0.451554  0.726053  1.198266 -0.721875
2024-06-09 -1.328514 -0.188786  0.499362 -0.998840
2024-06-10 -0.235946  0.063362 -1.474905 -1.410311sum      mean
2024-06-01 -1.353324 -1.353324
2024-06-02 -0.403714 -0.201857
2024-06-03 -0.370671 -0.123557
2024-06-04  0.265288  0.088429
2024-06-05 -2.116398 -0.705466
2024-06-06 -2.279563 -0.759854
2024-06-07 -1.821847 -0.607282
2024-06-08  0.061783  0.020594
2024-06-09 -1.136609 -0.378870
2024-06-10 -1.112906 -0.370969

1.6、在数据框的多个列上应用多个功能

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

运行结果

                 A         B         C         D
2024-06-01  0.688572  0.335234  0.752168  0.961081
2024-06-02  1.085028  1.130616 -0.536655  0.779873
2024-06-03  0.867040  0.676979 -0.389117 -2.827168
2024-06-04  0.964311  0.861692 -0.421859 -1.080160
2024-06-05 -0.203971 -1.289974 -0.553891 -0.809878
2024-06-06  1.126439  1.169267 -2.039094 -1.062846
2024-06-07  0.442940 -2.056051  0.917150 -0.204623
2024-06-08 -0.441348 -0.131800 -0.884501 -0.733120
2024-06-09 -0.529172 -0.652189 -1.366874 -0.988671
2024-06-10  0.189241  0.030703  0.020499  0.532722A                   B          sum      mean       sum      mean
2024-06-01  0.688572  0.688572  0.335234  0.335234
2024-06-02  1.773601  0.886800  1.465849  0.732925
2024-06-03  2.640640  0.880213  2.142829  0.714276
2024-06-04  2.916379  0.972126  2.669287  0.889762
2024-06-05  1.627379  0.542460  0.248697  0.082899
2024-06-06  1.886778  0.628926  0.740985  0.246995
2024-06-07  1.365408  0.455136 -2.176759 -0.725586
2024-06-08  1.128031  0.376010 -1.018584 -0.339528
2024-06-09 -0.527580 -0.175860 -2.840041 -0.946680
2024-06-10 -0.781280 -0.260427 -0.753286 -0.251095

1.7、将不同的功能应用于数据框的不同列

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

运行结果

                  A         B         C         D
2024-06-01  0.024827 -0.020137  1.930786 -0.481966
2024-06-02  0.301334  0.295961 -0.983852  0.401034
2024-06-03  0.025677  0.625714  0.948775 -0.490254A         B
2024-06-01  0.024827 -0.020137
2024-06-02  0.326161  0.137912
2024-06-03  0.351838  0.300513

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/846072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jpeg编码学习

正点原子stm32教程提到过jpeg解码库libjpeg,但是没有提到jpeg编码,我也好奇jpeg编码怎么实现,用代码怎么生成jpeg文件的。所以最近学习了jpeg编码,在这里做记录。 参考文章 jpeg图片格式详解 https://blog.csdn.net/yun_hen/art…

跨越障碍:解决复杂网页数据提取的挑战

在数字化时代,网页数据提取已成为获取信息的重要途径。然而,随着网页设计的日益复杂化,从这些页面中提取有用数据的任务也变得更加困难。本文将探讨在面对复杂网页时,如何有效地提取所需数据,并分析可能遇到的挑战及其…

一文了解-电子公司组织架构

以下仅为一般研发设计公司的岗位, 不包括工厂。 总经理 柏柏有话说: 不多说,人中龙凤、群山俯首、众神膜拜! 项目总监 产品总监 软件总监 测试总监 销售总监 人事总监 财务总监 采购总监 柏柏有话说: 这么说吧, 柏柏的前同龄同事…

共计3万字!从零开始创建一个小规模的稳定扩散模型!

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#x…

MYSQL数据库细节详细分析

MYSQL数据库的数据类型(一般只需要用到这些) 整型类型:用于存储整数值,可以选择不同的大小范围来适应特定的整数值。 TINYINTSMALLINTMEDIUMINTINTBIGINT 浮点型类型:用于存储带有小数部分的数值,提供了单精度(FLOA…

《从0开始搭建实现apollo9.0》系列八 泊车模块解读

《从0开始搭建实现apollo9.0》系列八 泊车模块解读 泊车规划模块位置 modules/planning/scenarios/valet_parking/泊车阶段的开始条件: planning command里存在泊车命令距离泊车点距离parking_spot_range_to_start以内 配置文件 pipeline.pb.txt可以看到泊车分为…

YOLOv5改进 | 卷积模块 | 将Conv替换为轻量化的GSConv【原理 + 完整代码】

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 目标检测是计算机视觉中一个重要的下游任务。对于边缘盒子的计算平台来说,一个大型模型很难实现实时检测的要求。而且&#xff0…

全志H616 通过Cedrus和v4l2_request API实现硬件编解码加速(香橙派zero2)

编译安装或加载cedrus驱动模块,加载v4l2-mem2mem Sunxi-Cedrus 致力于为全志 SoC 提供硬件加速的视频解码和编码支持,并将其引入主线 Linux 内核。此外,还为典型的基于 GNU/Linux 的系统提供了与内核驱动程序接口的其他用户空间组件。 Sunx…

北邮22级信通院DSP:IIR_DF系统3.0版:从H(p)到H(s):一种更为严谨精确的运算模式

北邮22信通一枚~ 跟随课程进度更新北邮信通院DSP的笔记、代码和文章,欢迎关注~ 获取更多文章,请访问专栏: 北邮22级信通院DSP_青山入墨雨如画的博客-CSDN博客 承接上一篇博客 北邮22级信通院DSP:IIR_DF系统2.0版:…

用Python优雅地写LaTeX

latexify用于生成 LaTeX 数学公式的 Python 库。LaTeX 是一种基于 ΤΕΧ 的排版系统,对于展示复杂的数学公式表现极为出色。该项目可以用 Python 函数,轻松生成复杂的 LaTeX 数学公式描述。 安装库 查看版本号 0.4.2 案例演示 我们需要以装饰器的形式…

深度学习训练时混合精度的作用

在深度学习训练过程中,混合精度(Mixed Precision)是指同时使用不同的数值精度(如16位浮点数和32位浮点数)来进行计算。混合精度训练在深度学习中有以下几个主要作用: 1. 提高训练速度 描述:使…

Nginx实战:浏览器缓存

浏览器缓存 浏览器缓存是为了加速浏览,浏览器在用户磁盘上,对最近请求过 的文档进行存储。当访问者再次请求这个页面时,浏览器就可以从 本地磁盘显示文档,这样,就可以加速页面的阅览,缓存的方式节 约了网络…

报表工具DataEase技术方案(二)

一、DataEase报表功能开发流程 1. 创建数据源 2. 创建数据集 可以创建多种来源的数据集,这里以SQL数据集为例。 数据集SQL中可以添加参数,仪表板展示数据时可以根据参数来筛选数据。 数据集添加计算字段 3. 创建仪表板 (1)组合…

参数设置错误导致的 OOM

参数设置错误导致的 OOM 前言事故分析事故原因事故复盘 前言 2024 年 5 月 10 日 14 时 19 分,C 公司开发人员向 A 公司开发人员反映某开放接口从 2024 年 5 月 10 日 14 时许开始无法访问和使用。该系统为某基础数据接口服务,基于 HTTP 协议进行通信。…

linux安装MYSQL后,利用grep查看MYSQL初始密码

问题描述 linux安装mysql获取初始密码 解决方案: 通过查看日志获取初始密码 grep "password" /var/log/mysqld.loggrep 是一个用于在文本中查找特定字符串的工具。 /var/log/mysqld.log 是要搜索的文件路径,"password" 是要查找的…

CMake的作用域:public/private/interface

在 CMake 中,public、private和 interface是用来指定目标属性的作用域的关键字,这三个有什么区别呢?这些关键字用于控制属性的可见性和传递性,影响了目标之间的依赖关系和属性传递。 public 如果在一个目标上使用 public关键字时…

CTFHUB-信息泄露-目录遍历和PHPINFO

目录 目录遍历 PHPINFO 目录遍历 很简单,挨着把每个目录都点开看一下 发现2目录下有个 flag.txt 文件,点开发现了本关的flag PHPINFO 这关也很简单,进来之后是一个phpinfo页面,按 CTRL F键打开查询,输入flag&#…

window本地部署Dify

Dify与之前的MaxKB不同,MaxKB可以实现基础的问答以及知识库功能,但是如果要开发一个Agent,或者工作流就还是需要额外开发,而Dify 是一个开源 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、代理功能、模型管理、可观…

一个不错的讲解做竞品分析的方法

比如选了竞品1,竞品2,然后每个功能项,选定1个做标准被比较的锚点,比如外观,用竞品2,设置为1分,然后看竞品1,在外观的评分上,相比竞品2,是分数低点还是高点&am…

缓冲区溢出攻击

缓冲区溢出攻击 缓冲区溢出概述基础概念缓冲区溢出根源缓冲区溢出危害性&普遍性 缓冲区溢出攻击原理内存分配模式缓冲区溢出攻击缓冲区溢出攻击原理缓冲区溢出攻击分类堆栈溢出堆栈相关知识攻击原理 堆溢出攻击堆简介堆溢出DWORD SHOOT BSS段溢出 缓冲区溢出攻击防御措施防…