【Pandas核心实战】数据治理与深度洞察:数据清洗、多维排序与 GroupBy 分组聚合全攻略
在真实的数据分析与商业智能BI场景中原始数据往往是“脏”且混乱的。俗话说“Garbage in, Garbage out垃圾进垃圾出”。没有高质量的数据清洗后续的任何统计与建模都毫无意义。清洗完成之后为了抓住关键业务问题我们通常需要对数据进行特定规则的排序以及按业务维度进行分类汇总GroupBy。本文将带你系统掌握 Pandas 中最核心的三大硬核操作数据清洗缺失值、重复值、异常值与格式统一数据排序单列/多列、升序/降序灵活排序数据分组与聚合GroupBy 机制与agg()多维聚合。一、 数据清洗Data Cleaning数据清洗是指发现并纠正数据中可识别的错误包括处理缺失值、剔除重复项、修正异常值以及规范数据格式以保证数据的一致性和准确性。原始脏数据 ── [检测与过滤] ── [补齐与修正] ── [统一规范] ── 高质量数据1. 缺失值NaN / None处理现实数据因网络波动、用户未填写等原因常出现空值方法功能描述核心场景 / 示例df.isnull()/isna()检查是否为缺失值df.isnull().sum()统计每列缺失值个数df.dropna()删除含有缺失值的行或列df.dropna(axis0)默认按行删除df.fillna(value)用指定固定值填充缺失值df[销量].fillna(0)df.ffill()前向填充用上一行的有效值填补适用于时间序列或断点补全df.bfill()后向填充用下一行的有效值填补适用于回溯补全# 示例填充数值列删除关键字段为空的行df[销售额]df[销售额].fillna(0)dfdf.dropna(subset[客户ID])# 核心主键为空则直接剔除2. 重复值Duplicates处理数据重复录入会严重干扰统计指标的真实性方法核心作用df.duplicated()标记是否存在重复行返回 True/False 的 Seriesdf.drop_duplicates()剔除重复行保留唯一记录# 查看重复行数print(f重复数据量:{df.duplicated().sum()})# 根据特定列如订单号去重保留首次出现的记录dfdf.drop_duplicates(subset[订单编号],keepfirst)3. 异常值修正与格式统一异常值修正例如退货或系统失误导致出现了不合理的负数金额可通过.abs()统一转为绝对值df[销售数量]df[销售数量].abs()格式规范化例如日期字段中的分隔符不一致既有2025/06/01又有2025-06-01可用字符串向量化操作.str.replace()统一df[订单日期]df[订单日期].str.replace(/,-)二、 数据排序Data Sorting通过排序我们可以迅速定位“头部 Top 客户”、“滞销产品”或“最近订单”。Pandas 提供sort_values()方法支持单列及多列的升/降序控制。1. 单列排序ascendingTrue升序默认ascendingFalse降序# 按照销售数量从大到小降序排列df_sorteddf.sort_values(销售数量,ascendingFalse)2. 多列排序业务复合排序在多列排序中遵循**“主从优先级”**原则先按第一列排序只有在第一列取值相同时才会根据第二列的值进行次级排序。# 场景一多列统一降序# 先按销售数量从大到小排数量一样的再按订单日期从新到旧排df.sort_values([销售数量,订单日期],ascendingFalse)# 场景二多列定制不同的升降序通过传入布尔列表# 销售数量升序(True)相同数量时订单日期降序(False)df.sort_values([销售数量,订单日期],ascending[True,False])三、 数据分组与聚合GroupBy分组操作的核心逻辑是经典的Split - Apply - Combine拆分 - 应用 - 合并Split根据给定的维度如产品类别将原表数据拆分成多个独立的“子组”Apply对每一个子组分别执行统计函数如求和、均值、极值Combine将各个子组的计算结果拼接还原成一个结构化结果。原始数据 ── [ 按类别拆分组 ] ── [ 各组单独求 sum/mean ] ── [ 组装为报表 ]1. 单列基础聚合计算直接对提取的单列调用聚合函数# 按产品类别分组分别统计销售额的不同指标df.groupby(产品类别)[销售额].sum()# 总销售额df.groupby(产品类别)[销售额].mean()# 平均销售额df.groupby(产品类别)[销售额].max()# 最大销售额df.groupby(产品类别)[销售额].min()# 最小销售额df.groupby(产品类别)[销售额].count()# 订单笔数2. 进阶一单列多指标聚合agg 传入列表如果希望一次性得出单列的多个汇总指标# 一次性查看各产品类别的销售额总和、最大值、最小值df.groupby(产品类别)[销售额].agg([sum,max,min])3. 进阶二不同列定制不同指标agg 传入字典在企业报表制作中最常见的是对不同字段使用不同的统计逻辑此时可向.agg()传入字典映射# 语法格式{ 目标列名: 统计函数 }agg_resultdf.groupby(产品类别).agg({销售数量:sum,# 销售数量求总和销售额:sum,# 销售金额求总和单价:mean# 单价求平均值})四、 综合业务实战将“清洗 ➔ 排序 ➔ 分组”串联在完整的真实数据处理流水线中importpandasaspd# 1. 模拟含脏数据的销售记录raw_data{订单日期:[2025/06/01,2025-06-01,2025-06-02,2025/06/02,2025-06-02],产品类别:[食品,食品,服装,电子产品,服装],销售数量:[-5,5,2,None,6],# 存在负数和缺失值单价:[29,29,199,399,199]}dfpd.DataFrame(raw_data)# ------------ Step 1: 数据清洗 ------------# ① 规范化日期格式df[订单日期]df[订单日期].str.replace(/,-)# ② 缺失值填充df[销售数量]df[销售数量].fillna(1)# ③ 异常负值修正为绝对值df[销售数量]df[销售数量].abs()# ④ 计算衍生列销售额df[销售额]df[销售数量]*df[单价]# ------------ Step 2: 数据排序 ------------# 按照销售额降序排序df_sorteddf.sort_values(by销售额,ascendingFalse)print( 排序后的明细数据 )print(df_sorted)# ------------ Step 3: 分组汇总 ------------# 按产品类别聚合产出业务看板reportdf.groupby(产品类别).agg({销售数量:sum,销售额:sum,单价:mean}).reset_index()print(\n 分类汇总报表 )print(report) 五、 核心知识点全景速查表分类模块常用 API / 语法功能描述与核心规则典型代码示例缺失值处理isnull()/isna()检查缺失值返回布尔值掩码df.isnull().sum()dropna()删除含有空值的行或列可指定subset作用列df.dropna(subset[姓名])fillna(value)用标量常数或特定统计值填补空缺df[成绩].fillna(0)ffill()/bfill()前向填补 / 后向填补按相邻非空有效值填充df[电量].ffill()重复值处理duplicated()标记数据是否重复返回布尔序列df.duplicated(subset[订单号])drop_duplicates()删除重复数据行保留唯一值默认keepfirstdf.drop_duplicates()异常与规范abs()取绝对值纠正常见的人为输入负数异常df[数量] df[数量].abs()str.replace()文本/字符串列的统一替换与规范化df[日期].str.replace(/, -)数据排序sort_values()按一列或多列进行排序ascending决定升序或降序df.sort_values(销量, ascendingFalse)多列复合排序第一列优先同值时根据第二列次级排序df.sort_values([A, B], ascending[True, False])分组与聚合groupby()按照某特征将数据拆分成子组Splitgrouped df.groupby(部门)组内聚合计算单列单一指标.sum(),.mean(),.max()等df.groupby(部门)[薪资].mean()agg(list)单列多个指标聚合统计df.groupby(部门)[薪资].agg([min, max])agg(dict)多列分别定制不同维度的聚合计算df.groupby(部门).agg({薪资:mean, 年龄:min})

