Pandas 1.5.3 解析 Excel 数据实战:5 种常见数据清洗与转换场景代码示例

发布时间:2026/9/27 18:23:29

Pandas 1.5.3 解析 Excel 数据实战:5 种常见数据清洗与转换场景代码示例
Pandas 1.5.3 实战Excel 数据清洗与转换的 5 个高阶场景1. 缺失值处理的智能策略数据清洗中最常见的挑战莫过于缺失值处理。Pandas 1.5.3 提供了比以往更强大的工具链来处理这个难题。让我们从一个真实的销售数据集开始import pandas as pd sales_data pd.read_excel(sales_records.xlsx, engineopenpyxl) print(sales_data.isna().sum())缺失值诊断矩阵可以帮助我们快速定位问题列名缺失数量缺失比例数据类型customer_id122.3%int64product_name00%objectunit_price458.7%float64quantity71.4%int64对于不同场景我们有多种处理方案时间序列填充使用前后时间点的平均值sales_data[unit_price] sales_data[unit_price].interpolate(methodtime)分组填充按产品类别填充中位数sales_data[unit_price] sales_data.groupby(product_category)[unit_price]\ .transform(lambda x: x.fillna(x.median()))标记异常值创建新列标识填充记录sales_data[price_imputed] sales_data[unit_price].isna().astype(int) sales_data[unit_price] sales_data[unit_price].fillna(sales_data[unit_price].median())提示在金融领域建议保留原始缺失状态并创建新列存储填充值这对后续模型训练至关重要。2. 类型转换与内存优化Pandas 的数据类型系统远比表面看起来复杂。观察这个内存使用案例# 转换前内存使用 original_mem sales_data.memory_usage(deepTrue).sum() # 优化类型 sales_data[customer_id] pd.to_numeric(sales_data[customer_id], downcastinteger) sales_data[unit_price] pd.to_numeric(sales_data[unit_price], downcastfloat) sales_data[order_date] pd.to_datetime(sales_data[order_date]) # 转换后内存使用 optimized_mem sales_data.memory_usage(deepTrue).sum() print(f内存节省: {(original_mem - optimized_mem)/original_mem:.1%})分类数据的黄金法则基数小于总行数10% → 使用category类型高频字符串字段 → 优先考虑category参与数值计算的字段 → 保持数值类型# 智能类型转换函数 def auto_convert(df, col): if df[col].dtype object: if df[col].nunique() / len(df) 0.1: return df[col].astype(category) return df[col] for col in sales_data.columns: sales_data[col] auto_convert(sales_data, col)3. 多表合并的进阶技巧真实业务中我们常需要合并多个数据源。假设我们有销售记录表客户信息表产品目录表合并策略对比表合并类型适用场景代码示例内存消耗内连接只保留匹配记录pd.merge(sales, clients)低左连接保留所有左表记录pd.merge(sales, clients, howleft)中外连接保留所有记录pd.merge(sales, clients, howouter)高索引连接大数据集合并sales.join(clients.set_index(id), onclient_id)最低对于大型数据集可以使用merge的优化参数merged_data pd.merge( sales_data, client_info, onclient_id, validatemany_to_one, # 确保关系正确性 indicatorTrue, # 跟踪记录来源 suffixes(_sales, _client) )性能优化技巧合并前对连接键排序可提升30%速度使用pd.concat()代替merge处理相同结构的表大数据集考虑dask.dataframe4. 条件筛选的工程实践复杂条件筛选是业务分析的核心。Pandas 1.5.3 优化了布尔索引的性能# 基础筛选 q3_sales sales_data[ (sales_data[order_date].dt.quarter 3) (sales_data[region].isin([West, East])) (sales_data[quantity] 10) ] # 使用query方法更易读 high_value sales_data.query( unit_price 100 and loyalty_status Gold and product_category ! Clearance )动态条件构建技巧conditions [] if include_east_region: conditions.append(df[region] East) if min_price: conditions.append(df[unit_price] min_price) final_condition pd.concat(conditions, axis1).all(axis1) filtered_data sales_data[final_condition]对于时间序列数据可以使用between_time和at_time# 获取每天上午的交易 morning_sales sales_data.set_index(order_date)\ .between_time(09:00, 12:00)\ .reset_index()5. 分组聚合的深度应用分组聚合远不止groupby().sum()那么简单。看这个多维度分析案例# 多级分组与自定义聚合 results (sales_data .groupby([region, pd.Grouper(keyorder_date, freqM)]) .agg({ quantity: [sum, mean], unit_price: lambda x: (x * sales_data.loc[x.index, quantity]).sum(), client_id: pd.Series.nunique }) .rename(columns{ lambda: revenue, client_id: unique_clients }) )分组优化技巧使用pd.Grouper进行时间分组大数据集考虑methodhash参数避免在分组后立即计算使用.pipe()延迟执行透视表高级用法pivot pd.pivot_table( sales_data, valuesunit_price, index[region, sales_rep], columnspd.cut(sales_data[order_date].dt.month, bins[0,3,6,9,12]), aggfunc[mean, count], marginsTrue, fill_value0 )对于超大数据集可以使用eval()进行链式操作优化sales_data sales_data.eval( total unit_price * quantity discount_amount total * discount_rate / 100 net_value total - discount_amount )

相关新闻

上市公司创新困境数据集

上市公司创新困境数据集

2026/8/24 9:28:40

一、基础概况数据编号:2399时间跨度:2001—2025 年全 A 股公司年度平衡面板底层数据源:国家知识产权专利库 上市公司行业分类年报数据测算基准:连燕玲等(2023)创新期望落差范式、薛希萌等(2025…

L9958与PIC18F45K42电机控制方案解析

L9958与PIC18F45K42电机控制方案解析

2026/8/23 0:48:41

1. L9958与PIC18F45K42的黄金组合解析 在电机控制领域,STMicroelectronics的L9958驱动芯片与Microchip的PIC18F45K42微控制器堪称经典组合。L9958是一款多功能汽车级H桥驱动器,支持高达45V的工作电压和3A的持续输出电流,其内置的电荷泵和PWM控…

TensorFlow 2.16 / PyTorch 2.3 GPU环境验证:5行代码排查CUDA驱动与框架版本兼容性

TensorFlow 2.16 / PyTorch 2.3 GPU环境验证:5行代码排查CUDA驱动与框架版本兼容性

2026/9/2 11:36:51

TensorFlow 2.16与PyTorch 2.3 GPU环境深度验证指南:从版本兼容到自动化诊断当你在Jupyter Notebook中兴奋地输入torch.cuda.is_available(),却看到令人沮丧的False时,这种体验就像赛车手坐进驾驶舱却发现引擎无法启动。本文将带你超越简单的…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/26 19:14:12

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/27 1:30:29

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/27 1:30:37

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/27 1:30:35

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/27 1:30:34

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/26 16:36:51

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/26 14:29:04

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

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

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

2026/9/26 13:57:22

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

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

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

2026/9/26 23:35:16

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