使用Python如何快速打开一个百万行级别的超大Excel文件?

Python读写excel文件 阅读详情

知乎上有同学求助说,当他试图打开一个20M左右的excel文件时,无论是使用pandas的read_excel,还是直接使用xlrd或者openpyxl模块,速度都慢到了无法忍受的程度,耗时大约1分钟左右。

真的会这样吗?第一感觉是,这位同学在使用openpyxl模块时没有设置只读模式。为便于测试,先用下面的代码生成一个一百万行数据的excel文件。

>>> from openpyxl import Workbook
>>> wb = Workbook()
>>> sh = wb.active
>>> sh.append(['id', '语文', '数学', '英语', '物理'])
>>> for i in range(1000000): # 写入100万行数据
    sh.append([i+1, 90, 100, 95, 99])


>>> wb.save(r'd:\bigxlsx.xlsx')
>>> import os
>>> os.path.getsize(r'd:\bigxlsx.xlsx') # 文件大小:20M字节
20230528

接下来定义了一个使用openpyxl模块打开文件的函数,分别考察关闭和开启只读模式的时间消耗。

>>> from openpyxl import load_workbook
>>> import time
>>> def read_xlsx(read_only):
    t0 = time.time()
    wb = load_workbook(r'd:\bigxlsx.xlsx', read_only=read_only)
    t1 = time.time()
    print(wb.sheetnames)
    print(sh.cell(row=1, column=1).value)
    print(sh.cell(row=100, column=3).value)
    print('耗时%0.3f秒钟'%(t1-t0))


>>> read_xlsx(True)
['Sheet']
id
100
耗时0.404秒钟
>>> read_xlsx(False)
['Sheet']
id
100
耗时67.817秒钟

运行测试,果然,不开启只读的话,真的需要1分多钟,而使用只读模式的话,则仅需0.4秒钟。

不过,也别高兴得太早,openpyxl模块并没有提供像pandas.read_excel()那样把全部数据读入一个数据结构的功能,只能定位到行、列或格子以后再读取数据。要想使用openpyxl模块把全部数据读入到数组或DataFrame中,需要遍历所有的行和列,这仍然是一个非常耗时的操作。

那么,pandas.read_excel()是否也支持只读模式呢?遗憾的是,read_excel()并没有类似read_only这样的参数。尽管read_excel()可以接受文件路径、文件对象、类文件对象,甚至是二进制数据,但即使将文件内容传入,read_excel()解析这100万行数据仍然需要大约80秒钟。下面的代码验证了这一点。

>>> import pandas as pd
>>> def read_excel_by_pandas():    
    with open(r'd:\bigxlsx.xlsx', 'rb') as fp:
        content = fp.read()
        t0 = time.time()
        df = pd.read_excel(content, engine='openpyxl')
        t1 = time.time()
    print(df.head()) # 显示前5行
    print(df.tail()) # 显示后5行
    print('耗时%0.3f秒钟'%(t1-t0))


>>> read_excel_by_pandas()
   id  语文   数学  英语  物理
0   1  90  100  95  99
1   2  90  100  95  99
2   3  90  100  95  99
3   4  90  100  95  99
4   5  90  100  95  99
   id      语文   数学  英语  物理
999995   999996  90  100  95  99
999996   999997  90  100  95  99
999997   999998  90  100  95  99
999998   999999  90  100  95  99
999999  1000000  90  100  95  99
耗时81.369秒钟

结论:处理超大的Excel文件时,使用openpyxl模块的只读模式,可以快速打开并取得指定格子的数据,但不要尝试将全部数据读入到自己定义的数据结构中,这将花费漫长的时间。对此,pandas也无能为力。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


这份完整版的Python全套学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

百万级数据excel导出功能如何实现? Python分分钟完成。 最近我做过一个MySQL百万级别数据的excel导出功能,已经正常上线使用了。这个功能挺有意思的,里面需要注意的细节还真不少,现在拿出来跟大家分享一下,希望对你会有所帮助。原始需求:用户在UI界面上点击全部导出按钮,就能导出所有商品数据。咋一看,这个需求挺简单的。但如果我告诉你,导出的记录条数,可能有一百多万,甚至两百万呢?这时你可能会倒吸一口气。如果同步导数据,接口很容易超时。如果把所有数据一次性装载到内存,很容易引起OOM。数据量太大sql语句必定很慢。 阅读详情

相关推荐

Python读取超大Excel表格(100万行x30列)三种方法

