pandas - 数据分组统计

1.分组统计groupby()函数

对数据进行分组统计,主要适用DataFrame对象的groupby()函数。其功能如下。

        (1)根据特定条件,将数据拆分成组

        (2)每个组都可以独立应用函数(如求和函数sum(),均值函数mean()等)

        (3)将结果合并到一个数据结构中

示例1:

        根据“一级分类”对订单数据进行分组统计求和。

import pandas as pd  #导入pandas模块
df=pd.read_csv('JD.csv',encoding='gbk')
#抽取数据
df1=df[['一级分类','7天点击量','订单预定']]
df1=df1.groupby('一级分类').sum()       #分组统计求和

示例2:

        按照图书“一级分类”和“二级分类”对订单数据进行分组统计求和 

import pandas as pd  #导入pandas模块
df=pd.read_csv('JD.csv',encoding='gbk')
#抽取数据
df1=df[['一级分类','二级分类','7天点击量','订单预定']]
df2=df1.groupby(['一级分类','二级分类']).sum()    #分组统计求和

示例3:

        求各二级分类的七天点击量。首先按“二级分类”分类,而后进行分组统计求和。

df1 = df1.groupby('二级分类')['七天点击量'].sum()

2.对分组数据进行迭代

示例1:

        按照“一级分类”分组,并且输出每一分类中的订单数据

# 抽取数据
df1 = df[['一级分类',‘七天点击量’,‘订单预定’]]
for name, group in df.groupby('一级分类')
    print(name)
    print(group)

        其中name是‘一级分类’, group是其他数据。因此使用groupby()函数对多列进行分组,那么需要在for循环中指定多列。

3.对分组的某列或多列使用聚合函数

Python也可以实现像SQL中的分组聚合运算操作,主要通过groupby()函数与agg()函数实现。

        以下代码实现:

        1. 以'一级分类'分组,求分组后的平均值与和

        2.以'一级分类'分组,求分组后'七天点击量'的平均值与和,求'订单预定'的和

df1.groupby('一级分类').agg(['mean','sum'])

df1.groupby('一级分类').agg({'七天点击量':['mean','sum'],'订单预定':['sum']})

我们可以通过自定义函数实现数组分组统计。书本p110

        以下代码实现:

        1.统计一月份销售数据中,购买次数最多的产品,及其人均购买数,人均花费,总购买数,总花费。

df = pd.read_excel('1月.xlsx')
max1 = lambda x: x.value_counts(dropna=false).index[0]
df1 = df.agg({'宝贝标题':[max1],
              '数量':['sum','mean'],
              '卖家实际支付金额':['sum','mean']})
print(df1)

4.通过字典和Series对象进行分组统计

1.通过字典进行分组统计

        创建字典,df.groupby()函数通过字典内信息分组。 

import pandas as pd  #导入pandas模块
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.east_asian_width', True)
df=pd.read_csv('JD.csv',encoding='gbk')  #导入csv文件
df=df.set_index(['商品名称'])
#创建字典
mapping={'北京出库销量':'北上广','上海出库销量':'北上广',
         '广州出库销量':'北上广','成都出库销量':'成都',
         '武汉出库销量':'武汉','西安出库销量':'西安'}
df1=df.groupby(mapping,axis=1).sum()
print(df1)
2.通过Series对象进行分组统计

        创建一个Series对象,然后将Series对象传给groupby()函数实现数据分组。Series对象内放索引+值:如'北京出库销量',对应值'北上广'。

import pandas as pd  #导入pandas模块
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.east_asian_width', True)
df=pd.read_csv('JD.csv',encoding='gbk')  #导入csv文件
df=df.set_index(['商品名称'])
data={'北京出库销量':'北上广','上海出库销量':'北上广',
         '广州出库销量':'北上广','成都出库销量':'成都',
         '武汉出库销量':'武汉','西安出库销量':'西安',}
s1=pd.Series(data)
print(s1)
df1=df.groupby(s1,axis=1).sum()
print(df1)

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++多态基础

文章目录 1.多态概念2.多态使用3.多态析构4.多态隐藏5.多态原理5.1.单类继承5.1.1.问题一:非指针或引用无法调用多态5.1.2.问题二:同类对象共用虚表5.1.3.问题三:子类对象拷贝父类对象虚表5.1.4.问题四:打印虚表地址和虚表内容 5.…

【C++类和对象中:解锁面向对象编程的奇妙世界】

【本节目标】 1. 类的6个默认成员函数 2. 构造函数 3. 析构函数 4. 拷贝构造函数 5. 赋值运算符重载 6. const成员函数 7. 取地址及const取地址操作符重载 1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗&#xf…

Nginx默认会自动忽略请求头Headers里带下划线_的参数

起因:该接口设置了必须要传送app_code和app_secret才能正常访问。实际我在本地环境测试中,发现该接口是正常访问的,但是部署到正式系统之后发现,该接口一直提示app_code和app_secret不能为空。 后续排查:发现正式系统…

GitLab CI/CD 持续集成/部署 SpringBoot 项目

一、GitLab CI/CD 介绍 GitLab CI/CD(Continuous Integration/Continuous Deployment)是 GitLab 提供的一种持续集成和持续部署的解决方案。它可以自动化软件的构建、测试和部署过程,以便开发者更快地、更频繁地发布可靠的产品。 整体过程如…

