Python操作Excel文件,简单来说,就是用代码读写Excel表格。两种常用的库是
openpyxl和
pandas。
openpyxl更底层,适合精细控制格式;
pandas则更适合数据分析和处理,简单粗暴。
解决方案
-
使用
openpyxl
:安装:
pip install openpyxl
-
读取:
from openpyxl import load_workbook # 加载工作簿 workbook = load_workbook(filename="example.xlsx") # 选择工作表 sheet = workbook["Sheet1"] # 或者 workbook.active 获取活动工作表 # 读取单元格数据 cell_value = sheet["A1"].value print(cell_value) # 循环读取行 for row in sheet.iter_rows(min_row=2, max_row=5, min_col=1, max_col=3): for cell in row: print(cell.value)
iter_rows
可以方便地按行读取数据,指定起始和结束的行/列。 注意,openpyxl
的索引是从1开始的,不是从0开始的。 一开始用的时候,经常搞错。 -
写入:
PIA
全面的AI聚合平台,一站式访问所有顶级AI模型
226 查看详情
from openpyxl import Workbook # 创建一个新的工作簿 workbook = Workbook() # 选择工作表 sheet = workbook.active # 写入单元格数据 sheet["A1"] = "Hello" sheet["B2"] = 123 # 保存工作簿 workbook.save(filename="new_example.xlsx")
写入数据非常直接,直接赋值即可。 创建新的工作簿也很简单。
格式设置:
openpyxl
提供了丰富的格式设置选项,比如字体、颜色、对齐方式等。 这部分比较繁琐,需要查阅文档。
-
使用
pandas
:安装:
pip install pandas
-
读取:
import pandas as pd # 读取Excel文件 df = pd.read_excel("example.xlsx", sheet_name="Sheet1") # 打印DataFrame print(df) # 获取特定列 column_data = df["Column1"] print(column_data)
read_excel
函数非常强大,可以读取指定的工作表,还可以指定行索引、列索引等。 返回的是一个DataFrame对象,方便进行数据分析。 -
写入:
PIA
全面的AI聚合平台,一站式访问所有顶级AI模型
226 查看详情
import pandas as pd # 创建一个DataFrame data = {"Name": ["Alice", "Bob", "Charlie"], "Age": [25, 30, 28]} df = pd.DataFrame(data) # 写入Excel文件 df.to_excel("new_example.xlsx", sheet_name="Sheet1", index=False)
to_excel
函数可以将DataFrame写入Excel文件。index=False
表示不写入行索引。pandas
写入excel,在处理大型数据集时会非常高效。
openpyxl和
pandas,我该选哪个?
选择哪个库取决于你的具体需求。 如果你需要精细控制Excel的格式,或者处理一些特殊的需求,比如合并单元格、插入图片等,那么
openpyxl更适合你。 如果你主要是进行数据分析和处理,那么
pandas更方便快捷。
pandas的DataFrame对象提供了丰富的数据处理方法,可以方便地进行数据清洗、转换、分析等操作。
如何处理Excel中的日期格式?
在用
openpyxl读取Excel文件时,日期会被读取成datetime对象。
from openpyxl import load_workbook from datetime import datetime workbook = load_workbook(filename="example_with_dates.xlsx") sheet = workbook.active date_value = sheet["A1"].value if isinstance(date_value, datetime): print(date_value.strftime("%Y-%m-%d")) # 格式化日期 else: print(date_value)
用
pandas读取时,默认也会尝试将日期识别为datetime对象。 如果读取失败,可以手动指定
parse_dates参数。
import pandas as pd df = pd.read_excel("example_with_dates.xlsx", parse_dates=["DateColumn"]) # DateColumn 是包含日期的列名 print(df["DateColumn"].dtype) # 确认是否为datetime64[ns]
如何优化Excel文件读写速度?
对于大型Excel文件,读写速度是一个需要考虑的问题。
-
openpyxl
: 可以使用read_only
和write_only
模式来提高读写速度。read_only
模式只能读取数据,不能修改数据;write_only
模式只能写入数据,不能读取数据。from openpyxl import load_workbook # 只读模式 workbook = load_workbook(filename="large_file.xlsx", read_only=True) sheet = workbook.active for row in sheet.rows: for cell in row: print(cell.value) # 只写模式 from openpyxl import Workbook workbook = Workbook(write_only=True) sheet = workbook.create_sheet() for i in range(1000): row = [i] * 10 sheet.append(row) workbook.save("large_file_write_only.xlsx")
-
pandas
: 可以使用chunksize
参数来分块读取数据。 这样可以避免一次性将整个文件加载到内存中,从而提高读取速度。import pandas as pd for chunk in pd.read_excel("large_file.xlsx", chunksize=1000): print(chunk.head()) # 处理每一块数据
另外,尽量避免在循环中频繁地读写单元格,可以将数据先存储到内存中,然后一次性写入Excel文件。
以上就是python中如何操作Excel文件_Python使用openpyxl/pandas操作Excel的详细内容,更多请关注知识资源分享宝库其它相关文章!
相关标签: python excel app excel表格 Python pandas pip 循环 对象 数据分析 excel 大家都在看: python怎么判断一个变量的类型_python变量类型判断方法 python怎么检查一个键是否存在于字典中_python字典键存在性检查 Python怎么实现一个上下文管理器_Python上下文管理器协议实现 python中怎么给函数设置默认参数_Python函数默认参数设置方法 python中怎么测量一段代码的执行时间?
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。