Pandas:高效整合多工作表Excel数据教程

Pandas:高效整合多工作表Excel数据教程

本教程详细介绍了如何使用Python的Pandas库高效地处理和整合来自多个Excel文件中的特定工作表数据。我们将学习如何遍历目录、识别Excel文件、加载文件、提取指定工作表的数据并将其存储到一个字典中,同时解决常见的AttributeError: ‘str’ object has no attribute ‘sheet_names’错误,并探讨如何进一步实现跨文件同名工作表的合并。

1. 引言与背景

在数据分析和处理的日常工作中,我们经常会遇到需要从多个excel文件中提取特定数据的情况。这些excel文件可能包含多个工作表,而我们只对其中某些特定名称的工作表感兴趣。本教程旨在提供一个清晰、专业的指南,利用python的pandas库来自动化这一过程,将所需数据整合到一个方便操作的字典结构中。

2. 核心工具介绍

本教程主要依赖于以下两个Python库:

os 模块:用于操作系统相关的交互,例如遍历文件目录和构建文件路径。pandas 库:强大的数据处理库,尤其适用于表格数据。我们将使用其ExcelFile对象来读取Excel文件及其包含的工作表,并使用parse()方法将工作表数据加载为DataFrame。

3. 解决 AttributeError: ‘str’ object has no attribute ‘sheet_names’

在处理Excel文件时,一个常见的错误是尝试在文件路径字符串上调用sheet_names属性。例如,path.sheet_names()会导致AttributeError。这是因为sheet_names是pandas.ExcelFile对象的方法,而不是一个普通的字符串。

错误原因分析:当你通过os.path.join(root, fname)获取到的是一个字符串,代表Excel文件的完整路径。要访问工作表名称,你需要先使用pd.ExcelFile()将这个路径字符串封装成一个ExcelFile对象。

正确做法:

import pandas as pd# file_path 是一个字符串,例如 'data/my_excel.xlsx'xls_file = pd.ExcelFile(file_path) # 创建一个ExcelFile对象for sheet_name in xls_file.sheet_names: # 现在可以正确访问sheet_names属性    print(sheet_name)

4. 整合多个Excel文件中的特定工作表数据

以下是实现这一目标的代码示例,它将遍历指定目录下的所有Excel文件,提取名为“Portfolios”或“SP Search Term Req”的工作表数据,并将每个工作表的数据存储为一个Pandas DataFrame,最终将这些DataFrame收集到一个字典中。

import osimport pandas as pd# 1. 定义Excel文件所在的根目录# 请将 'your/excel/files/path' 替换为实际的目录路径excel_root_path = 'your/excel/files/path'# 2. 初始化一个字典,用于存储提取出的DataFrame# 字典的键将是工作表名称,值将是对应工作表的DataFramedf_dict_flex = {}# 3. 遍历指定目录及其子目录下的所有文件for root, _, files in os.walk(excel_root_path):    for fname in files:        # 4. 构造文件的完整路径        file_path = os.path.join(root, fname)        # 5. 确保只处理Excel文件(.xlsx 或 .xls 扩展名)        if file_path.endswith(('.xlsx', '.xls')):            try:                # 6. 使用pd.ExcelFile加载Excel文件,获得ExcelFile对象                xls_file = pd.ExcelFile(file_path)                print(f"正在处理文件: {file_path}")                # 7. 遍历当前Excel文件中的所有工作表                for sheet_name in xls_file.sheet_names:                    print(f"  发现工作表: {sheet_name}")                    # 8. 检查工作表名称是否符合我们的条件                    # 这里我们筛选 'Portfolios' 和 'SP Search Term Req' 两个工作表                    if sheet_name == 'Portfolios' or sheet_name == 'SP Search Term Req':                        # 9. 解析指定工作表的数据为DataFrame                        df = xls_file.parse(sheet_name)                        # 10. 将DataFrame存储到字典中                        # 注意:如果多个文件包含同名工作表,后处理的文件会覆盖前一个文件的数据                        # 如果需要合并同名工作表的数据,请参考下一节的“进一步合并同名工作表”                        df_dict_flex[sheet_name] = df                        print(f"    已将工作表 '{sheet_name}' 的数据加载到字典中。")            except Exception as e:                print(f"处理文件 '{file_path}' 时发生错误: {e}")                continue # 继续处理下一个文件# 11. 打印最终的字典内容(可选,用于验证)# print("n最终整合的DataFrame字典:")# for sheet_name, df in df_dict_flex.items():#     print(f"  工作表 '{sheet_name}' 包含 {len(df)} 行数据。")#     print(df.head()) # 打印前几行数据进行预览

5. 注意事项与最佳实践

