Excel文件对比pandas 中的 read_excel

2023-12-26

我正在深入研究熊猫并进行实验。至于从Excel文件中读取数据。我想知道使用 ExcelFile 和 read_excel 有什么区别。两者似乎都有效(尽管语法略有不同,正如预期的那样),并且文档支持两者。在这两种情况下,文档描述的方法相同:“将 Excel 表读入 DataFrame”和“将 Excel 表读入 pandas DataFrame”。 (read_excel 的文档 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.excel.read_excel.html, and 对于 excel_file http://pandas.pydata.org/pandas-docs/stable/generated/pandas.ExcelFile.parse.html?highlight=excelfile#pandas.ExcelFile)

我在这里看到使用任何一个的答案,没有解决差异。此外,谷歌搜索没有产生讨论此问题的结果。

WRT 我的测试,这些看起来是等价的:

path = "test/dummydata.xlsx"
xl = pd.ExcelFile(path)
df = xl.parse("dummydata")  # sheet name

and

path = "test/dummydata.xlsx" 
df = pd.io.excel.read_excel(path, sheetname=0)

除了后者节省了我一行的事实之外,两者之间是否有区别,是否有理由使用其中任何一个?

Thanks!


除了语法之外没有什么特别的区别。从技术上来说,ExcelFile是一个类并且read_excel是一个函数。在任何一种情况下,实际的解析都是由_parse_excel内定义的方法ExcelFile.

在 pandas 的早期版本中,read_excel https://github.com/pandas-dev/pandas/blob/v0.12.0/pandas/io/excel.py#L16完全由一条语句组成(注释除外):

return ExcelFile(path_or_buf,kind=kind).parse(sheetname=sheetname,
                                              kind=kind, **kwds)

And ExcelFile.parse https://github.com/pandas-dev/pandas/blob/v0.12.0/pandas/io/excel.py#L81除了打电话之外没有做太多事情ExcelFile._parse_excel.

在最新版本的 pandas 中,read_excel https://github.com/pandas-dev/pandas/blob/v0.22.0/pandas/io/excel.py#L213确保它有一个ExcelFile对象(如果没有则创建一个),然后调用_parse_excel直接方法:

if not isinstance(io, ExcelFile):
    io = ExcelFile(io, engine=engine)

return io._parse_excel(...)

并通过更新(和统一)的参数处理,ExcelFile.parse https://github.com/pandas-dev/pandas/blob/v0.22.0/pandas/io/excel.py#L302实际上只是一个声明:

return self._parse_excel(...)

这就是为什么文档ExcelFile.parse now say

Equivalent to read_excel(ExcelFile, ...) See the read_excel docstring for more info on accepted parameters

As for 另一个答案 https://stackoverflow.com/a/38560203/95852其中声称ExcelFile.parse循环速度更快,这实际上取决于您是否正在创建ExcelFile每次都从头开始对象。您当然可以创建您的ExcelFile一次,在循环外,然后通过that to read_excel在你的循环内:

xl = pd.ExcelFile(path)
for name in xl.sheet_names:
    df = pd.read_excel(xl, name)

这相当于

xl = pd.ExcelFile(path)
for name in xl.sheet_names:
    df = xl.parse(name)

如果你的循环涉及不同的paths(换句话说,您正在阅读许多不同的工作簿,而不仅仅是一个工作簿中的多张工作表),那么您就无法避免必须创建一个全新的工作簿ExcelFile无论如何,每个路径都有一个实例,然后再一次,两个ExcelFile.parse and read_excel将是等效的(并且同样慢)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel文件对比pandas 中的 read_excel 的相关文章

  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • SQL Alchemy 中的 NULL 安全不等式比较?

    目前 我知道如何表达 NULL 安全的唯一方法 SQL Alchemy 中的比较 其中与 NULL 条目的比较计算结果为 True 而不是 NULL 是 or field None field value 有没有办法在 SQL Alchem
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • 如何在Power Query中对N列求和

    我的数据每月都会更新 因此我尝试创建一个强大的查询表 该表将显示我创建的枢转 N 列的总和 但我似乎不知道如何在强大的查询中执行此操作 我目前有这个代码 旋转后 创建要求和的列的列表 添加索引列以限制每行 添加一列 该列对该行的列进行求和
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • 两个日期之间的小时数在 Excel 中不起作用

    根据要求 我提供了一张简化的屏幕截图来说明该问题 如您所见 我减去了两个日期并将其格式化为 h mm ss 为什么这不能提供两个日期之间经过的总小时数 有一个更好的方法吗 下面有一个很好的答案 但我试图弄清楚为什么按照此屏幕截图中所示的方式
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 循环标记时出现“ValueError:无法识别的标记样式 -d”

    我正在尝试编码pyplot允许不同标记样式的绘图 这些图是循环生成的 标记是从列表中选取的 为了演示目的 我还提供了一个颜色列表 版本是Python 2 7 9 IPython 3 0 0 matplotlib 1 4 3 这是一个简单的代
  • Spark.read 在 Databricks 中给出 KrbException

    我正在尝试从 databricks 笔记本连接到 SQL 数据库 以下是我的代码 jdbcDF spark read format com microsoft sqlserver jdbc spark option url jdbc sql
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐

  • 使用java从PostgreSQL中的bytea检索文件

    您好 我正在使用下面的代码使用 java 从 postgresql bytea 检索文件 但在文件中我得到了类似 314530413142313141 的数字 File file new File c test doc FileOutput
  • 用于创建基本类型的实现的自定义

    所以我有以下类型 public abstract class Base public string Text get set public abstract int Value get set public class BaseImplA
  • 如何停止 RSpec 警告消息

    我刚刚开始学习在我的 Rails 应用程序上使用 RSpec 一切似乎都正常 但是当我跑步时rspec spec我收到了一页又一页的我认为是 lint 的消息 我不介意那些引用我的代码的内容 但其中很多都引用我正在使用的 Gems 我真的无
  • 从 URL 加载图像到 imageView 并缓存

    嗨 我是 android 的新初学者 我想从 URL 将图像插入到 imageView 中 但是每当第一次从 imageView 中的 URL 加载图像时 第二次应该在没有互联网的情况下插入图像 这意味着它也会存储在缓存中 为此 您可以使用
  • Flutter 处理调试控制台错误“找不到方法”

    在学习 Firebase 上的 Flutter 课程时 我尝试重新加载模拟器 尽管该应用程序运行良好 但我在调试控制台中收到了一些错误日志 EGL emulation 20277 eglMakeCurrent 0xe97df060 ver
  • 解析中没有注册设备(推送通知)

    我在使用 Parse com 处理推送通知时遇到问题 我可以传递一条消息进行解析 但是当我尝试从解析发送一条消息时 我被告知我有 没有注册的设备 而实际上 我在开发中心有几个 看起来代码工作正常 但感觉我错过了一些东西 有任何想法吗 这是我
  • 如何合并 GitLab CI 作业上的规则

    假设我有这个隐藏的 基础 工作 base job rules if CI COMMIT TAG when never if CI PIPELINE SOURCE web 我想将这些规则添加到新工作中 并且也能够扩展它们 例如 job 1 r
  • Laravel 和 Redis 扫描

    我正在尝试使用redisscan与拉拉维尔 我可以发出一个返回 10 个键的请求 但我希望循环直到返回所有键 我不确定如何用 laravel 做到这一点 目前我有 test Redis scan 0 match keypattern 我不知
  • 我可以检测到我的服务何时被“高级任务杀手”杀死吗

    我的应用程序运行地理定位服务 用户可以通过切换按钮激活或禁用该服务 为了检查服务的状态 我在共享首选项中编写了一个布尔值 多亏了我的服务的 onDestroy 我听到了服务的开始和结束 我的问题是 当用户使用 高级任务杀手 杀死服务时 我不
  • 我可以通过字符串引用 WPF 元素吗?

    我希望能够通过字符串中的文本引用 C 中的 WPF 元素 像这样的事情 SelectElementFromString TestButton Opacity 1 我可以这样做吗 你真的需要吗 不知怎的 我对此表示怀疑 怎么样 XAML
  • 如何在C#中强制退出应用程序?

    我有一个多线程 C 应用程序 它有读写器锁 但它在某些计算机上给出超时异常 无法及时获取锁 我需要强制关闭所有线程 我该如何做到这一点而不会出现任何额外的异常 我认为强制应用程序退出的最佳解决方案是使用以下代码行 Environment E
  • 子目录中的递归 make

    我怎样才能订购makeMakefile中的命令在所有子目录中递归执行make命令 在子目录的 Makefile 中定义 Read 递归使用 Make http www gnu org software make manual make ht
  • 如何从 Perl 中的逗号分隔值中提取值?

    我有一个日志文件 其中包含来自不同服务器的统计信息 我仅使用正则表达式将统计信息与此日志文件分开 我正在尝试从正在运行的进程中捕获 CPU 使用情况 对于 SunOS 我有以下输出 process 10050 user1 218 59 0
  • 是否可以将 python 子进程的输出实时流式传输到网页?

    预先感谢您的任何帮助 我对 python 相当陌生 对 html 甚至更新 过去几天我一直在尝试创建一个带有按钮的网页 以在家庭服务器上执行任务 目前我有一个 python 脚本 它生成一个带有按钮的页面 See the simplifie
  • 正向索引 vs 倒排索引 为什么?

    我正在阅读有关倒排索引 由 Solr Elastic Search 等文本搜索引擎使用 的内容 据我了解 如果我们以 Person 为例 属性与 Person 的关系是倒置的 John gt PersonId 1 PersonId 2 Pe
  • 从 Sentinel C# 获取 Redis Master 地址

    我正在尝试使用哨兵来获取我的主站的连接地址 问题是哨兵仅在故障转移时发送地址 但是如果我的主站关闭并且从站被提升为主站并且我的应用程序刚刚启动它就不会知道并且不会收到原来master宕机的消息 有什么办法可以和sentinel通信并询问他认
  • 插入到JPA集合而不加载它

    我目前正在使用这样的代码将新条目添加到我的实体中的集合中 player em find Player class playerId player getAvatarAttributeOwnership add new AvatarAttri
  • 在反应本机中多个文本元素的文本换行?

    假设我有以下反应本机代码 FormatText js
  • 使用Android.mk复制/system中的多个txt文件

    目标 我想复制multiple使用 Android mk 在 system Android 设备 中创建 txt 文件 我的发现 我们可以使用两种方法复制文件 1 使用 PRODUCT COPY FILES 这是通过 devices mak
  • Excel文件对比pandas 中的 read_excel

    我正在深入研究熊猫并进行实验 至于从Excel文件中读取数据 我想知道使用 ExcelFile 和 read excel 有什么区别 两者似乎都有效 尽管语法略有不同 正如预期的那样 并且文档支持两者 在这两种情况下 文档描述的方法相同 将