相关新闻

专有云DTS开发实战:从API签名到数据迁移任务管理

专有云DTS开发实战:从API签名到数据迁移任务管理

简介:阿里云专有云Enterprise版V3.16.0的数据传输服务DTS开发指南,面向企业开发者、运维人员及架构师,帮助在专有云环境中通过API接口完成数据迁移、同步与订阅任务的开发集成。文档版本日期为20220301,正文依次说明法律声明、通用…

2026/9/30 7:38:23 阅读更多 →
OSS自定义域名与CNAME解析:从原理到踩坑实战

OSS自定义域名与CNAME解析:从原理到踩坑实战

前一阵子帮客户做静态资源迁移,方案基本已经定了:对象存储用阿里云OSS,前端图片、附件全部放上去。本来觉得这事不难,结果在“自定义域名”和“CNAME解析”这个环节上消耗了整整两天。客户用的是namesilo注册的域名,DN…

2026/9/30 7:38:23 阅读更多 →
DeepSeek与Manus企业AI落地:从API接入到Agent实战指南

DeepSeek与Manus企业AI落地:从API接入到Agent实战指南

简介:PDF报告由华中科技大学数智管理与传播研究团队整理,面向企业管理者、数字化转型负责人及关注AI落地的技术从业者,聚焦DeepSeek与Manus如何从成本、效率与业务场景三个层面重塑企业价值。报告先梳理生成式AI发展历程,对比Deep…