Python读取超大Excel表格

weixin_42636075的博客 3777

Python使用openpyxl模块小批量处理Excel文件

Excel导出并处理数据: 1、多个Excel工作簿待处理 2、Excel工作簿中的多个工作表待处理 3、Excel工作表的多个数据待处理 解决思路 1. 键盘输入并保存待处理excel目录和excel输出目录 2. 在excel输出目录下创建新工作簿,修改表内行列名,返回输出目录+新建工作簿名的完整路径 3. 遍历待处理excel目录下的所有工作簿,同时判断遍历的工作簿是否存在需要处理的工作表,如果需要,接5;不需要,接4 4. 退出 5. 将遍历到的当前工作簿中待处理表的数据进行处理,存入新

qq_46033586的博客 1743

不盈之道,SAP CDS View 开发中的留白、节制与长久

摘要:老子"不欲盈"思想在SAP CDS View开发中体现为克制的建模观。好的CDS View应保持业务语义清晰、技术契约稳定、性能可控,而非追求功能完备。SAP官方文档强调CDS View的核心是从数据源选择数据形成可消费模型,而非包办所有功能。实践中应遵循分层原则:基础层保持稳定语义,组合层处理跨表关系,消费层面向具体场景。这种"不盈"的建模方式能避免视图臃肿,确保系统可维护性和扩展性,正如SAP VDM分层架构所倡导的克制设计理念。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4187

python xlsx 大文件_使用Python如何快速打开一个百万行级别的超大Excel文件?

知乎上有同学求助说,当他试图打开一个20M左右的excel文件时,无论是使用pandas的read_excel,还是直接使用xlrd或者openpyxl模块,速度都慢到了无法忍受的程度,耗时大约1分钟左右。真的会这样吗?第一感觉是,这位同学在使用openpyxl模块时没有设置只读模式。为便于测试,先用下面的代码生成一个一百万行数据的excel文件。接下来定义了一个使用openpyxl模块打开文件的...

weixin_33558958的博客 1066

【Python】用 Python 快速查找 Excel 中的重复行

找重复行虽然可以通过Excel实现,但是当数据量巨大时光是找结果就很费时间,所以考虑用Python实现。

每日出拳老爷子的博客 947

Python流式拆分超大CSV文件,告别Excel卡死

CSV作为最通用的数据交换格式之一,在数据分析、数据库导入和日常办公中无处不在。然而,当文件行数动辄上百万,或体积达到数百MB时,Excel直接卡死、导入工具超时等问题便接踵而至。解决这类问题的核心思路是流式处理:像读取迭代器一样逐行消费数据,而不是一次性载入内存。Python内置的csv模块天然支持这种模式,配合按行数或按字段值的拆分策略,可以轻松将大文件切割成可管理的小块,同时保持极低的内存占用,并对字段内逗号、换行等边界情况有良好支持。这一技术价值不仅在于缓解工具压力,更使得并行计算、分批入库、正则清

weixin_34121282的博客 427

遇到100万行的 Excel,还没打开,电脑和我都崩溃了,该怎么办?

CDA数据分析师 出品 作者:曹鑫 编辑:JYD 我真遇到了上百万行的 Excel 年底到了,我想把公司历年的销售明细和指标等业务数据放在一起透视做分析,觉得这样很方便,但是无奈一张表就50多万行,好几年的数据加在一起有两三百万行,受 excel行数限制,我只能将数据按年分开,一年一张表,每张表里的表头项目都是一样的。 业务发展越来越大,数据的规模会越来越大,在初期的时候,还觉得Excel 够用了,但是当 Excel 规模的数据量不断增加,我们开始发现打开 Excel 越来越慢,操作一下 Excel .

CDA数据分析师 9324

用Python脚本高效拆分超大CSV文件:从原理到代码实战

CSV文件作为最通用的数据交换格式,在数据分析与日常办公中无处不在。然而当数据量达到数GB时,Excel等传统工具往往无法胜任,导致文件打不开、导入数据库困难等痛点,严重影响工作效率。此时,基于Python脚本的流式读取与分组写入技术,成为了解决大规模CSV文件拆分的有效方案。它通过逐行扫描代替一次性加载,既避免内存溢出,又支持按行数、按字段值等灵活拆分规则,满足业务数据分发、并行处理、数据归档等典型场景需求。本文从实际工程痛点出发,完整讲解了CSV拆分的工具选型、核心代码实现与常见踩坑记录,帮助读者快速构

