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=0
    for value in values:
        sum+=value
    mean=sum/n
    return (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()  # 返回一个普通DataFrame

print(gdf)

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

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

相关文章

【CUDA】Nsight profile驱动的CUDA优化

前置准备 安装NVIDIA Nsight Compute。 安装好后选择使用管理员权限启动下载官方 Demo 代码官方博客Shuffle warp 1. 任务介绍及CPU版本 1.1 任务介绍 任务理解: 有一个 L x M 的矩阵 M 1 M_1 M1​ 对其每行取平均值 得到 V 1 ∈ R L 1 V_1 \in \mathbb{R}^{…

Java | Leetcode Java题解之第117题填充每个节点的下一个右侧节点指针II

题目: 题解: class Solution {Node last null, nextStart null;public Node connect(Node root) {if (root null) {return null;}Node start root;while (start ! null) {last null;nextStart null;for (Node p start; p ! null; p p.next) {if…

学习笔记——数据通信基础——数据通信网络(拓扑结构)

网络拓扑 网络拓扑(Network Topology)是指用传输介质(例如双绞线、光纤等)互连各种设备(例如计算机终端、路由器、交换机等)所呈现的结构化布局。 1、网络拓扑形态 星型网络∶所有节点通过一个中心节点连接在一起。 优点∶容易在网络中增加新的节点。通信数据必须经过中心节点…

【2】:向量与矩阵

向量 既有大小又有方向的量叫做向量 向量的模 向量的长度 单位向量 (只表示方向不表示长度) 向量的加减运算 向量求和 行向量与列向量的置换 图形学中竖着写 向量的长度计算 点乘(计算向量间夹角) 点乘满足的运算规律 交换律、结合律、分配…

新型高性能数据记录仪ETHOS 2

| 具有强大CPU性能的数据记录仪 IPETRONIK推出了一款新型高性能数据记录仪——ETHOS 2,作为ETHOS的第二代,它借助新型英特尔i7-9850HE处理器,实现了11,572的性能指数,从而能够快速有效应对CAN FD、LIN和以太网总线测量方面的日益…

【校园网网络维修】当前用户使用的IP与设备重定向地址中IP不一致,请重新认证

出现的网络问题:当前用户使用的IP与设备重定向地址中IP不一致,请重新认证 可能的原因: 把之前登录的网页收藏到浏览器,然后直接通过这个链接进行登录认证。可能是收藏网址导致的ip地址请求参数不一致。 解决方法: 方法…

循环buffer“一写多读“

1.往期回顾 一个简单实用的循环buffer,用于缓冲数据!测试500M数据,耗时1.3秒。 C语言版本的循环buffer比C版本的速度更快!测试500M数据0.5秒,达9.25Gbps左右! C 语言免拷贝版本循环 buffer 比拷贝版本快了…

apexcharts数据可视化之饼图

apexcharts数据可视化之饼图 有完整配套的Python后端代码。 本教程主要会介绍如下图形绘制方式: 基础饼图单色饼图图片饼图 基础饼图 import ApexChart from react-apexcharts;export function SimplePie() {// 数据序列const series [44, 55, 13, 43, 22]// …

2024年下半年自考报名信息汇总

2024年下半年自考报名信息汇总,报名详细流程如下图所示:

抖店起店玩法,2024年最新保姆级抖音小店开店教程

课程下载:https://download.csdn.net/download/m0_66047725/89360739 更多资源下载:关注我。 课程内容: 1-抖音如何精细化选品 2-达人合作的谈判技巧 3-达人合作细节注意事项 4-短视频达人筛选方法与数据维度 5-短视频带货达人分析工具…

C++青少年简明教程:for循环语句

C青少年简明教程:for循环语句 C的for循环语句是一种迭代控制语句,用于重复执行一段代码。 语法格式: for(表达式1;表达式2;表达式3) 循环体 for循环语句执行流程图: 不太好理解,请看下图&am…

SpringJDBC

1.前言 Spring JDBC可以帮助开发者节省大量开发工作 自动去处理一些低级细节 比如:异常处理、打开和关闭资源(Connection、PreparedStatement、Statement、ResultSet) 需要下载的jar包: spring-jdbc(普通jar包、源码jar包)由于没有依赖其他的jar包 所以只…

探寻数据处理的高效之道:从Python内置方法到NumPy的飞跃

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:为什么要学习NumPy? 二、案例展示:创建整数序列…

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

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

Vue 菜单组件开发教程

在 Vue 项目中&#xff0c;我们常常需要构建各种菜单结构。下面就来详细介绍如何基于给定的代码来开发一个菜单组件。 组件部分 一、模板部分 <template> <template v-for"item in menuTree" :key"item._id"> <el-sub-menu v-if"i…

OpenHarmony 适配HDMI接口声卡

高清多媒体接口&#xff08;High Definition Multimedia Interface&#xff0c;HDMI &#xff09;是一种全数字化视频和声音发送接口&#xff0c;可以发送未压缩的音频及视频信号。HDMI可用于机顶盒、DVD播放机、个人计算机、电视、游戏主机、综合扩大机、数字音响与电视机等设…

【智能算法应用】灰狼算法GWO求解三维路径规划问题

目录 1.算法原理2.三维路径规划数学模型3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】灰狼算法&#xff08;GWO&#xff09;原理及实现 2.三维路径规划数学模型 三维地形可以等效处理成山峰地形&#xff0c;数学模型为: z ( x , y ) h 0 ∑ j 1 N h j max ⁡…

升级鸿蒙4.2新变化,新增 WLAN 网络自动连接开关!

手机已经成为现代人生活中不可或缺的一部分&#xff0c;手机里的功能可以满足大部分人的生活场景&#xff0c;但是最依赖的应该就是手机网络&#xff0c;手机网络突然变差怎么办——消息发不出去&#xff1f;刷新闻速度变慢&#xff1f;仔细检查后&#xff0c;发现其实不是手机…

OrangePi Kunpeng Pro ——信创再接力

文章目录 OrangePi Kunpeng Pro ——信创再接力1. 绪论1.1 开箱 2. 硬件介绍2.1 硬件配置2.2 硬件清单 3. 网络测试3.1 有线连接3.2 WIFI连接 4.查看系统配置5. 安装常用软件5.1 安装python5.1.1 更换pip源为国内清华源 5.2 安装docker5.3 安装opencv5.4 安装dlib 6.CPU多进程能…

闲话 .NET(3):.NET Framework 的缺点

前言 2016 年&#xff0c;微软正式推出 .NET Core 1.0&#xff0c;并在 2019 年全面停止 .NET Framework 的更新。 .NET Core 并不是 .NET Framework 的升级版&#xff0c;而是一个从头开始开发的全新平台&#xff0c;一个跟 .NET Framework 截然不同的开源技术框架。 微软为…