Unity meta的一些常见属性

Unity会项目文件夹中的每个文件分配一个同名后缀为.meta的文件。 我们可以将meta文件理解不同文件之间的桥梁,通过它引擎可以管理不同文件之间的依赖关系。 使用TXT文本文件打开之后,大致属性如下: 其中常用的属性有guid、 assetBundleName以…

网络原理---网络初识

文章目录 网络发展史独立模式网络互连局域网LAN广域网WAN 网络通信基础IP地址端口号 认识协议什么是协议?协议分层为什么要分层?两种典型的分层方式:OSI七层TCP/IP五层 网络发展史 从我们出生以来,网络世界就已经纷繁错杂。我们虽…

大厂面试题-b树和b+树的理解

为了更清晰的解答这个问题,从三个方面来回答: a.了解二叉树、AVL树、B树的概念 b.B树和B树的应用场景 1.B树是一种多路平衡查找树,为了更形象的理解,我们来看这张图。 二叉树,每个节点支持两个分支的树结构&#xff…

阿里云二级域名绑定与宝塔Nginx反向代理配置

在阿里或者腾讯...各大域名商买好域名,备案解析好,目标URL,是真正的地址,比如一些端口,后者会自动填写。 注意ssl配置好,这里不要带反代端口

SoftwareTest4 - 咋设计一个好的测试用例

咋设计一个好的测试用例 一 . 设计测试用例的万能公式功能测试性能测试界面测试兼容性测试易用性测试安全测试案例案例1 : 对水杯设计测试用例案例 2 : 对登录页面设计测试用例 二 . 具体设计测试用例的方法2.1 等价类等价类的概念等价类的用例编写 2.2 边界值2.3 判定表2.4 场…

Rust学习日记(二)变量的使用--结合--温度换算/斐波那契数列--实例

前言: 这是一个系列的学习笔记,会将笔者学习Rust语言的心得记录。 当然,这并非是流水账似的记录,而是结合实际程序项目的记录,如果你也对Rust感兴趣,那么我们可以一起交流探讨,使用Rust来构建程…

国外住宅IP代理选择的8个方法,稳定的海外IP哪个靠谱?

一、国外住宅IP代理是什么? 代理服务器充当您和互联网之间的网关。它是一个中间服务器,将最终用户与他们浏览的网站分开。如果您使用国外代理IP,互联网流量将通过国外代理服务器流向您请求的地址。然后,请求通过同一个代理服务器…

【Redis】掌握篇--Redis与SSM进行整合

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Redis的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.Redis与SSM的整合 1.添加Redis依赖 2…

网络安全应急响应工具(系统痕迹采集)-FireKylin

文章目录 网络安全应急响应工具(系统痕迹采集)-FireKylin1.FireKylin介绍【v1.4.0】 2021-12-20【v1.0.1】 2021-08-09 2.客户端界面Agent支持的操作系统FireKylinAgent界面使用方式比较传统方式与FireKylin比较无法可达目标的场景应用对比 3.使用教程设置语言Agent配置&#x…

掌握文件批量改名的技巧:实现跨文件夹文件统一命名及编号的实用方法“

在日常工作中,我们经常需要处理大量的文件,而这些文件的名字可能各不相同,给我们的管理工作带来了很大的不便。为了解决这个问题,今天我们为您推荐一款全新的文件批量改名工具,它可以帮助您在不同文件夹里的文件进行统…

操作系统复习(3)处理机调度与死锁

一、概述 1.1了解调度的层次 调度是指,在一个队列中,按照某种方法(算法),选择一个合适的个体的过程。进程调度的功能就是按一定策略、动态地把CPU分配给处于就绪队列中的某一进程,并使之执行。 作业调度&…

【qemu逃逸】HWS2017-FastCP

前言 虚拟机用户名:root 虚拟机密码:无密码 本题有符号,所以对于设备定位啥的就不多说了,直接逆向设备吧。 设备逆向 在 realize 函数中设置一个时钟任务,并且可以看到只注册了 mmio,大小为 0x100000。…

小白必看!企业开源知识库管理系统优势和选择

在当今信息爆炸的时代,企业面临着海量的知识和信息需要管理和利用。为了提高团队的协作效率、促进知识共享和创新,越来越多的企业开始关注和采用开源企业知识库管理系统。这种系统为企业提供了一个集中化的平台,用于存储、组织和分享知识资产…

fio数据整理之二

fio数据简单抓取 上文我们完成了一些fio output数据的简单抓取,本文将针对抓取的数据做进一步的处理,输出到表格之中,方便我们查看,统计结果。 本文先使用最简单的方法创建csv档案 我们现有个基本认知,在csv档案中&am…

CBAM:Convolutional Block Attention Module

CBAM(Convolutional Block Attention Module)是一种深度学习领域的注意力机制,旨在增强卷积神经网络对图像特征的建模和表示能力。CBAM引入了通道和空间两种不同的注意力机制,使模型能够动态调整特征图的权重,以适应不…

MVC、MVP、MVVM区别

MVC、MVP、MVVM区别 MVC(Model-View-Controller) 。是一种设计模式,通常用于组织与应用程序的数据流。它通常包括三个组件:模型(Model)、视图(View)和控制器(Controller&…