weixin_33841503的博客 385

使用load data方式将xlsx表格百万行文件快速导入mysql中(一)

目录 一、需求 二、解决方法 三、三种方式的实现 navicat直接导入 python脚本 load data命令 四、三种方式效率比较 五、总结 navicat直接导入 我是同时使用Navicat和mysql-front作为可视化界面的,各有优缺点。如front可以方便的新建表格、管理表格列等细节。navicat导入时可选更多格式文件,front不能导入xlsx格式文件...

ShoneX98的博客 8546

用Python高效分割超大CSV文件:告别Excel卡死与内存不足

CSV作为通用数据交换格式,以其简单的纯文本结构被广泛使用,但面对超大规模文件时,Excel存在行数硬限制与加载性能瓶颈,pandas虽能处理却常因内存占用过高而崩溃。理解CSV的解析原理,采用流式逐行读取的方式,仅维护少量行缓冲,即可实现内存稳定占用。通过Python脚本对文件按指定行数或大小进行分割,配合编码识别、表头保留与分隔符探测,能有效避免字段内换行导致的数据错乱。该方案适用于数据分析师、运营、财务等经常处理大量导出数据的场景,将超大CSV拆分为多个可用Excel直接打开的小文件,既保证了数据完整

weixin_29228203的博客 146

零代码构建AI智能体:COZE可视化工作流实战指南

AI智能体(AI Agent)是当前人工智能领域的重要发展方向,它通过模块化设计和工作流驱动,使大语言模型从被动对话转向主动执行。其核心原理在于将复杂的任务分解为可规划、可执行的步骤,并调用外部工具(插件)完成闭环。这一技术价值在于显著降低了自动化流程的开发门槛,让非程序员也能构建实用的数字助手。典型的应用场景包括智能客服、内容自动生成、数据分析和跨系统业务流程自动化。本文以COZE平台为例,深入解析如何通过其直观的可视化界面和丰富的插件生态,像搭积木一样快速搭建如“早安简报生成器”等实用智能体,并分享指令

469

在Pandas中使用大型Excel文件

Today we are going to learn how to work with large files in Pandas, focusing on reading and analyzing an Excel file and then working with a subset of the original data. 今天,我们将学习如何在Pandas中处理大型文件,重点是读取...

cumei1658的博客 2386

【Linux系统】Kdenlive软件多机位同音频视频同步化处理

Kdenlive简介 官网链接:https://kdenlive.org/zh/ 命令行安装: apt-get install kdenlive Kdenlive能够进行多轨道视频编辑,可以使用和调整多条音频、视频轨道。每条轨道可以按需进行单独锁定、静音。 Kdenlive多机位同音频视频同步化处理步骤 1. 新建Kdenlive文件 选择<文件>-<新建>,建立新的kdenlive文件,初始设置为<视频轨:2>,<音频轨:2>。 视.

qq_31550269的博客 1886

Python将同一文件夹下大量txt存入一个Excel文件(xlwt\openpyxl)以及批量合并txt的超快方法

文章目录数据说明用xlrd和xlwt读写excel使用openpyxl库读写excel最简单的批量合并txt(适用海量数据)win10批量合并办法: 数据说明 这个数据是我们组找的19年全国大学生数学建模竞赛C题的数据集,是上海市出租车GPS数据集,来自香港科技大学计算机科学与工程系智慧城市研究小组所用的科研数据。 附上网盘链接:https://pan.baidu.com/s/1ERkIz8jD5...

锵锵锵锵蒋的博客 6647

逆向工程师必备:用MDL绕过游戏保护读取内存数据的完整流程(附POC代码)

本文深入探讨了内核级内存访问技术,重点介绍了如何利用MDL(Memory Descriptor List)机制稳定、隐蔽地绕过游戏反作弊系统读取进程内存。通过对比MmCopyVirtualMemory等方法的优劣,提供了完整的MDL映射实战代码与反检测策略,为逆向工程师在内核态进行安全内存操作提供了专业指导。

weixin_29227425的博客 626

2025反爬虫革命:京东商品接口的动态指纹认证与量子加密传输方案

在2025年,全球电商API接口面临的安全威胁呈现指数级增长:京东构建了基于硬件、软件、行为三重维度的设备指纹模型:京东构建了基于BB84+E91混合协议的量子密钥中继网络:

FB13713612741的博客 1649

python导出百万数据到excel_Python 批量插入100万级数据到Excel文件(简洁版)

