Python 高级技巧:深入解析读取 Excel 文件的多种方法

一、引言

 

在数据分析和处理中,经常需要从 Excel 文件中读取数据。Python 提供了多种库来实现这个功能,本文将深入探讨使用 ​​pandas​​、​​openpyxl​​ 和 ​​xlrd​​ 库读取 Excel 文件的高级技巧和代码实现。

 

二、使用 pandas 库读取 Excel 文件

 

​pandas​​ 是 Python 中强大的数据处理库,提供了方便的函数来读取 Excel 文件。

import pandas as pd# 读取 Excel 文件
df = pd.read_excel('example.xlsx')# 打印数据框的前几行
print(df.head())

三、使用 openpyxl 库读取 Excel 文件

 

​openpyxl​​ 是一个用于处理 Excel 2010 xlsx/xlsm/xltx/xltm 文件的 Python 库。

from openpyxl import load_workbook# 加载工作簿
wb = load_workbook('example.xlsx')# 获取工作表
sheet = wb.active# 遍历工作表中的数据
for row in sheet.iter_rows():for cell in row:print(cell.value)

四、使用 xlrd 库读取 Excel 文件

 

​xlrd​​ 是一个用于读取 Excel 文件的 Python 库,但它不支持 xlsx 文件格式,只支持 xls 文件格式。

import xlrd# 打开 Excel 文件
workbook = xlrd.open_workbook('example.xls')# 获取工作表
sheet = workbook.sheet_by_index(0)# 遍历工作表中的数据
for row_index in range(sheet.nrows):row_data = sheet.row_values(row_index)print(row_data)

五、处理复杂的 Excel 格式

 

在实际应用中,Excel 文件可能具有复杂的格式,如合并单元格、数据验证等。我们可以使用相应的库来处理这些情况。

# 使用 openpyxl 处理合并单元格
from openpyxl import load_workbookwb = load_workbook('example.xlsx')
sheet = wb.activemerged_cells = sheet.merged_cells.rangesfor merged_cell in merged_cells:min_row, min_col, max_row, max_col = merged_cell.min_row, merged_cell.min_col, merged_cell.max_row, merged_cell.max_coltop_left_cell_value = sheet.cell(row=min_row, column=min_col).valuefor row in range(min_row, max_row + 1):for col in range(min_col, max_col + 1):sheet.cell(row=row, column=col).value = top_left_cell_value

六、性能优化

 

当处理大型 Excel 文件时,性能可能成为一个问题。我们可以采取一些优化措施,如分块读取、只读取需要的列等。

# 使用 pandas 分块读取 Excel 文件
import pandas as pdchunk_size = 1000  # 每次读取的行数reader = pd.read_excel('large_file.xlsx', chunksize=chunk_size)for chunk in reader:# 在这里处理每一块数据print(chunk)

 本文部分代码转自:https://www.wodianping.com/app/2024-10/40486.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/808660.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytorch环境安装

pytorch环境安装 1.基础安装 首先安装anaconda打开,进入base,输入命令,这里-n后跟的是环境名字,再往后是python版本,不要太高 conda create -n pytorch python=3.8安装的时候有按y的就按y 创建成功后使用下面命令进入创建的环境 conda activate pytorch2.安装需要的库 pip…

FFT(2)

重新研究一遍 FFT之前写过 FFT,但是写的有点太垃圾了。令 \(*\) 指代二元运算,一般来说满足交换律和结合律。 FFT 就是当 \(*\) 为加法运算时求其卷积。先来探讨一般情况下 \(*\) 运算卷积的求法。 实际上,\(*\) 卷积就是 \(C_k=\sum\limits_{i*j=k}a_ib_j\),直接思考无法得…

blog content

米尔科非常关注生态保护,所以他不会砍掉过多的木材。学习笔记(可持久化)权值线段树 点分治 计算几何学习笔记以下在洛谷 blog简单分块与莫队 字符串 容斥原理与欧拉函数,莫比乌斯函数-学习笔记 逆元 容斥原理与概率期望-学习笔记 DP-学习笔记(基础篇) 二分刷题 板刷【高频更…

从前的日色变得慢 车,马,邮件都慢 一生只够爱一个人 现在的测评变得更慢 LG,CF,vjudge都慢 一下午只够交完一道题

[Trick] 格路记数 - 反射容斥

Perface 模拟赛不会被冲烂了。 Problem I 从 \((0,0)\) 到 \((n,m)\) 方案数。 解法: \(C(n+m,m)\)。 Problem II 从 \((0,0)\) 到 \((n,m)\) 方案,但是不能经过 \(y=x+b\) 的直线。 解法: 考虑映射法。 以一条路径第一次碰到直线的位置为起点,之后所有的路线和 \(y=x+b\) …

dan

点击查看代码 /* GGrun */ #include<bits/stdc++.h> using namespace std; namespace Octane {//non terrae plus ultra dqrdqrdqrdqrdqrdqrdqrdqrdqrdqrdqrdqr#define OCTANE // dqrdqrdqrdqrdqrdqrdqrdqrdqrdqrdqrdqrdqrdqr#define BUFFER_SIZE 100000 // dqrdqrdqrdqr…

Burp功能 细解析

情境 第六周的培训甚是有趣, 更加详细的介绍了Burp工具的功能和使用细节. 虽然很有趣, 但是我学得很慢, 练习达到熟练掌握还需要练习. 以下是第五次培训的练习题 以及我的解答. 最后一题手生, 一开始没做出来.1、安装burp,分别在本机上实现全局代理和局部代理,提供设置过程的…

Political Analysis

精英阶层的: 学历教育 财产分布 政治经济