数据分析10——Pandas中格式化/分组聚合

news2024/11/15 12:51:14

0、前言:

  • numpy是生成和处理array类型矩阵数据的工具,而pandas中的series(一维矩阵)和dataframe(二维矩阵)数据类型可以来自numpy生成的数据,pandas的重要之处在于他可以导入和处理多种格式类型的数据,其中还有很多方法可以使用。

1、round函数:

  • round函数在series中有,在pandas中也有
  • 保留两位小数:df.round(2)
  • 对于多列数据采取不同的保留位数:df.round({‘A’: 1, ‘B’: 2}) # A列保留1位,B列保留2位

2、apply函数:

  • Series和DataFrame对象均有此方法
  • apply函数不支持对多列数据进行操作
  • 指定列保留0位小数的百分比:df[‘A’].apply(lambda x: ‘{:.0%}’.format(x))
  • 指定列保留2位小数的百分比:df[‘A’].apply(lambda x: ‘{:.2%}’.format(x))
  • 指定列设置千位分隔符:df[‘A’].apply(lambda x: ‘{:,}’.format(x) # 设置千分位之后数据就不再是数值了而是字符串

3、applymap函数:

  • DataFrame对象的方法,不支持单列的操作
  • 指定多列保留小数操作:df[[‘A’, ‘B’, ‘C’]].applymap(lambda x: ‘{:.2%}’.format(x))
  • 指定多列设置千分位分隔符:df[[‘A’, ‘B’, ‘C’]].applymap(lambda x: ‘{:,}’.format(x)) # 设置千分位之后数据就不再是数值了而是字符串

4、map方法

  • Series对象的方法,不支持多列的操作
  • 指定列保留2位小数的百分比:df[‘A’].map(lambda x: ‘{:.2%}’.format(x))
  • map主要用于数据映射:比如在数据库中男女用数字1和2表示,如果要进行报表汇报,就要通过map来把1和2映射为男和女:df[‘性别’].map(l{‘男’:1, ‘女’:2})
  • 概念1

5、数据分组聚合

  • 原始数据表
    在这里插入图片描述

  • 让数据根据一级分类列索引分组,然后统计每个分组中数量列索引的和:df.groupby(‘一级分类’, as_index=False)[‘数量’].sum()
    在这里插入图片描述

  • 多列分组,多列聚合:df.groupby([‘一级分类’, ‘二级分类’])[[‘数量’, ‘金额’]].sum().reset_index()
    在这里插入图片描述

  • 注意分组之后的数据仍然是DataFrame数据类型


6、groupby+agg函数

  • agg函数是聚合函数,通过agg函数就能对分组之后的数据有针对性的使用其他函数了。
# 例如:我想要获取一级分类之后,数量的均值,数量的求和值~
df.groupby('一级分类').agg(
    数量_均值=('数量', 'mean'),
    数量_求和=('数量', 'sum'),
    金额_求和=('金额', 'sum'),
    金额_均值=('金额', 'mean'))

在这里插入图片描述

  • 自定义函数分组统计
# 统计频数最高(行计数最多)的二级分类
# 以及总数量和总金额
# df['二级分类'].value_counts():该函数可以获取二级分类中所有数据出现次数由高到低的排序,基于此通过index[0]就能获取最高频次的二级分类数据

df.agg({
    '数量': 'sum',
    '金额': 'sum',
    '二级分类': lambda x: x.value_counts().index[0]
})

# 以一级分类为分组,统计销售数量最多的二级分类
'''
普通方法:
df[df['一级分类'] == '办公'].groupby('二级分类')['数量'].sum().idxmax()
df[df['一级分类'] == '技术'].groupby('二级分类')['数量'].sum().idxmax()
df[df['一级分类'] == '家具'].groupby('二级分类')['数量'].sum().idxmax()
整合语句:
grouped = df.groupby('一级分类')	# grouped 数据类型是DataFrameGroupBy,没法直接再次用groupby
grouped.apply(lambda x: x.groupby('二级分类')['数量'].sum().idxmax())
'''

7、groupby+transform函数

  • 前言:在 Pandas 中,transform 函数是对 DataFrame 或 Series 的分组数据进行变换的一种方法。它可以返回一个与原始输入数据形状相同的 pandas 数据结构
  • transform 函数可以传递一个函数或 lambda 表达式作为参数,在分组操作时对每个小组执行该函数,得到按小组索引对应的输出值(如平均值或标准差等),然后将这些输出值“广播”回原始数据中对应的位置。
# 统计各省的金额以及占所属大区的比例
# 先以大区和省份分组对金额求和
tb = df.groupby(['大区', '省份'])['金额'].sum().reset_index()
# df.groupby(['大区', '省份']).agg({'金额': 'sum'}).reset_index()
# 再以大区分组求和金额,并应用transform得到大区金额
tb['大区金额'] = tb.groupby('大区')['金额'].transform('sum')
tb['金额占比'] = tb['金额'] / tb['大区金额']
tb['金额占比'] = tb['金额占比'].apply(lambda x: '{:.1%}'.format(x))

在这里插入图片描述

  • 多列合并计算
    在这里插入图片描述

8、pivot_table透视表

  • 前言:这部分知识不太了解,先把一些关键参数记录下来,后面用到了可以参考
# data:DataFrame对象
# values:Excel透视表的值
# index:Excel透视表的行
# columns:Excel透视表的列
# aggfunc:Excel透视表的计算类型
# fill_value:填充空值
# margins:是否显示合计
# dropna:是否删除缺失行(如整行缺失)
# margins_name:合计的别名
# df.pivot_table()
pd.pivot_table(
    data=df,
    index=['大区', '省份'],
    columns='一级分类',
    values=['数量', '金额'],
    aggfunc={'数量': 'sum', '金额': 'mean'},
    margins=True,
    margins_name='总计',
    fill_value=0,
)

9、crosstab交叉表

  • 前言:这部分知识不太了解,先把一些关键参数记录下来,后面用到了可以参考
# index: 行索引,Series对象
# columns: 列索引,Series对象
# values: 聚合字段,Series对象
# rownames: 行索引的别名
# colnames: 列索引的别名
# aggfunc: 聚合函数
# margins: 是否显示合计
# margins_name: 合计的别名
# dropna: 是否删除缺失行(如整行缺失)
# normalize: Excel透视表“值显示方式”
# normalize=True,总计百分比
# normalize='all',总计百分比
# normalize='index',行汇总百分比
# normalize='columns',列汇总百分比
pd.crosstab(
    index=df['大区'],
    columns=df['一级分类'],
    values=df['数量'],
    aggfunc='sum',
    margins_name='总计',
    normalize='columns'
)

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

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

相关文章

GPT大语言模型Alpaca-lora本地化部署实践【大语言模型实践一】 | 京东云技术团队

模型介绍 Alpaca模型是斯坦福大学研发的LLM(Large Language Model,大语言)开源模型,是一个在52K指令上从LLaMA 7B(Meta公司开源的7B)模型微调而来,具有70亿的模型参数(模型参数越大…

Pinia 上手使用(store、state、getters、actions)

参考链接:https://juejin.cn/post/7121209657678364685 Pinia官方:https://pinia.vuejs.org/zh/introduction.html 一、安装 npm i pinia -S二、main.js 引入 import { createApp } from "vue" import App from "./App.vue" impor…

[FMC152]AD9208的2 路2GSPS/2.6GSPS/3GSPS 14bit AD 采集FMC 子卡模块中文版本设计资料及调试经验

板卡概述 FMC152 是一款基于VITA57.1 标准的,实现2 路14-bit、2GSPS/2.6GSPS/3GSPS AD 采集FMC 子卡模块。该模块可直接与FPGA 载卡配合使用,板卡ADC 器件采用ADI 公司的AD9208 芯片,,与ADI 公司的AD9689 可以实现PIN 脚兼容。该…

Android平台如何实现外部RTSP|RTMP流注入轻量级RTSP服务模块(内网RTSP网关)

技术背景 今天分享的是外部RTSP或RTMP流,拉取后注入到本地轻量级RTSP服务模块,供内网小并发场景下使用,这里我们叫做内网RTSP网关模块。 内网RTSP网关模块,系内置轻量级RTSP服务模块扩展,完成外部RTSP/RTMP数据拉取并…

挖呀挖和ChatGPT-UMLChina建模知识竞赛第4赛季第1轮

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>> 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答,先全部答对者得分,本轮总分为3分。 1. [单选] 以黄老师版“挖…

opengauss 的回归测试

目录 一、回归测试说明 二、单独执行测试用例(开发调试) 一、回归测试说明 opengauss/postgresql 的回归测试,通过执行SQL比较输出打印,判断代码修改是否改变了其它功能逻辑。 OG的回归测试大体上和PG类似,主要是通…

wordpress服务器搬家和更换域名的几个步骤

问题解说 其实wordpress换域名需要到数据库进行操作的,首先,你换域名也是有几种情况的; 换空间换域名 如果是上述问题,那么将FTP整站打包外,还需要将数据库里的所有数据表也打包,数据库是进phpmyadmin里打包的,两个都打包后,然后分别上传到新的空间ftp和数据库里,然…

什么是投入产出比(ROI)以及如何提升投入产出比?

投入产出比(ROI)是一种衡量企业或项目投资效益的指标,它可以帮助企业评估投资回报情况,并制定更加明智的投资决策。本文将为大家介绍什么是投入产出比(ROI)以及如何提升投入产出比。 一、什么是投入产出比&…

【计算机网络 - 第四章】网络层:数据平面

目录 一、网络层概述 1、主要作用 2、控制平面方法 3、网络层提供的两种服务 二、路由器工作原理 1、路由器总体结构 2、输入、输出端口处理 (1)输入端口 (2)输出端口 3、交换 (1)经内存交换 &…

后端实习产出--通过自定义注解、反射、进行切面编程实现一个转化工具

前置知识: 需要会自定义注解方法自定义注解字段AOP切面编程,反射等... 核心代码结构: 核心代码实现: package com.***.config;import cn.hutool.core.util.StrUtil; import com.google.common.collect.Maps; import com.***.co…

【pyq文案】可可爱爱の朋友圈文案

1.我在该生儿育女的年纪,选择了生椰拿铁 2.我妈年轻时候工资2000,我现在工资也2000,这就叫薪火相传 3.不要讨厌自己,有什么事怪星座生肖八字和mbti就好了 4.人是会和动物共情的,我开始理解急每天早起,然…

FL Studio2023最新中文免费版水果音乐制作软件

FL Studio(水果音乐制作软件)是一款强大的音乐制作编曲软件,非常容易上手。FL让你的计算机就像是全功能的录音室,漂亮的大混音盘,先进的创作工具,让你的音乐突破想象力的限制。一款强大的音乐制作软件,可以进行音乐编曲…

云计算期中测试

云计算期中测试 文章目录 云计算期中测试一、前言二、第一题1、命令方式2、java API方式 三、第二题1、创建CSV文件并将其上传到HDFS2、编写利用MapReduce框架的java代码3、打包java项目4、在Hadoop集群上提交jar文件来运行MapReduce作业 一、前言 在实验开始之前我们需要在虚…

MySQL高级_第05章_存储引擎

MySQL高级_第05章_存储引擎 1. 查看存储引擎 查看mysql提供什么存储引擎: show engines ; show engines \G ; 显式如下: *************************** 1. row *************************** Engine : InnoDB Support: DEFAULT Comment : Su…

企业管理OA系统在企业数字化转型中带来的变化,简直难以想象

目前企业管理面临到哪些痛点 1.信息孤岛:企业内部信息流动不畅,各部门数据独立,互相之间信息难以共享和沟通。 2.流程繁琐:企业业务流程较为繁琐,审批流程漫长,给业务员和经理带来不必要的工作压力。 3.…

Hbase入门篇03---Java API使用,HBase高可用配置和架构设计

Hbase入门篇03---Java API使用,HBase高可用配置和架构设计 需求环境搭建表的CRUD坑命令执行卡住不动 ?RegionServer只在本地127.0.0.1监听16020端口导致外网连接被拒RegionServer所在主机的/etc/hosts文件存在额外的回环地址映射信息,导致客户端拿到无法…

亚马逊云科技使用Inf2实例运行GPT-J-6B模型

在2019年的亚马逊云科技re:Invent上,亚马逊云科技发布了Inferentia芯片和Inf1实例这两个基础设施。Inferentia是一种高性能机器学习推理芯片,由亚马逊云科技定制设计,其目的是提供具有成本效益的大规模低延迟预测。时隔四年,2023年…

生成bean的注解@Component极其衍生和@ComponentScan@Configuration

Component Spring 2.5 以后,除了提供基本的 Component 注解之外,还提供了 Service Controller Repository 三个注解。在 Spring 源码中,后面三个注解都在开始部分引入了 Component 注解,除此以外这四个注解的源码内容没有任何区别…

Json介绍

文章目录 1. 什么是 JSON?2. JSON语法格式3. JSON在Java中的用途3.1 FastJSON1. FastJSON概述与下载2. FastJSON常用方法 3.2. Jackson1. Jackson下载与使用2. Jackson常用类与方法3. ObjectMapper类常用方法 1. 什么是 JSON? JSON:JavaScript Object N…

C语言函数大全-- _w 开头的函数(2)

C语言函数大全 本篇介绍C语言函数大全-- _w 开头的函数 1. _wexecl 1.1 函数说明 函数声明函数功能int _wexecl(const wchar_t *path, const wchar_t *arg0, ... /* , const wchar_t *arg1, ..., NULL */);它是一个 Windows 平台下的 C 标准库函数,用于在新进程…