电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

使用Python快速打開一個百萬行級別的超大Excel文件的方法

瀏覽:8日期:2022-06-27 15:54:17

知乎上有同學求助說,當他試圖打開一個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’]id100耗時0.404秒鐘>>> read_xlsx(False)[’Sheet’]id100耗時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())print(df.tail())print(’耗時%0.3f秒鐘’%(t1-t0))>>> read_excel_by_pandas() id 語文 數學 英語 物理0 1 90 100 95 991 2 90 100 95 992 3 90 100 95 993 4 90 100 95 994 5 90 100 95 99 id 語文 數學 英語 物理999995 999996 90 100 95 99999996 999997 90 100 95 99999997 999998 90 100 95 99999998 999999 90 100 95 99999999 1000000 90 100 95 99耗時81.369秒鐘

結論:處理超大的Excel文件時,使用openpyxl模塊的只讀模式,可以快速打開并取得指定格子的數據,但不要嘗試將全部數據讀入到自己定義的數據結構中,這將花費漫長的時間。對此,pandas也無能為力。

到此這篇關于使用Python快速打開一個百萬行級別的超大Excel文件的方法的文章就介紹到這了,更多相關python打開excel文件內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: python
相關文章:
主站蜘蛛池模板: KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 上海新光明泵业制造有限公司-电动隔膜泵,气动隔膜泵,卧式|立式离心泵厂家 | AGV无人叉车_激光叉车AGV_仓储AGV小车_AGV无人搬运车-南昌IKV机器人有限公司[官网] | 披萨石_披萨盘_电器家电隔热绵加工定制_佛山市南海区西樵南方综合保温材料厂 | 强效碱性清洗剂-实验室中性清洗剂-食品级高纯氮气发生器-上海润榕科学器材有限公司 | 贵州水玻璃_-贵阳花溪闽兴水玻璃厂 | 珠光砂保温板-一体化保温板-有釉面发泡陶瓷保温板-杭州一体化建筑材料 | 喷播机厂家_二手喷播机租赁_水泥浆洒布机-河南青山绿水机电设备有限公司 | 在线PH计-氧化锆分析仪-在线浊度仪-在线溶氧仪- 无锡朝达 | 冷水机,风冷冷水机,水冷冷水机,螺杆冷水机专业制造商-上海祝松机械有限公司 | 臭氧老化试验箱,高低温试验箱,恒温恒湿试验箱,防水试验设备-苏州亚诺天下仪器有限公司 | 低浓度恒温恒湿称量系统,强光光照培养箱-上海三腾仪器有限公司 | 深圳宣传片制作_产品视频制作_深圳3D动画制作公司_深圳短视频拍摄-深圳市西典映画传媒有限公司 | 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | 压缩空气冷冻式干燥机_吸附式干燥机_吸干机_沪盛冷干机 | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | 网站建设_网站制作_SEO优化推广_百度推广开户_朋友圈网络科技 | 洛阳装修公司-洛阳整装一站式品牌-福尚云宅装饰 | LED灯杆屏_LED广告机_户外LED广告机_智慧灯杆_智慧路灯-太龙智显科技(深圳)有限公司 | 低合金板|安阳低合金板|河南低合金板|高强度板|桥梁板_安阳润兴 北京租车牌|京牌指标租赁|小客车指标出租 | 武汉EPS线条_EPS装饰线条_EPS构件_湖北博欧EPS线条厂家 | arch电源_SINPRO_开关电源_模块电源_医疗电源-东佑源 | 安平县鑫川金属丝网制品有限公司,声屏障,高速声屏障,百叶孔声屏障,大弧形声屏障,凹凸穿孔声屏障,铁路声屏障,顶部弧形声屏障,玻璃钢吸音板 | 湖南自考_湖南自学考试网| 苏州西朗门业-欧盟CE|莱茵UL双认证的快速卷帘门品牌厂家 | 飞歌臭氧发生器厂家_水处理臭氧发生器_十大臭氧消毒机品牌 | 欧版反击式破碎机-欧版反击破-矿山石料破碎生产线-青州奥凯诺机械 | 机床导轨_导轨板_滚轮导轨-上海旻佑精密机械有限公司 | 天津试验仪器-电液伺服万能材料试验机,恒温恒湿标准养护箱,水泥恒应力压力试验机-天津鑫高伟业科技有限公司 | 耐磨焊丝,堆焊焊丝,耐磨药芯焊丝,碳化钨焊丝-北京耐默公司 | 密集架-手摇-智能-移动-价格_内蒙古档案密集架生产厂家 | 福建省教师资格证-福建教师资格证考试网 | ZHZ8耐压测试仪-上海胜绪电气有限公司 | 油液红外光谱仪-油液监测系统-燃油嗅探仪-上海冉超光电科技有限公司 | 水稻烘干机,小麦烘干机,大豆烘干机,玉米烘干机,粮食烘干机_巩义市锦华粮食烘干机械制造有限公司 水环真空泵厂家,2bv真空泵,2be真空泵-淄博真空设备厂 | 台式核磁共振仪,玻璃软化点测定仪,旋转高温粘度计,测温锥和测温块-上海麟文仪器 | 无锡装修装潢公司,口碑好的装饰装修公司-无锡索美装饰设计工程有限公司 | 浙江筋膜枪-按摩仪厂家-制造商-肩颈按摩仪哪家好-温州市合喜电子科技有限公司 | 【黄页88网】-B2B电子商务平台,b2b平台免费发布信息网 | 锡膏喷印机-全自动涂覆机厂家-全自动点胶机-视觉点胶机-深圳市博明智控科技有限公司 | 英思科GTD-3000EX(美国英思科气体检测仪MX4MX6)百科-北京嘉华众信科技有限公司 |