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

news2024/11/17 7:38:41

参考资料:活用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)

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

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

相关文章

Raven2掠夺者2渡鸦2游戏预约注册教程 账号注册教程

《渡鸦2》是一款源自韩国的创新力作,作为《Raven》系列的最新续篇,这款游戏在MMORPG手游领域内再度扩展了其标志性的暗黑奇幻宇宙,融入了大量革新的游戏设计与丰富内容。定档于2024年5月29日开启公测的《渡鸦2》,正处在紧张刺激的…

简单四步完成基于云服务器ARL资产侦察灯塔系统搭建

简单四步完成基于云服务器ARL资产侦察灯塔系统搭建及使用 前言 官网介绍:ARL全称-Asset Reconnaissance Lighthouse,中文含义:资产侦察灯塔系统。 旨在快速侦察与目标关联的互联网资产,构建基础资产信息库。 协助甲方安全团队或…

数组-捡石子小游戏

一、题目描述 二、解题思路 刚开始拿到题目的时候在想是不是需要把所有情况枚举出来,其实思考一下能看出规律: 1.如果有1、2、3颗石子,小牛一定可以赢; 2.再来看4颗石子的时候,小牛A可以拿1~3颗,但是无论小…

M功能-分布式锁-支付平台(五)

target:离开柬埔寨倒计时-218day 珍藏的图片又拿出来了 前言 M系统中的撮合引擎是最最核心的功能,第一版的撮合引擎不是我写的,也没有做交易对的动态分配这样的功能,都是基于抢锁方式来决定谁拥有该交易对的撮合权限,所…

【Qt秘籍】[003]-Qt环境变量配置-磨刀不误砍柴工

