Python Pandas:高效重塑Excel宽表数据为规范长表格式

Python Pandas:高效重塑Excel宽表数据为规范长表格式

本文详细介绍了如何利用Pandas库中的lreshape函数,将包含重复列模式(如id_mXX和mprice对)的宽格式Excel表格高效地重塑为规范的长格式数据。教程通过具体代码示例,演示了如何处理列名重复以及如何利用filter方法简化列选择,从而避免使用melt函数可能导致的额外列和空值问题,极大地提升数据处理的效率和规范性。

1. 数据重塑需求概述

在数据分析工作中,我们经常会遇到宽格式(wide format)的数据表,其中包含大量重复模式的列组。例如,一个excel表格可能包含多组产品id和价格信息,如id_m00, mprice, id_m01, mprice, …, 直到id_m46, mprice。这种格式虽然在某些情况下便于录入,但在进行数据分析和建模时,通常需要将其转换为长格式(long format),即每行代表一个独立的观测值,将所有重复的id和价格信息归并到两列:id和mprice。

传统的pandas.melt函数在处理这类复杂重塑时,可能会因为其设计逻辑而产生额外的variable列或大量的空值,导致后续清理工作量大。针对这种具有明确“成对”或“分组”列的重塑需求,pandas.lreshape提供了一种更为高效和简洁的解决方案。

2. pandas.lreshape函数简介

pandas.lreshape函数专门用于处理那些具有列表状(list-like)分组列的数据重塑。它的核心思想是将一组列(例如id_m00, id_m01)映射到一个新的列名(id),同时将另一组对应的列(例如mprice, mprice.1)映射到另一个新的列名(mprice),从而实现数据的垂直堆叠。

主要参数:

data: 需要重塑的DataFrame。reshape_map: 一个字典,键是重塑后新的列名,值是一个列表,包含需要合并到该新列的原始列名。

3. 数据重塑实战示例

假设我们有如下的宽格式Excel数据(data.xlsx):

立即学习“Python免费学习笔记(深入)”;

Date id_m00 mprice id_m01 mprice

01.01.2023aa-bb-cc12,05dd-ee-fr8,8002.01.2023aa-dd-ee09,55ff-gg-gg7,50

我们的目标是将其转换为:

Date id mprice

01.01.2023aa-bb-cc12,0502.01.2023aa-dd-ee09,5501.01.2023dd-ee-fr8,8002.01.2023ff-gg-gg7,50

准备模拟数据:

import pandas as pdimport io# 模拟原始Excel数据,实际应用中替换为 pd.read_excel("file.xlsx")data = """Date,id_m00,mprice,id_m01,mprice01.01.2023,aa-bb-cc,12.05,dd-ee-fr,8.8002.01.2023,aa-dd-ee,9.55,ff-gg-gg,7.50"""# 注意:当Pandas读取Excel时,如果存在重复列名,会自动重命名为 mprice, mprice.1, mprice.2 等# 这里为了模拟,我们手动创建DataFrame,并模拟Pandas的列名处理df_raw = pd.read_csv(io.StringIO(data), sep=',')# 模拟pandas读取Excel后,重复列名被自动重命名的情况# 手动调整列名以匹配 lreshape 示例中的 mprice, mprice.1df_raw.columns = ['Date', 'id_m00', 'mprice', 'id_m01', 'mprice.1']print("原始DataFrame:")print(df_raw)

使用lreshape进行重塑:

lreshape的关键在于构建reshape_map。我们需要识别出所有属于“id”组的列和所有属于“mprice”组的列。由于Pandas在读取Excel时会自动处理重复列名(如将第二个mprice重命名为mprice.1),我们可以利用这一特性来简化列的选择。

