python数据分析——分组操作1

参考资料:活用pandas库

1、简介

        借助“分割-应用-组合”(split-apply-combine)模式,分组操作可以有效地聚合、转换和过滤数据。

        分割:基于键,把要处理的数据分割为小片段。

        应用:分别处理每个数据片段。

        组合:把处理结果组合成新的数据集。

        该模式的强大在于,可以将原始数据分割成独立的片段分别进行处理。pandas的groupby工作方式与sql语言的group by相同。

2、聚合

        聚合也称“汇总”(summarization),是指某种形式的数据归约。

(1)基本的单变量分组聚合

# 导入库
import pandas as pd
# 加载Gapminder数据集
df=pd.read_csv(r"...\data\gapminder.tsv",sep='\t')
# 计算每年平均预期寿命
avg_life_exp_by_year=df.groupby('year').lifeExp.mean()
print(avg_life_exp_by_year)

        针对上面的例子,可以认为groupby语句创建了一个子集,里面含有各列的唯一值(或者列的唯一对)。

(2)pandas内置的聚合方法

pandas方法numpy/scipy函数说明
countnp.count_nonezero频率统计(不包含NaN值)
size频率统计(包含NaN值)
meannp.mean求平均值
stdnp.std样本标准差
minnp.min最小值
quantile(q=0.25)np.percentile(q=0.25)下四分位数
quantile(q=0.50)np.percentile(q=0.50)中位数
quantile(q=0.75)np.percentile(q=0.75)上四分位数
maxnp.max最大值
sumnp.sum求和
varnp.var无偏方差
semscipy.stats.sem平均数标准误
describescipy.stats.describe计数、平均数、标准差、25%、50%、75%分位数、最大值
first返回第一行
last返回最后一行
nth返回第n行(python从0开始计数)
# 根据所在的洲分组,针对每个组对预期寿命做汇总统计
continent_describe=df.groupby('continent').lifeExp.describe()
print(continent_describe)

(3)聚合函数

        除了直接调用聚合方法,还可以调用agg方法或aggregate方法,传入想用的聚合函数。使用agg或aggregate时,需要使用上表中numpy/scipy函数。

# 导入numpy库
import numpy as np
# 计算各洲的平均预期寿命
# 使用np.mean函数
cont_le_agg=df.groupby('continent').lifeExp.agg(np.mean)
print(cont_le_agg)
# agg和aggregate功能相同
cont_le_agg2=df.groupby('continent')['lifeExp'].aggregate(np.mean)
print(cont_le_agg2)

# 自定义函数的聚合
# 创建自定义函数
def my_mean_diff(values,diff_value):"""计算平均值和diff_value之差"""n=len(values)sum=0for value in values:sum+=valuemean=sum/nreturn (mean-diff_value)# 计算全球平均预期寿命的平均值
global_mean=df.lifeExp.mean()
print(global_mean)
# 还有多个参数的自定义聚合函数
agg_mean_diff=df.groupby('continent').lifeExp.\
agg(my_mean_diff,diff_value=global_mean)
print(agg_mean_diff)

(4)同时传入多个函数

        如果想同时计算多个聚合函数,可以先把他们全部放入一个python列表,然后把整个列表传入agg或aggregate中。这里所用函数仍然是上表中的sumpy/scipy函数。

# 按洲计算lifeExp的非零个数、平均值和标准差
gdf=df.groupby('continent').lifeExp.agg([np.count_nonzero,np.mean,np.std])
print(gdf)

(5)在agg/aggregate中使用字典

        对于分组的DataFrame指定的dict时,键是DataFrame的列,值是聚合计算使用的函数。这种方法允许对一个或多个变量进行分组,对不同列同时使用不同的聚合函数。

        可以在groupby之后把一个dict传入Series中,直接做汇总统计并将其返回,dict的键是新的列名,这与把dict传入分组的DataFrame时的行为不同,不建议使用。