路径设置:务必将excel_root_path变量替换为你的Excel文件实际所在的目录路径。文件类型过滤:代码中通过file_path.endswith((‘.xlsx’, ‘.xls’))确保只处理Excel文件,避免尝试用Pandas打开非Excel文件导致错误。错误处理:使用try-except块捕获文件加载或解析过程中可能出现的错误,增强代码的健壮性。df_dict_flex 的行为:当前代码逻辑是,如果多个Excel文件包含名称相同的工作表(例如,多个文件都有“Portfolios”工作表),那么df_dict_flex[sheet_name] = df会覆盖之前存储的数据,最终字典中只会保留最后一个被处理的同名工作表的数据。内存管理:如果处理大量大型Excel文件,内存消耗可能会很高。考虑逐个处理文件并及时释放不再需要的DataFrame,或者使用chunksize参数分块读取。

6. 进一步合并同名工作表数据

如果你的目标是,对于所有Excel文件中名称相同的工作表,将其数据合并(例如,纵向拼接)成一个单一的DataFrame,那么上述代码需要进行修改。

PHP与MySQL程序设计3 PHP与MySQL程序设计3

本书是全面讲述PHP与MySQL的经典之作,书中不但全面介绍了两种技术的核心特性,还讲解了如何高效地结合这两种技术构建健壮的数据驱动的应用程序。本书涵盖了两种技术新版本中出现的最新特性,书中大量实际的示例和深入的分析均来自于作者在这方面多年的专业经验,可用于解决开发者在实际中所面临的各种挑战。本书内容全面深入,适合各层次PHP和MySQL开发人员阅读,既是优秀的学习教程,也可用作参考手册。

PHP与MySQL程序设计3 253 查看详情 PHP与MySQL程序设计3

以下是实现这一目标的扩展代码示例:

import osimport pandas as pdexcel_root_path = 'your/excel/files/path' # 替换为你的路径merged_df_by_sheet = {} # 存储最终合并的DataFrame,键为工作表名for root, _, files in os.walk(excel_root_path):    for fname in files:        file_path = os.path.join(root, fname)        if file_path.endswith(('.xlsx', '.xls')):            try:                xls_file = pd.ExcelFile(file_path)                print(f"正在处理文件: {file_path}")                for sheet_name in xls_file.sheet_names:                    if sheet_name == 'Portfolios' or sheet_name == 'SP Search Term Req':                        df = xls_file.parse(sheet_name)                        # 如果该工作表名已存在于字典中,则进行纵向拼接                        if sheet_name in merged_df_by_sheet:                            merged_df_by_sheet[sheet_name] = pd.concat(                                [merged_df_by_sheet[sheet_name], df],                                 ignore_index=True # 重新生成索引                            )                            print(f"    已将工作表 '{sheet_name}' 的数据与现有数据合并。")                        else:                            # 否则,首次添加该工作表的数据                            merged_df_by_sheet[sheet_name] = df                            print(f"    已将工作表 '{sheet_name}' 的数据添加到字典。")            except Exception as e:                print(f"处理文件 '{file_path}' 时发生错误: {e}")                continue# 打印最终合并的DataFrame(可选)# for sheet_name, df in merged_df_by_sheet.items():#     print(f"n合并后的工作表 '{sheet_name}' 包含 {len(df)} 行数据。")#     print(df.head())

通过这种方式,merged_df_by_sheet字典将为每个符合条件的工作表名称存储一个包含所有相关Excel文件数据的合并DataFrame。

7. 总结

本教程详细讲解了如何利用Python和Pandas库来批量处理多个Excel文件,并从中提取特定工作表的数据。我们不仅解决了常见的AttributeError,还提供了两种数据存储策略:一种是将每个符合条件的工作表数据独立存储,另一种是将所有文件中同名工作表的数据进行纵向合并。掌握这些技术将大大提高你在数据整合方面的效率和灵活性。请根据你的具体需求选择合适的代码实现。

以上就是Pandas:高效整合多工作表Excel数据教程的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月29日 09:43:11
下一篇 2025年11月29日 09:43:32