# 方案一:直接使用filter选择列(推荐)# 假设df是通过pd.read_excel("file.xlsx")读取的,Pandas会自动处理重复列名# 此时,mprice列会变为 'mprice', 'mprice.1', 'mprice.2' ...# df = pd.read_excel("file.xlsx") # 实际应用中取消注释# 识别所有id_mXX开头的列id_cols = df_raw.filter(like="id_m").columns# 识别所有包含'price'的列(这里会包含mprice和mprice.1等)price_cols = df_raw.filter(like="price").columns# 构建lreshape的映射字典reshape_map = {    "id": id_cols.tolist(),    "mprice": price_cols.tolist()}out_df = pd.lreshape(df_raw, reshape_map)print("n重塑后的DataFrame (方案一):")print(out_df)# 确保mprice列为数值类型out_df['mprice'] = out_df['mprice'].astype(float)print("n重塑后并转换mprice类型:")print(out_df)

代码解析:

df_raw.filter(like=”id_m”).columns: 这行代码使用filter方法筛选出所有列名中包含“id_m”的列,并获取它们的名称列表。这非常适合处理id_m00, id_m01, …, id_m46这类有规律的列名。df_raw.filter(like=”price”).columns: 同样地,筛选出所有列名中包含“price”的列。由于Pandas读取Excel时会处理重复列名(例如mprice和mprice.1),这个模式可以有效地捕获所有价格列。reshape_map: 这个字典是lreshape的核心。它告诉Pandas:将id_cols列表中的所有列合并到新的id列下。将price_cols列表中的所有列合并到新的mprice列下。lreshape会根据原始列的顺序进行配对,例如id_m00会与mprice(第一个)配对,id_m01会与mprice.1配对,以此类推。pd.lreshape(df_raw, reshape_map): 执行重塑操作,返回一个新的DataFrame。

4. 注意事项与总结

列名处理: pandas.read_excel在遇到重复列名时,会自动为后续的重复列添加数字后缀(如mprice.1, mprice.2)。lreshape正是利用了这一特性,通过filter(like=’…’)可以方便地选择所有相关的列。如果你的数据来源不是Excel,或者列名没有自动重命名,你可能需要手动调整列名,或者在reshape_map中明确列出所有原始列名。lreshape vs. melt:melt更通用,可以将一个或多个标识符列(id_vars)之外的所有或指定列(value_vars)转换为长格式,通常会生成variable和value列。它适用于将多个值列堆叠成一个值列的场景。lreshape则更专注于处理具有固定分组的列,它允许你同时重塑多个相关的列组(例如id和price),并将它们分别映射到新的目标列中,而不会引入额外的variable列,从而得到更干净、更直接的长格式数据。数据类型: 重塑后,新的列(如mprice)的数据类型可能需要手动转换为数值类型,如果原始数据中包含逗号作为小数分隔符,还需要在读取时或转换时进行处理(例如使用str.replace(‘,’, ‘.’)和astype(float))。

通过pandas.lreshape,我们可以高效、准确地将复杂的宽格式数据转换为规范的长格式,这对于后续的数据清洗、分析和可视化至关重要,能够显著提升数据处理的效率和质量。

以上就是Python Pandas:高效重塑Excel宽表数据为规范长表格式的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1363108.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月14日 03:13:14
下一篇 2025年12月14日 03:13:27

