目次
前言在数据分析和处理处罚的一样平常工作中,Excel文件是一种非经常见的数据存储格式。Python,作为一种功能强大的编程语言,提供了多种库来帮助用户轻松读取Excel文件。本文将介绍几种使用Python读取Excel文件的常见方法。 1. 使用pandas读取Excel文件pandas是Python数据分析范畴中最受欢迎的库之一,它提供了read_excel函数来直接读取Excel文件。 [code]import pandas as pd # 读取Excel文件 df = pd.read_excel('example.xlsx') # 显示前几行数据 print(df.head()) [/code]这种方法简单快捷,非常适合进行数据分析工作。pandas支持读取.xls和.xlsx格式的文件,而且可以通过参数指定特定的工作表和单位格范围。 2. 使用openpyxl读取Excel文件openpyxl是另一个强大的库,专门用于读写.xlsx文件。与pandas不同,openpyxl允许用户以更细粒度的方式利用Excel文件,例如读取或编辑单位格格式。 [code]from openpyxl import load_workbook # 加载Excel文件 wb = load_workbook('example.xlsx') # 选择工作表 sheet = wb.active # 读取特定单位格的数据 cell_value = sheet['A1'].value print(cell_value) [/code]openpyxl是处理处罚复杂Excel文件的理想选择,比如需要读取或设置单位格的格式、公式等。 3. 使用xlrd和xlwt读取Excel文件对于较旧版本的.xls文件,xlrd和xlwt库提供了读取和写入的功能。虽然它们不支持.xlsx格式的文件,但对于需要处理处罚遗留数据的环境非常有用。 [code]import xlrd # 打开文件 workbook = xlrd.open_workbook('example.xls') # 选择工作表 sheet = workbook.sheet_by_index(0) # 读取特定单位格的内容 cell_value = sheet.cell_value(0, 0) print(cell_value) [/code]只管xlrd最新版本已经限定了对.xlsx文件的支持,但它仍旧是处理处罚.xls文件的有效工具。 4. 使用pyexcel作为一个同一的接口pyexcel提供了一个简单的API来读取、处理处罚和写入多种不同格式的Excel文件。假如你在探求一个同一的接口来处理处罚不同类型的Excel文件,pyexcel大概是一个不错的选择。 [code]import pyexcel as p # 读取Excel文件 data = p.get_records(file_name='example.xlsx') for record in data: print(record) [/code]pyexcel支持.xls、.xlsx、.xlsm等多种格式,使其成为处理处罚不同类型Excel文件的便捷工具。 5.使用 Tablib 读取 ExcelTablib是 Python 中最盛行的库之一,用于导入和导出各种格式的数据。它最初是由盛行requests库的创建者开发的,因此其特点是同样关注开发人员体验和人体工程学。 安装: [code]$ pip install tablib [/code]代码: [code]**import** tablib def iter\_excel\_tablib(file: IO\[bytes\]) -> Iterator\[dict\[str, object\]\]: yield from tablib.Dataset().load(file).dict [/code]只需一行代码,该库就能完成所有繁重的工作。 在继承执行基准测试之前,我们先看看第一行的效果: [code]with open(‘file.xlsx’, ‘rb’) as f:… rows = iter_excel_tablib(f)… row = next(rows)… print(row)…OrderedDict([(‘number’, 1),(‘decimal’, 1.1),(‘date’, datetime.datetime(2000, 1, 1, 0, 0)),(‘boolean’, True),(‘text’, ‘CONTROL ROW’)])[/code]OrderedDict是 Python 的子类,dict具有一些额外的方法来重新排列字典顺序。它是在内置collections模块中界说的,当您哀求字典时,它就是 tablib 返回的内容。由于OrderedDict是 的子类dict而且它是在内置模块中界说的,因此我们不介怀并认为它足以满足我们的目的。 6.使用 Openpyxl 读取 ExcelOpenpyxl是一个用 Python 读写 Excel 文件的库。与 Tablib 不同,Openpyxl 仅专用于 Excel,不支持任何其他文件类型。 究竟上,tablib和pandas在读取 xlsx 文件时都在底层使用 Openpyxl。也许这种专业化会带来更好的体现。 安装: [code]$ pip install openpyxl [/code]代码: [code]**import** openpyxl def iter\_excel\_openpyxl(file: IO\[bytes\]) -> Iterator\[dict\[str, object\]\]: workbook = openpyxl.load\_workbook(file) rows = workbook.active.rows headers = \[str(cell.value) **for** cell in next(rows)\] **for** row in rows: yield dict(zip(headers, (cell.value **for** cell in row))) [/code]这次我们要写的代码更多一些,让我们来分解一下:
输出: [code]with open(‘file.xlsx’, ‘rb’) as f:… rows = iter_excel_openpyxl(f)… row = next(rows)… print(row){‘boolean’: True,‘date’: datetime.datetime(2000, 1, 1, 0, 0),‘decimal’: 1.1,‘number’: 1,‘text’: ‘CONTROL ROW’}[/code]7.使用 LibreOffice 读取 Excel我们如今已经用尽了将 Excel 导入 Python 的传统且显而易见的方法。我们使用了顶级指定库并得到了不错的效果。如今是跳出框框思考的时间了。 LibreOffice是其他办公套件的免费开源替换品。LibreOffice 可以处理处罚 xls 和 xlsx 文件,而且还恰恰包罗带有一些有用的下令行选项的无头模式: LibreOffice 下令行选项之一是在不同格式之间转换文件。例如,我们可以使用 libreoffice 将 xlsx 文件转换为 csv 文件: [code]$ libreoffice --headless --convert-to csv --outdir . file.xlsx convert file.xlsx -> file.csv using filter: Text - txt - csv (StarCalc) $ head file.csv number,decimal,date,**boolean**,text 1,1.1,01/01/2000,TRUE,CONTROL ROW 2,1.2,01/02/2000,FALSE,RANDOM TEXT:0.716658989024692 3,1.3,01/03/2000,TRUE,RANDOM TEXT:0.966075283958641 [/code]让我们用 Python 将其拼接起来。我们起首将 xlsx 文件转换为 CSV,然后将 CSV 导入 Python: [code]**import** subprocess, tempfile, csv def iter\_excel\_libreoffice(file: IO\[bytes\]) -> Iterator\[dict\[str, object\]\]: with tempfile.TemporaryDirectory(prefix=‘excelbenchmark') as tempdir: subprocess.run(\[ ‘libreoffice', ‘–headless', ‘–convert-to', ‘csv', ‘–outdir', tempdir, file.name, \]) with open(f'{tempdir}/{file.name.rsplit(“.”)\[0\]}.csv', ‘r') as f: rows = csv.reader(f) headers = list(map(str, next(rows))) **for** row in rows: yield dict(zip(headers, row)) [/code]让我们来分析一下:
8.使用 DuckDB 读取 Excel假如我们已经开始使用外部工具,为什么不给新人一个竞争的机遇呢? 安装: [code]$ pip install duckdb [/code]代码: [code]**import** duckdb def iter\_excel\_duckdb(file: IO\[bytes\]) -> Iterator\[dict\[str, object\]\]: duckdb.install\_extension(‘spatial') duckdb.load\_extension(‘spatial') rows = duckdb.sql(f"“” SELECT \* FROM st\_read( ‘{file.name}', open\_options=\[‘HEADERS=FORCE', ‘FIELD\_TYPES=AUTO'\]) “”") **while** row := rows.fetchone(): yield dict(zip(rows.columns, row)) [/code]让我们来分析一下:
9.使用 Calamine 读取 Excel比年来,Python 中的每个性能题目似乎最终都用另一种语言来解决。作为一名 Python 开发人员,我认为这是一个真正的祝福。这意味着我可以继承使用我风俗的语言并享受所有其他语言的性能优势! Calamine是一个纯 Rust 库,用于读取 Excel 和 OpenDocument 电子表格文件。要安装python-calamine炉甘石的 Python 绑定,请执行以下下令: [code]$ pip install python-calamine [/code]代码: [code]**import** python\_calamine def iter\_excel\_calamine(file: IO\[bytes\]) -> Iterator\[dict\[str, object\]\]: workbook = python\_calamine.CalamineWorkbook.from\_filelike(file) # type: ignore\[arg-type\] rows = iter(workbook.get\_sheet\_by\_index(0).to\_python()) headers = list(map(str, next(rows))) **for** row in rows: yield dict(zip(headers, row)) [/code]性能总结总结一下使用Python读取Excel文件的方法以及读取Excel花费的时间: [code]Pandas 32.98Tablib 28.52Openpyxl 35.62Openpyxl (readonly) 24.79LibreOffice 15.27DuckDB (sql) 11.36DuckDB (execute) 5.73Calamine (python-calamine) 3.58[/code]以上介绍了几种使用Python读取Excel文件的方法,每种方法都有其适用场景。对于数据分析师和开发者来说,选择符合的库可以极大地提高工作效率。
到此这篇关于Python中读取Excel最快的几种常见方法的文章就介绍到这了,更多相干Python读取Excel最快方法内容请搜刮脚本之家以前的文章或继承欣赏下面的相干文章希望大家以后多多支持脚本之家! 来源:https://www.jb51.net/python/3289079df.htm 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|手机版|小黑屋|梦想之都-俊月星空
( 粤ICP备18056059号 )|网站地图
GMT+8, 2025-7-1 16:05 , Processed in 0.034461 second(s), 19 queries .
Powered by Mxzdjyxk! X3.5
© 2001-2025 Discuz! Team.