# 对DataFrame使用字典聚合不同列
# 对于每一年,计算平均值lifeExp、中位数pop和中位数gdfPercap
gdf_dict=df.groupby('year').agg({"lifeExp":"mean","pop":"median","gdpPercap":"median"})
print(gdf_dict)

gdf=df.groupby('year')['lifeExp'].\
agg([np.count_nonzero,np.mean,np.std]).\
rename(columns={'count_nonzero':'count','mean':'avg','std':'std_dev'}).\
reset_index()  # 返回一个普通DataFrameprint(gdf)

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

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

相关文章

Linux shell编程学习笔记51: cat /proc/cpuinfo:查看CPU详细信息

0 前言 2024年的网络安全检查又开始了,对于使用基于Linux的国产电脑,我们可以编写一个脚本来收集系统的有关信息。对于中央处理器CPU比如,我们可以使用cat /proc/cpuinfo命令来收集中央处理器CPU的信息。 1. /proc/cpuinfo 保存了系统的cpu…

树莓派开箱

1.树莓派4B配置 CPU:64位1.5GHZ四核处理器。 GPU:Broadcom VideoCore VI500MHZ 蓝牙5.0 电源Type C(5V 3A),也可以使用排针链接5V锂电池最大放电电流必须达到3A。 还有千兆以太网等以后用到再说。 接下来进入文章重点 2.镜像文件烧录 前期准备:1…

AI赋能数字人:打造与语音节奏完美匹配的高质量手势动画

在数字化时代,人机交互正以前所未有的速度进化,而AI数字人的发展正是这一进程中的重要里程碑。近期,一项旨在根据语音内容自动生成匹配手势的技术方案引起了广泛关注,该技术不仅增强了数字人的表现力,也为远程沟通、教育、娱乐等多个领域带来了革新性的应用潜力。本文将深…

【leetcode1944--队列中可以看到的人数】

有n人排成一个队列,从左到右编号为0到n-1,height数组记录每个人的身高,返回一个数组,记录每个人能看到几个人。 类比:山峰问题,高的后面的矮的看不见。 从后往前,最后一个元素入栈&#xff0c…

Apifox 更新|编排模式、Markdown 编辑器升级、自动申请 SSL 证书、用户反馈问题优化

Apifox 新版本上线啦! 看看本次版本更新主要涵盖的重点内容,有没有你所关注的功能特性: 自动化测试新增「编排模式」Markdown 编辑器全新升级返回响应直接预览 PDF 及视频自动申请 SSL 证书支持配置自定义域名的子目录流式接口支持筛选和清…

Canny算子

Canny算子_百度百科 (baidu.com)https://baike.baidu.com/item/Canny%E7%AE%97%E5%AD%90/8821789?frge_ala 图像处理中最经典的边沿检测算法: Canny边缘检测_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1U4411277i/?spm_id_from333.1007.top_right_bar_…

基于模糊PID控制器的汽车电磁悬架控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于模糊PID控制器的汽车电磁悬架控制系统simulink建模与仿真。 2.系统仿真结果 上面的仿真结果是无控制器和LQG的对比,以及有控制器和LQG的对比仿真。 3.核心程…

win10桌面右键-新建文件夹-死机-修复

死机->任务管理器->重新启动 任务管理器:重新启动“文件资源管理器”或者关闭“文件资源管理器” 快捷键:CtrlAltEsc 关闭后桌面黑屏重新启动:文件->运行新任务->输入 explorer ->确定 死机-> 事件查看器->排查错误 …

Qt串口异步通信案例(从机线程)

文章目录 串口线程类初始化串口类打开串口并发送数据析构函数 窗口设置窗口函数实现 串口线程类 SlaveThread(从机线程) 目的:等待并响应来自主机的请求,然后发送预设的响应数据。 关键行为:线程启动后,通过…

STL库--string

目录 string的定义 string中内存的访问 string常用函数实例解析 string的定义 定义string的方式跟基本类型相同,只需要在string后跟上变量名即可: string str; 如果要初始化,可以直接给string类型的变量进行赋值: string s…