相关推荐

  • Python Pandas:高效重构宽表数据为长表格式的实用指南

    本教程旨在详细阐述如何利用Pandas库高效地将具有重复列模式(如id_mXX和mprice成对出现)的宽格式Excel数据重构为更易于分析的长格式数据。文章将重点讲解pandas.lreshape函数的使用方法,包括动态列选择和处理Pandas自动重命名列的场景,旨在提供清晰、专业的教程,帮助用户…

    2025年12月14日
    000
  • 利用Python Pandas高效重塑复杂Excel表格数据

    本文将详细介绍如何使用Pandas库中的lreshape函数,将包含重复模式列(如id_mXX和mprice对)的宽格式Excel表格数据,高效地重塑为更易于分析的长格式数据。通过具体的代码示例,我们将展示如何处理此类复杂的数据转换需求,并提供实用的技巧与注意事项。 理解数据重塑的需求 在数据分析工…

    2025年12月14日
    000
  • Python字符编码修复:巧用raw_unicode_escape解决特定编码错位问题

    本文深入探讨在Python中处理特定字符编码错误的问题,尤其当一个Unicode字符实际上是另一编码下某个字节的错误解读时。针对例如将ø(Unicode U+00F8)纠正为ř(Windows-1250 0xF8)的场景,文章详细介绍了如何利用raw_unicode_escape编码将Unicode…

    2025年12月14日
    000
  • Python中如何实现加密解密?hashlib模块详解

    hashlib是python标准库中的模块,用于生成数据的哈希值,属于单向散列算法,不能用于加密解密。其主要用途包括密码存储、文件校验等。1. 哈希算法如sha-256可用于生成字符串或文件的指纹;2. 使用时需将输入转为字节类型,并通过hexdigest()获取结果;3. 大文件可通过分块读取并调…

    2025年12月14日 好文分享
    000
  • 怎样用Python开发物联网应用?MQTT协议实践

    用python开发物联网应用结合mqtt协议的核心在于使用paho-mqtt库实现设备间高效通信。1. 安装paho-mqtt库,通过pip install paho-mqtt完成依赖准备;2. 编写发布者代码连接mqtt broker并周期性发送模拟传感器数据;3. 编写订阅者代码接收并处理发布者…

    2025年12月14日 好文分享
    000
  • Python如何实现数据加密?hashlib模块应用

    hashlib模块不可逆,适用于数据完整性校验、密码存储或数字签名,但不适用于需要解密的加密场景。1. hashlib提供单向哈希功能,用于生成固定长度的哈希值,无法还原原始数据;2. 常见应用场景包括密码存储(存储哈希而非明文)、文件完整性校验;3. 对于需要解密的数据加密,应使用secrets模…

    2025年12月14日 好文分享
    000
  • 怎样用Python实现数据模拟?随机生成方案

    使用python进行数据模拟可通过不同工具实现,根据需求选择合适方法。1.基础随机数可用random模块,如生成随机整数、浮点数或从列表中选元素;2.复杂真实数据推荐faker库,支持生成姓名、地址、邮箱等结构化信息,并可指定语言地区;3.时间序列与分布数据借助numpy和pandas,可创建正态或…

    2025年12月14日 好文分享
    000
  • 如何使用Python处理图片?PIL库进阶技巧

    pil高效处理大尺寸图像需掌握五项策略:尽早缩放、利用延迟加载、分块处理、及时释放资源、调整像素限制。首先,使用thumbnail()或resize()在加载后立即缩小图片,避免全图解码;其次,pil的image.open()不会立即加载全部像素,仅在操作时才会加载,应避免不必要的load()调用;…

    2025年12月14日 好文分享
    000
  • 在 Amazon Linux 2023 上安装 Python 的强化版 pip

    本文旨在指导用户如何在 Amazon Linux 2023 上安装与系统自带 Python 版本对应的强化版 pip 包。通过安装系统提供的 python3-pip 包,确保使用的 pip 版本与系统环境兼容,并遵循 Amazon Linux 2023 的支持路径,避免潜在的兼容性问题。 在 Ama…

    2025年12月14日
    000
  • 在 Amazon Linux 2023 上安装安全增强的 pip

    在 Amazon Linux 2023 上,为了确保系统的安全性和稳定性,建议尽可能使用官方提供的软件包。 本文将介绍如何在 Amazon Linux 2023 上安装与系统自带 Python 版本对应的 pip 包,从而避免使用未经验证的第三方安装方式。 Amazon Linux 2023 预装了…

    2025年12月14日
    000
  • 在 Amazon Linux 2023 上安装强化版 Python pip

    本文将介绍如何在 Amazon Linux 2023 上安装强化版 Python pip。正如摘要所述,我们将通过安装 python3-pip 包,使用官方支持且经过强化的 pip 版本。 Amazon Linux 2023 默认包含 Python,但并未预装 pip。 为了获得与系统 Python…

    2025年12月14日
    000
  • 在 Amazon Linux 2023 上安装安全加固的 pip

    本文档旨在指导用户在 Amazon Linux 2023 上安装与系统自带 Python 版本相对应的、经过安全加固的 pip 包。我们将探讨官方推荐的安装方式,确保获得与系统环境兼容且安全可靠的 pip 版本,以便进行后续的 Python 包管理。 在 Amazon Linux 2023 上,Py…

    2025年12月14日
    000
  • 在Amazon Linux 2023上安装安全加固的pip

    在Amazon Linux 2023上安装Python包管理器pip,并确保其安全性,是一个值得关注的问题。Amazon Linux 2023预装了Python,但默认情况下不包含pip。为了满足用户对安全和稳定性的需求,我们需要选择一种可靠的方式来安装pip。 正如前文所述,在Amazon Lin…

    2025年12月14日
    000
  • 使用F-string和集合时结果顺序错乱的原因分析及解决方案

    本文旨在解释在使用Python的f-string和集合(set)时,为何集合中的元素顺序与预期不符。文章将深入探讨集合的无序性,并对比列表(list)的有序性,帮助读者理解不同数据结构在f-string中的表现,从而避免因数据结构特性导致的误解。 在Python中使用f-string进行格式化输出时…

    2025年12月14日
    000
  • 使用 f-strings 格式化集合时,结果顺序为何与预期不符?

    本文旨在解释在使用 f-strings 格式化 Python 集合时,为何集合元素的顺序可能与预期不符。通过对比集合和列表的不同特性,阐明了集合的无序性导致输出结果顺序不确定的原因,并强调这与 f-strings 本身无关。理解集合的本质是解决此类问题的关键。 在 python 中,使用 f-str…

    2025年12月14日
    000
  • 使用f-string格式化集合时结果顺序不一致的原因

    本文旨在解释Python中使用f-string格式化集合(set)时,输出结果顺序不确定的原因。通过对比集合和列表的特性,阐明集合的无序性导致每次打印结果顺序可能不同的现象,并强调这与f-string本身无关。 在Python中,使用f-string可以方便地将表达式的值嵌入到字符串中。然而,当与集…

    2025年12月14日
    000
  • Python f-string 中集合表达式的无序性

    本文旨在解释 Python 中使用 f-string 结合集合推导式时,结果顺序不确定的原因。通过对比集合和列表推导式的差异,阐明集合的无序性导致输出结果顺序不稳定的现象,并强调这与 f-string 本身无关。 在 python 中,f-string 是一种强大的字符串格式化工具,它允许你在字符串…

    2025年12月14日
    000
  • 如何使用Python处理卫星图像?rasterio库教程

    使用rasterio处理卫星图像的基础方法包括:1.安装库并读取geotiff文件获取元数据和波段数据;2.查看图像波段结构并提取特定波段;3.结合matplotlib显示图像并调整对比度;4.保存处理后的图像并保留空间参考信息。首先,通过pip安装rasterio,并用open()函数读取文件,获…

    2025年12月14日 好文分享
    000
  • 如何使用Python生成报告?Jinja2模板应用指南

    使用python的jinja2模板引擎生成报告的关键步骤如下:1. 安装jinja2并确认环境正常,执行pip install jinja2后导入测试;2. 编写清晰结构的模板文件,如html或文本格式,合理使用变量和控制结构;3. 渲染报告时加载模板并传入匹配的数据,最终输出结果文件;4. 可结合…

    2025年12月14日 好文分享
    000
  • 如何用Python制作词云图?wordcloud配置指南

    制作词云图用python的wordcloud库即可,关键在于掌握参数设置和中文处理。步骤包括:1.安装库;2.加载文本并生成词云对象;3.显示或保存图片。中文支持需指定字体路径,并搭配jieba分词。自定义形状需导入遮罩图片,颜色可用colormap调整。其他技巧包括过滤停用词、限制最大词数、控制字…

    2025年12月14日 好文分享
    000

发表回复

登录后才能评论
关注微信