相关推荐

  • yandex手机版浏览器下载币安交易所入口

    在当今数字货币快速发展的背景下,许多用户都希望能够通过安全且便捷的途径进入币安交易所进行交易与理财。而Yandex手机版浏览器作为一款兼顾流畅性与安全性的工具,正在逐渐成为投资者的重要选择。通过它,用户不仅能够轻松访问币安交易所的官方网站,还可以在交易过程中获得更佳的稳定性与隐私保护。与传统浏览器相…

    好文分享 2025年12月8日
    000
  • 欧易OKE交易所官网 v6.133.0 欧易官方APP最新版

    欧易(OKE)是一款全球领先的数字资产交易平台,为用户提供安全、稳定、可靠的数字资产交易服务。它支持多种主流加密货币的现货、合约及其他衍生品交易。 本文将为您提供欧易官方app最新版 v6.133.0 的下载与安装教程,点击文中提供的官方下载链接,即可轻松获取最新版本的应用程序,开启您的数字资产之旅…

    2025年12月8日
    000
  • yandex引擎oyi登录入口 oyi交易所官网yandex浏览器入口

    对于经常进行数字资产交易的用户而言,一个高效且稳定的入口平台不仅能够提升操作体验,还能保障资产的安全。yandex引擎提供的oyi登录入口,正是这样一扇通往数字金融世界的便捷大门。通过这一入口,用户能够顺利进入oyi交易所的官网,从而进行各类交易操作。无论是在桌面端还是移动端,yandex浏览器都能…

    2025年12月8日
    000
  • 看比特币历史价格用哪个网站好 能看币种历史价格的网站有哪些

    对于许多刚入圈的投资者来说,了解比特币及其他主流币的历史价格走势,是制定投资策略的基础。相比实时价格,历史价格数据更能反映出市场的长期趋势与波动规律。那么,到底该去哪里查看比特币等币种的历史价格?以下为你推荐一些支持查看历史k线与价格走势的网站平台。 在深入了解行情平台之前,建议新手用户先注册主流交…

    2025年12月8日 好文分享
    000
  • 认识比特币:数字时代的新型价值载体

    比特币是一种全新的价值范式,它通过区块链技术打破中心化机构对价值的垄断,以分布式账本和数学共识实现去中心化的价值转移;其2100万枚的绝对稀缺性设计使其成为对抗法币贬值的有效工具,并在经济动荡中展现出“数字黄金”的属性;比特币正在重构全球金融权力结构,为恶性通胀国家民众提供财富保全手段,推动跨境支付…

    2025年12月8日
    000
  • 走进比特币世界:解密加密货币的传奇

    比特币是一种去中心化的数字货币,通过区块链技术实现安全、透明的交易记录。1. 其核心机制包括区块链(分布式账本)、挖狂(验证交易并生成新区块)、去中心化(无中央控制)和匿名性与透明性(公开交易地址但不直接关联身份)。2. 购买比特币需通过交易所,步骤为:选择信誉良好的平台、注册并完成身份验证、充值法…

    2025年12月8日 好文分享
    000
  • 比特币:数字经济时代的独特存在

    比特币是一种去中心化的数字货币,其独特地位源于区块链技术支持的去中心化、稀缺性、安全性及全球流通特性;1.它通过挖狂产生,总量固定为2100万枚,对抗通胀;2.交易依赖区块链账本,由全网节点验证并打包进区块,确保不可篡改;3.获取方式主要为通过Binance、OKX、Huobi等交易所购买,需完成注…

    2025年12月8日
    000
  • 总共有多少个比特币?还有多少个比特币可以挖

    比特币总量恒定为2100万枚,剩余约200万枚待生成,预计2140年挖完;1. 总量上限由协议锁定,赋予其数字稀缺性;2. 剩余比特币通过工作量证明机制生成,每四年区块奖励减半,2024年4月已降至3.125枚;3. 当前每10分钟生成一个区块,生成速度持续放缓,稀缺性逐步增强;4. 稀缺性支撑其价…

    2025年12月8日
    000
  • BTC最新行情K线APP 比特币实时价格走势分析

    比特币(Bitcoin,简称BTC)是全球知名的去中心化数字货币,自问世以来,凭借其独特的区块链技术和稀缺性,成为了数字资产市场的风向标。由于其价格波动较大,实时掌握其行情动态对投资者来说非常关键。一款专业的行情分析APP能为您提供极大的便利。 比特币当前实时价格:根据最新数据,比特币价格为每枚11…

    2025年12月8日
    000
  • 比特币24小时K线图APP 实时BTC行情美元走势查询

    比特币(Bitcoin,简称BTC)是全球首个去中心化的数字货币,也是加密货币市场中最具代表性的币种。它不依赖于特定的中央机构来发行和管理,通过密码学和共识机制确保交易的安全性。对于关注数字资产的用户来说,一款能够实时查看BTC行情走势的工具至关重要。 比特币当前实时价格:根据最新数据,比特币价格为…

    2025年12月8日
    000
  • 什么是Vine Coin?VINE币价格预测2025-2030年

    Vine Coin(VINE)是一种基于区块链的新兴加密货币,旨在提供高效、安全、低费用的支付解决方案,并支持智能合约与跨境支付;其背后团队由区块链和金融专家组成,通过社区治理让持币者参与决策,并积极拓展电商、游戏等领域的应用生态;官方平台提供项目动态、白皮书、行情数据及社区交流功能;1. 2025…

    2025年12月8日
    000
  • 波场币实时行情走势图app TRX最新汇率美元24小时k线

    波场币(TRX)是波场(TRON)协议的官方代币,作为一个去中心化的区块链平台,波场致力于为去中心化互联网构建基础设施。TRX旨在推动一个全球性的去中心化娱乐内容共享系统,让创作者可以直接向消费者发布、存储和拥有内容,从而打破传统中心化平台的垄断。 波场币当前实时价格:根据最新数据,trx币价格为每…

    2025年12月8日
    000
  • 波场币TRX今日价格走势app 实时查看24小时k线图与汇率波动

    波场(TRON)是一个基于区块链的去中心化操作系统,其原生加密货币为波场币(TRX)。TRON致力于为去中心化互联网的建设提供底层技术支持,旨在打造一个全球范围内的去中心化内容娱乐生态系统。 波场币当前实时价格:根据最新数据,trx币价格为每枚0.3473美元(价格可能因市场波动而变化,具体以app…

    2025年12月8日
    000
  • 一文详细了解Solana推出机密余额功能:结合零知识证明(ZK)的代币隐私

    Solana 区块链在技术创新上再创里程碑,近期正式上线了“机密余额”功能。此项革命性的发展深度融合了零知识证明(ZK)技术,旨在为代币交易带来前所未有的隐私保护。该功能不仅显著增强了用户的匿名性,同时保持了Solana 网络一贯的高效交易处理能力,尤其契合了机构级用户的严格需求,预示着链上金融隐私…

    2025年12月8日
    000
  • 如何选择最划算方式购买Solana币?sol币价格今日动态实时监控App推荐

    Solana币(SOL)是当前备受关注的区块链资产之一,凭借其高速交易性能和强大的智能合约支持,在全球加密货币市场中占据重要地位。根据最新数据显示,SOL当前价格为约183.49美元。为了帮助用户更便捷地获取Solana币价格走势和交易机会,本文推荐一款功能全面的加密资产监控App,用户可通过点击本…

    2025年12月8日
    000
  • 什么是Peanut the Squirrel?PNUT币价格预测2025-2030年

    PNUT是近年来备受关注的Web3代币,1、2025年价格有望突破2.1 USDT,2、2026年或稳定在3.0 USDT左右,3、2027年价格区间可能在3.8-4.2 USDT之间波动,4、2028年有机会冲击5.0 USDT,5、2029年可能回落至4.2 USDT上下,6、2030年有望站稳…

    2025年12月8日
    000
  • 以太坊ETH最新价格走势 以太坊实时行情1小时K线图历史数据查询

     这意味着以太坊不仅仅是一种数字货币,更是一个充满无限可能的全球分布式计算平台,涵盖了从游戏、高级数据库到复杂的去中心化金融工具等广泛应用。无论是进行加密资产的借贷、赚取利息,还是创建和交易独一无二的非同质化代币(nft),以太坊都为用户提供了一个安全、透明且无需中介的平台。 应用下载 1、点击下载…

    2025年12月8日
    000
  • 狗狗币实时汇率走势APP DOGE币最新行情K线图查询

    狗狗币,简称DOGE,最初源于一个网络玩笑,但凭借其庞大的社区基础和独特的文化属性,已成长为数字货币市场中备受关注的币种之一。 狗狗币当前实时价格:根据最新数据,狗狗币价格为每枚0.22671美元(价格可能因市场波动而变化,具体以app内显示为准),市值约$34.49b。 对于想要随时掌握DOGE动…

    2025年12月8日
    000
  • 什么是DogeCoin?DOGE币价格预测2025-2030年

    狗狗币(DOGE)是一种起源于网络迷因的加密货币,1、其诞生于2013年,以“神烦狗”表情包为灵感,具有强烈的娱乐性和社区文化;2、技术上基于莱特币分支,采用Scrypt算法,具备交易速度快、手续费低的优势;3、供应无上限,每年增发约50亿枚,形成通胀模型以促进流通;4、价格受社区情绪和名人效应(如…

    2025年12月8日
    000
  • 狗狗币实时价格K线图APP DOGE币最新行情走势在线分析

    狗狗币,简称DOGE,最初是作为一个基于流行“Doge”网络迷因的玩笑而创建的数字货币。然而,凭借其活跃的社区文化和名人效应,狗狗币迅速获得了广泛的关注和认可,从一个玩笑项目成长为全球加密货币市场中一个备受瞩目的资产,拥有庞大的用户基础。 狗狗币当前实时价格:根据最新数据,狗狗币价格为每枚0.226…

    2025年12月8日
    000

发表回复

登录后才能评论
关注微信