引言python是一门开发语言,可以用来写大型项目,也可以用来写脚本,比如自动化脚本,也可以用来写工具。背景我们平时做测试,不一定做自动化测试才用去python,做功能测试,也就是点点点,也可以把它用起来。比如,我现在页面有一个功能,导入的功能,我想测它最大支持多少数据量导入,或者说多大的文件导入,那么我们得在excel中写入很多条数据(导入模板是xls,xlsx)。如果是自己手一条一条去弄,显然...

weixin_39876514的博客 864

从零开始用TS开发babylonjs - 本机环境搭建

babylonjs,初始化本地安装,web3d引擎

han3527638的专栏 797

Excel百万数据高性能导出方案!

百万数据Excel导出不再是难题!通过分块写入、压缩存储、并行列队和格式优化,你可以实现快速、稳定的导出,兼顾性能和用户体验。这些方案不仅是技术解法,更是数据时代的高效哲学——用最少资源创造最大价值。无论是报表生成还是数据分析,掌握这些技巧,你的处理能力将一飞冲天!不是 Excel 导不动百万数据,而是你还没掌握正确的导出姿势!

朱雀随云记的博客 1142

基于激光雷达的目标跟随功能移植到自己的ROS机器人小车上

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、下载目标跟随的源码二、修改话题名称1.修改/cmd_vel话题名称2.修改/scan话题名称3.修改双电机正反转4.目标跟随功能测试 前言 本人尝试把github上的一个目标跟随项目移植到自己的机器人小车上,并且成功了,最终小车可以跟着人移动,在这里分享一下心得。基于激光雷达的目标跟随,通过获取激光雷达的信息,跟随最近的物体。 提示:以下是本篇文章正文内容,下面案例可供参考 一、下载目标跟随的源码 源码地址:https:

weixin_44574633的博客 4463

2025秋招LLM大模型多模态面试题(八)- langchain完整面试题

1. **什么是 LangChain** 2. **LangChain 包含哪些核心模块** - 模型输入/输出(Model I/O) - 组件管理 - 数据处理 - 链式组合 - 记忆与上下文管理 - 外部集成 3. **一些核心概念** 4. **什么是 LangChain Agent?** 5. **什么是 LangChain model?** 6. **LangChain 包含哪些特点?** 7. **LangChain 如何使用?** - LangChai

weixin_41496173的博客 2195

NGSIM数据处理避坑指南:如何用Python自动分割超百万行CSV文件(Excel兼容版)

本文针对NGSIM数据集因行数超限导致Excel无法直接打开的问题,提供了一套基于Python的自动化解决方案。通过Pandas分块读取、按路段和车型等条件筛选数据,并智能检测数据量,自动将超百万行的CSV文件分割为Excel兼容的小文件,同时实现结构化存储,有效提升交通数据处理效率。

p1q2r的博客 332

YOLOv12涨点改进 | 全网独家首发Conv改进篇 | Arxiv 2025 | 引入一种新的WConv加权卷积改进YOLOv12,显著提升其特征提取能力和目标检测精度

本文提出了一种新型加权卷积(WConv)模块,通过引入最优密度函数动态调整邻域像素权重,显著提升了YOLOv12目标检测性能。WConv在保持参数数量不变的情况下,提高了模型精度(VGG准确率提升10%)、增强了小目标检测能力,并改善了多尺度特征提取。文中详细介绍了模块原理、网络结构改进方法,并提供了核心代码实现和yaml配置文件。实验表明,该方法在图像任务中最高可降低53%的损失,虽然会带来11%的时间开销,但具有优异的鲁棒性。该技术可广泛应用于2D/3D图像处理领域。

Ai缝合怪、助力小伙伴高效发论文 218

终极指南:用xsv快速处理百万行CSV数据,告别Excel卡顿烦恼

你是否曾被大型CSV文件折磨得焦头烂额?Excel打开时转圈圈,Python脚本写起来又太复杂?今天我要向你介绍一个神奇的工具——xsv,一个用Rust编写的高速CSV命令行工具包,它能让你在3秒内完成百万行CSV数据的处理!无论你是数据分析师、开发者还是普通用户,掌握xsv都将大大提升你的工作效率。 ## 为什么选择xsv而不是Excel? | 特性 | Excel | xsv | |---

gitblog_00632的博客 645

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: 技术大老64岁被裁员,说出一句话,让我好扎心
下一篇: 搞疯爬虫程序员的8个难点
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2840原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值