Vue3+vite项目中使用mock模拟接口

安装依赖 分别安装vite-plugin-mock跟mockjs两个插件 npm install -D vite-plugin-mock mockjs vite.config.ts中添加配置,主要是红色标记的配置 注意此处如果配置出错可能是vite-plugin-mock依赖的版本有问题,重新安装一下依赖指定版本即可&#xf…

Pytorch环境配置2.0.1+ Cuda11.7

查找cuda、cudnn、Pytorch(GPU)及cuda和NVIDIA显卡驱动对应关系 查询可支持的最高cuda版本 nvidia-smi查看支持的cuda的版本 CUDA版本对应表 我的显卡驱动是Driver Version:535.40.,那么左边对应的CUDA都可以兼容 右上角为CUDA 版本,可以看…

Ubuntu配置Git

安装git sudo apt install git 查看是否安装成功 git --version 配置git 用github上注册的用户名和邮箱地址,配置git git config --global user.name "username" git config --global user.email "usernameemail.com" 重启ubuntu查看…

Collection(一)[集合体系]

说明&#xff1a;Collection代表单列集合&#xff0c;每个元素&#xff08;数据&#xff09;只包含一个值。 Collection集合体系&#xff1a; Collection<E> 接口 (一&#xff09;List<E> 接口 说明&#xff1a;添加的元素是有序、可重复、有索引。 1. ArrayLi…

vue3中的toRaw API

文章目录 什么是toRaw API&#xff1f;为什么需要toRaw&#xff1f;如何使用toRaw&#xff1f;实际应用场景 这两天在写项目的时候&#xff0c;发现了一个之前没用过的api&#xff0c;于是上网查了一下&#xff0c;发现这个api还是挺常用&#xff0c;所以在这记录一下 什么是t…

【Postman接口测试】第二节.Postman界面功能介绍(上)

文章目录 前言一、Postman前言介绍二、Postman界面导航说明三、使用Postman发送第一个请求四、Postman 基础功能介绍 4.1 常见类型的接口请求 4.1.1 查询参数的接口请求 4.1.2 表单类型的接口请求 4.1.3 上传文件的表单请求 4.1.4 JSON 类…

HCIP-Datacom-ARST自选题库__BGP/MPLS IP VPN简答【3道题】

1.在BGP/MPLSIPVPN场景中&#xff0c;如果PE设备收到到达同一目的网络的多条路由时&#xff0c;将按照定的顺序选择最优路由。请将以下内容按照比较顺序进行排序。 2.在如图所示的BGP/MPLSIP VPN网络中&#xff0c;管理员准备通过Hub-Spoke组网实现H站点对VPM流量的集中管控&am…

C# 配置文件设置详解

文章目录 1. 配置文件在 C# 项目中的作用和重要性2. 不同类型的配置文件app.configconfig.exejson 3. 创建和修改配置文件文件位置添加内容修改内容保存和加载 4. 读取和写入配置文件app.config 文件读取config.exe 文件写入JSON 文件读写 5. 示例代码演示6. 配置文件在安全性方…

【kubernetes】关于k8s集群的污点、容忍、驱逐以及k8s集群故障排查思路

目录 一、污点(Taint) 1.1污点介绍 1.2污点的组成格式 1.3当前 taint effect 支持如下三个选项&#xff1a; 1.4污点的增删改查 1.4.1验证污点的作用——NoExecute 1.4.2验证污点的作用——NoSchedule 1.4.3 验证污点的作用——PreferNoSchedule 1.5污点的配置与管理…

php反序列化学习(1)

1、php面向对象基本概念 类的定义&#xff1a; 类是定义了一件事物的抽象特征&#xff0c;它将数据的形式以及这些数据上的操作封装住在一起。&#xff08;对象是具有类类型的变量&#xff0c;是对类的实例&#xff09; 构成&#xff1a; 成员变量&#xff08;属性&#xf…