一、为什么要设置环境变量 ?[原因] 配置PATH环境变量的主要用处在于让操作系统能够识别并执行不在当前工作目录下的可执行文件。具体来说,它的作用包括: 命令执行便捷性:当你在命令行输入一个命令(如java, python或np…

Collection(一)[集合体系]

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

在table中获取每一行scope的值

目的 当前有一份如下数据需要展示在表格中&#xff0c;表格的页面元素套了一个折叠面板&#xff0c;需要循环page_elements中的数据展示出来 错误实践 将template放在了折叠面板中&#xff0c;获取到的scope是空数组 <el-table-column label"页面元素" show-o…

【技术实操】银河高级服务器操作系统实例分享,达梦数据库服务器 oom 问题分析

1. 服务器环境以及配置 【 机型】 处理器&#xff1a; HUAWEIKunpeng 920 5220 内存&#xff1a; 400518528 kB 主板型号&#xff1a; Chaoqiang K620 series 整机类型/架构&#xff1a; ARM BIOS 版本&#xff1a; KL4.41.028.TF.220224.R 固件版本&#xff1a; KL4.41…

nginx源码阅读理解 [持续更新,建议关注]

文章目录 前述一、nginx 进程模型基本流程二、源码里的小点1.对字符串操作都进行了原生实现2.配置文件解析也是原生实现待续 前述 通过对 nginx 的了解和代码简单阅读&#xff0c;发现这个C代码的中间件确实存在过人之处&#xff0c;使用场景特别多&#xff0c;插件模块很丰富…

加密资产私钥安全完整手册(一) ,bitget钱包为例

比特币和以太坊等加密货币的兴起开创了数字金融的新时代&#xff0c;但也带来了独特的安全挑战。这些代表现实世界价值的数字资产已成为黑客和窃贼的主要目标。为了安全地应对这种情况&#xff0c;了解私钥的基本概念至关重要。 私钥是加密货币所有权和安全性的基石。它们相当于…

三维天地参编《数据要素流通标准化白皮书(2024版)》正式发布

近日,在福州举行的第七届数字中国建设峰会数据标准化和数据基础设施分论坛-数据标准化专场举行。国家数据局局长刘烈宏、福建省政府党组成员李兴湖出席并致辞。 该论坛由国家数据局主办、中国电子技术标准化研究院承办,围绕“标准引领 数创未来”主题,分享实践经验,明晰建设路…

故障诊断 | 基于KAN故障诊断模型

效果一览 文章概述 故障诊断 | 基于 KAN故障诊断模型。KAN是一种全新的神经网络架构&#xff0c;它与传统的MLP架构不同&#xff0c;能够用更少的参数量在Science领域取得惊人的表现&#xff0c;并且具备可解释性&#xff0c;有望成为深度学习模型发展的一个重要方向。运用KAN&…

网页上怎么打开iPhone手机上的备忘录 备忘录网页端打开方式

我经常使用iPhone的备忘录功能&#xff0c;随手记录生活中的点点滴滴&#xff0c;工作中的待办事项。然而&#xff0c;有时候&#xff0c;当我坐在电脑前&#xff0c;想要快速查看或编辑备忘录内容时&#xff0c;手机的小屏幕就显得不那么方便了。那么&#xff0c;如何在电脑上…

scrapy 整合 mitm

1.mitm 是什么 MITMproxy 是一个开源的中间人代理&#xff0c;常用于网络流量的拦截、查看和修改。 2.scrapy 整合 mitm步骤 2.1 安装mitm PS F:\studyScrapy\itcastScrapy> pip install mitmproxy2.2 在settings 中配置下载器中间件 # settings.pyDOWNLOADER_MIDDLEWARES…

如何将音频中的人声分离出来?

想要把一段视频中的人声跟背景音乐分离开来&#xff0c;找个好一点的音频处理软件就能把声音分离了&#xff0c;常见的有以下方法&#xff0c;一起来看看吧。 pr 打开软件&#xff0c;然后将电脑上的音频文件&#xff0c;上传到软件中&#xff0c;然后按住[ctrla]选择所有音频…

【硬核测评】猫咪主食冻干测评揭秘SC、希喂、爱立方真实对比测评

主食冻干喂养是否必要&#xff1f; 来自七年经验的铲屎官明确告诉你&#xff0c;这是非常必要的喂养方式&#xff01; 随着宠物经济的蓬勃发展和科学养宠知识的普及&#xff0c;如今养猫已不仅仅是让猫咪吃饱那么简单。越来越多的养猫人开始重视猫咪的饮食健康。大量实际喂养案…

SpringBoot之@AutoConfigureBefore、@AutoConfigureAfter、@AutoConfigureOrder注解

前言 SpringBoot通过AutoConfigureOrder、AutoConfigureBefore、AutoConfigureAfter注解&#xff0c;控制自动配置类的实例化顺序。 Spring中控制Bean的实例化顺序 Spring中默认实例化顺序 创建实体类A、B、C Component public class A {public A() {System.out.println(&…

小熊家务帮day5 客户管理模块1 (小程序认证,手机验证码认证等)

客户管理模块 1.认证模块1.1 认证方式介绍1.1.1 小程序认证1.1.2 手机验证码登录1.1.3 账号密码认证 1.2 小程序认证1.2.1 小程序申请1.2.2 创建客户后端工程jzo2o-customer1.2.3 开发部署前端1.2.4 小程序认证流程1.2.4.1 customer小程序认证接口设计Controller层Service层调用…

The 2022 ICPC Asia Nanjing Regional Contest - External G

题目链接:Problem - D - Codeforces 写在前面&#xff1a;今天的训练赛打的稀碎&#xff0c;一道稍微难一点的签到题就把我难住了&#xff0c;看完题解确实感觉不难&#xff0c;看来题目还是刷太少了。 回归正题 题意&#xff1a; 思路&#xff1a;尽量让分子大&#xff0c;分…

操作系统实验三 可变分区内存分配首次适应算法模拟

实验三 可变分区内存分配首次适应算法模拟 实验内容 模拟内存分配&#xff0c;了解并掌握动态分区分配中所用的数据结构、分区分配算法&#xff0c;深刻理解首次适应内存分配算法。 模拟实现可变分区内存分配首次适应算法&#xff1b;空闲分区表要求有空闲块的起始地址、大小…