2026/9/30 7:37:23 阅读更多 →

最新新闻

全覆盖路径规划:往返式扫描与A*转移的Matlab实现

全覆盖路径规划:往返式扫描与A*转移的Matlab实现

做全覆盖路径规划的人,多半都是先被 A* 算法领进门的。搜“路径规划算法”,A* 永远是出场率最高的那个,网上资料多、Matlab 代码也好找。但如果你直接把 A* 拿去解决“覆盖”问题——比如扫地机器人要把房间完整扫一遍、植保无人机要把一块田…

2026/9/30 8:20:47 阅读更多 →
Python IDE怎么选?场景、配置与避坑指南

Python IDE怎么选?场景、配置与避坑指南

经常看到有人问"Python到底用什么IDE好",这个问题看着简单,真认真回答起来全是门道。我见过装了PyCharm专业版只用来写练习题的新手,也见过用记事本写了两年代码的硬核玩家,更见过在VS Code和PyCharm之间反复横跳、最后…

2026/9/30 8:20:47 阅读更多 →
大模型推理优化:TensorRT与vLLM协同部署实战指南

大模型推理优化:TensorRT与vLLM协同部署实战指南

1. 项目概述:Model-Optimizer 不是工具名,而是一类工程实践的统称 “Model-Optimizer”这个标题乍看像某个开源项目或商业软件的代号,但结合你提供的热搜词——TensorRT-LLM、vLLM、NVIDIA、PT文件转换TensorRT、Docker部署、RTX 4060 Laptop…

2026/9/30 8:20:47 阅读更多 →
Agent记忆系统实战:基于MCP协议与Docker构建可持久化记忆层

Agent记忆系统实战:基于MCP协议与Docker构建可持久化记忆层

1. 从“hindsight”这个词说起:为什么它值得单独拿出来聊 第一次看到“hindsight”作为项目名,我脑子里蹦出来的不是词典释义,而是做Agent记忆系统时反复遇到的一个尴尬场景:用户问了一个需要结合三天前对话才能回答的问题&#x…

2026/9/30 8:20:46 阅读更多 →
Model-Optimizer:AI模型推理全链路优化决策框架

Model-Optimizer:AI模型推理全链路优化决策框架

1. “Model-Optimizer”不是工具名,而是工程目标的精准表达 很多人第一次看到“Model-Optimizer”这个标题,下意识会以为它是一个现成的开源项目、某个厂商发布的GUI软件,或者像TensorRT、vLLM那样带具体版本号和安装命令的SDK。我刚接触这个…

2026/9/30 8:20:46 阅读更多 →
为什么少儿英语排行榜的“第一名”总在变?看懂这三点,不再被榜单带着走

为什么少儿英语排行榜的“第一名”总在变?看懂这三点,不再被榜单带着走

“老师,少儿英语教育机构排行榜我存了三个版本,第一名分别是三家不同机构——我都不知道该信谁了。”我说:“三个版本三个第一名,太正常了。因为榜单不是客观事实,是特定尺子量出来的结果——尺子不同,第一…

2026/9/30 8:19:46 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 8:16:59 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/29 8:24:48 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →