Python Excel 文件处理:openpyxl 与 pandas 库完全指南

news2025/6/8 16:01:27

在数据处理和分析过程中,Excel 文件是最常见的数据存储格式之一。Python 提供了多个库来处理 Excel 文件,其中 openpyxl 和 pandas 是最常用的两个库。它们各自有独特的优势,适用于不同的需求。本文将详细介绍如何使用这两个库来处理 Excel 文件。


一、使用 openpyxl 处理 Excel 文件

openpyxl 是一个纯 Python 编写的库,用于读取、写入、修改 Excel 文件(.xlsx 格式)。它支持更多 Excel 文件特性,如合并单元格、格式化、绘制图表等。

1. 安装 openpyxl

在开始之前,需要先安装 openpyxl 库:

pip install openpyxl
2. 读取 Excel 文件

openpyxl 可以用于打开并读取 Excel 文件的内容。下面是如何读取 Excel 文件的基本示例:

import openpyxl

# 加载工作簿
workbook = openpyxl.load_workbook('example.xlsx')

# 选择活动工作表
sheet = workbook.active

# 读取特定单元格的值
print(sheet['A1'].value)

# 或者通过行列索引访问
print(sheet.cell(row=1, column=1).value)
3. 写入数据到 Excel 文件

我们可以在 Excel 文件中写入数据或更新现有数据:

# 写入数据到特定单元格
sheet['A2'] = 'Hello, Openpyxl!'

# 保存更改到新的 Excel 文件
workbook.save('output.xlsx')
4. 遍历所有行和列

你可以遍历 Excel 工作表的所有行和列:

for row in sheet.iter_rows(min_row=1, max_row=3, min_col=1, max_col=3):
    for cell in row:
        print(cell.value, end=" ")
    print()
5. 创建新的工作表

你可以创建新的工作表,并添加数据:

# 创建一个新的工作表
new_sheet = workbook.create_sheet('NewSheet')

# 向新工作表写入数据
new_sheet['A1'] = 'New Data'

# 保存工作簿
workbook.save('output_with_new_sheet.xlsx')
6. 格式化和样式设置

openpyxl 还支持对单元格进行样式设置,例如字体、颜色和对齐方式:

from openpyxl.styles import Font, Color, Alignment

# 设置字体加粗和斜体
sheet['A2'].font = Font(bold=True, italic=True)

# 设置单元格背景颜色
sheet['A2'].fill = openpyxl.styles.PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")

# 设置文本居中对齐
sheet['A2'].alignment = Alignment(horizontal='center', vertical='center')

# 保存更改
workbook.save('styled_output.xlsx')
7. 合并单元格

你可以合并单元格来创建跨越多个列或行的标题或数据块:

# 合并 A1 到 D1 的单元格
sheet.merge_cells('A1:D1')

# 设置合并单元格的内容
sheet['A1'] = 'Merged Cells'

# 保存更改
workbook.save('merged_cells_output.xlsx')

二、使用 pandas 处理 Excel 文件

pandas 是一个强大的数据分析库,具有极好的处理表格数据的能力。它能够处理 .xls 和 .xlsx 格式的文件,并且在读取和写入 Excel 数据时表现非常高效。

1. 安装 pandas 和 openpyxl

在使用 pandas 读取和写入 Excel 文件时,推荐安装 openpyxl 作为 Excel 文件的支持引擎:

pip install pandas openpyxl
2. 读取 Excel 文件

pandas 提供了 read_excel() 函数来读取 Excel 文件并将其转换为 DataFrame(数据框)。DataFrame 是 pandas中的核心数据结构,方便进行数据分析。

import pandas as pd

# 读取 Excel 文件
df = pd.read_excel('example.xlsx')

# 查看 DataFrame
print(df.head())  # 显示前 5 行
3. 读取特定工作表

如果 Excel 文件包含多个工作表,你可以指定要读取的工作表:

# 读取指定工作表
df = pd.read_excel('example.xlsx', sheet_name='Sheet1')

# 或者按索引指定工作表
df = pd.read_excel('example.xlsx', sheet_name=0)  # 读取第一个工作表
4. 写入数据到 Excel 文件

将数据框写入 Excel 文件时,可以使用 to_excel() 方法。你可以选择是否保存为新的工作表或覆盖现有工作表。

# 创建一个新的 DataFrame
df_new = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['X', 'Y', 'Z']
})

# 将 DataFrame 写入 Excel 文件
df_new.to_excel('output.xlsx', index=False)  # `index=False` 防止保存索引列
5. 数据筛选与处理

pandas 提供了强大的数据处理能力,可以很容易地对 Excel 数据进行筛选、排序、分组等操作:

# 筛选数据
filtered_df = df[df['ColumnA'] > 50]

# 排序
sorted_df = df.sort_values(by='ColumnB', ascending=False)

# 分组并聚合
grouped_df = df.groupby('Category').agg({'Value': 'sum'})
6. 修改数据

你可以直接修改 DataFrame 中的值:

# 修改特定单元格的值
df.loc[0, 'ColumnA'] = 100

# 修改整列
df['ColumnB'] = df['ColumnB'] * 2
7. 保存 DataFrame 到多个工作表

pandas 允许你将多个 DataFrame 写入同一个 Excel 文件中的多个工作表:

# 创建 ExcelWriter 对象
with pd.ExcelWriter('output_multiple_sheets.xlsx') as writer:
    df.to_excel(writer, sheet_name='Sheet1', index=False)
    df_new.to_excel(writer, sheet_name='Sheet2', index=False)

三、openpyxl 和 pandas 的比较与使用场景

  • openpyxl:适用于更复杂的 Excel 文件操作,如格式化、图表生成、单元格合并等。它能精确控制 Excel 文件的结构和格式。

    • 优势:可以进行细粒度的操作,如样式、合并单元格、图表等。

    • 场景:生成或修改带有格式、样式或其他 Excel 特性(如图表、过滤器)的文件。

  • pandas:主要用于数据处理和分析,能够高效地读取、操作和写入表格数据。它的 DataFrame 结构使得数据操作变得非常简便,尤其适合进行批量数据处理和分析。

    • 优势:高效的数据操作、支持大量数据操作、与 numpy 配合使用、简洁的语法。

    • 场景:数据分析、批量数据处理、数据清洗等。

总结

  • openpyxl 适合处理 Excel 文件中的格式化操作和结构性操作(如合并单元格、图表、单元格样式等),而 pandas 适合快速的数据分析和表格数据处理。

  • 如果你需要对 Excel 文件的内容进行复杂的分析、过滤、聚合等操作,建议使用 pandas

  • 如果你需要格式化 Excel 文件、设置样式或创建图表等,建议使用 openpyxl

通过这两个库的结合使用,你可以高效地处理和分析 Excel 数据,从而提高工作效率。

Python 使用总结之:Python 文本转语音引擎 – pyttsx3 完全指南 – 菜鸟-创作你的创作

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

靶场(二十)---靶场体会小白心得 ---jacko

老样子开局先看端口,先看http端口 PORT STATE SERVICE VERSION 80/tcp open http Microsoft IIS httpd 10.0 |_http-title: H2 Database Engine (redirect) | http-methods: |_ Potentially risky methods: TRACE |_http-server-header:…

​​高频通信与航天电子的材料革命:猎板PCB高端压合基材技术解析​​

—聚酰亚胺/陶瓷基板在5G与航天场景的产业化应用​​ ​​一、极端环境材料体系:突破温域与频率极限​​ ​​聚酰亚胺基板(PI)的航天级稳定性​​ 猎板在卫星通信PCB中采用真空层压工艺处理聚酰亚胺基材(Dk≈10.2)&a…

WPF技术体系与现代化样式

目录 ​​1 WPF技术架构解析​​ ​​1.1 技术演进与定位​​ ​​1.2 核心机制对比​​ ​​2 样式与资源系统​​ ​​2.1 资源(Resource)定义与作用域​​ ​​2.2 样式(Style)与触发器​​ ​​3 开发环境配置(.NET 8)​​ ​​3.1 安装流程​​ ​​3.2 项目结…

【工具教程】PDF电子发票提取明细导出Excel表格,OFD电子发票行程单提取保存表格,具体操作流程

在企业财务管理领域,电子发票提取明细导出表格是不可或缺的工具。 月末财务结算时,财务人员需处理成百上千张电子发票,将发票明细导出为表格后,通过表格强大的数据处理功能,可自动分类汇总不同项目的支出金额&#xff…

基于STM32的DHT11温湿度远程监测LCD1602显示Proteus仿真+程序+设计报告+讲解视频

DHT11温湿度远程监测proteus仿真 1. 主要功能2.仿真3. 程序4. 设计报告5. 资料清单&下载链接 基于STM32的DHT11温湿度远程监测LCD1602显示Proteus仿真设计(仿真程序设计报告讲解视频) 仿真图proteus 8.9 程序编译器:keil 5 编程语言:C…

分类预测 | Matlab实现CNN-BiLSTM-Attention高光谱数据分类预测

分类预测 | Matlab实现CNN-BiLSTM-Attention高光谱数据分类预测 目录 分类预测 | Matlab实现CNN-BiLSTM-Attention高光谱数据分类预测分类效果功能概述程序设计参考资料 分类效果 功能概述 该MATLAB代码实现了一个结合CNN、BiLSTM和注意力机制的高光谱数据分类预测模型&#x…

微软推出SQL Server 2025技术预览版,深化人工智能应用集成

在Build 2025 大会上,微软向开发者社区开放了SQL Server 2025的测试版本。该版本的技术改进主要涵盖人工智能功能集成、系统性能优化与开发工具链升级三个维度,展示了数据库管理系统在智能化演进方向上的重要进展。 智能数据处理功能更新 新版本的技术亮…

RocketMQ入门5.3.2版本(基于java、SpringBoot操作)

一、RocketMQ概述 RocketMQ是一款由阿里巴巴于2012年开源的分布式消息中间件,旨在提供高吞吐量、高可靠性的消息传递服务。主要特点有: 灵活的可扩展性 海量消息堆积能力 支持顺序消息 支持多种消息过滤方式 支持事务消息 支持回溯消费 支持延时消…

使用osqp求解简单二次规划问题

文章目录 一、问题描述二、数学推导1. 目标函数处理2. 约束条件处理 三、代码编写 一、问题描述 已知: m i n ( x 1 − 1 ) 2 ( x 2 − 2 ) 2 s . t . 0 ⩽ x 1 ⩽ 1.5 , 1 ⩽ x 2 ⩽ 2.5 min(x_1-1)^2(x_2-2)^2 \qquad s.t. \ \ 0 \leqslant x_1 \leqslant 1.5,…

【C语言】通用统计数据结构及其更新函数(最值、变化量、总和、平均数、方差等)

【C语言】通用统计数据结构及其更新函数(最值、变化量、总和、平均数、方差等) 更新以gitee为准: gitee 文章目录 通用统计数据结构更新函数附录:压缩字符串、大小端格式转换压缩字符串浮点数压缩Packed-ASCII字符串 大小端转换什…

Spring AI(10)——STUDIO传输的MCP服务端

Spring AI MCP(模型上下文协议)服务器Starters提供了在 Spring Boot 应用程序中设置 MCP 服务器的自动配置。它支持将 MCP 服务器功能与 Spring Boot 的自动配置系统无缝集成。 本文主要演示支持STDIO传输的MCP服务器 仅支持STDIO传输的MCP服务器 导入j…

Sklearn 机器学习 缺失值处理 填充数据列的缺失值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 💡使用 Scikit-learn 处理数据缺失值的完整指南 在机器学习项目中,数据缺失是不可避…

猜字符位置游戏-position gasses

import java.util.*;public class Main {/*字符猜位置游戏;每次提交只能被告知答对几个位置;根据提示答对的位置数推测出每个字符对应的正确位置;*/public static void main(String[] args) {char startChar A;int gameLength 8;List<String> ballList new ArrayList&…

宝塔安装配置FRP

FRP&#xff08;Fast Reverse Proxy&#xff09;作为一款高性能的反向代理应用&#xff0c;能够帮助我们轻松实现内网穿透&#xff0c;将内网服务暴露到公网&#xff0c;满足远程访问、开发调试等多种需求。宝塔面板以其简洁易用的界面和强大的功能&#xff0c;成为众多站长和开…

元器件基础学习笔记——结型场效应晶体管 (JFET)

场效应晶体管&#xff08;Field Effect Transistor&#xff0c;FET&#xff09;简称场效应管&#xff0c;是一种三端子半导体器件&#xff0c;它根据施加到其其中一个端子的电场来控制电流的流动。与双极结型晶体管 &#xff08;BJT&#xff09; 不同&#xff0c;场效应晶体管 …

tableau 实战工作场景常用函数与LOD表达式的应用详解

这是tableau实战工作场景图表制作第七期--常用函数与LOD表达式的应用 数据资源已经与这篇博客捆绑&#xff0c;有需要者可以下载通过网盘分享的文件&#xff1a;3.2-8月成交数据.xlsx等3个文件 链接: https://pan.baidu.com/s/17WtUoZTqzoNo5kTFjua4hw?pwd0623 提取码: 06…

《PyTorch:开启深度学习新世界的魔法之门》

一、遇见 PyTorch:深度学习框架新星登场 在当今的技术领域中,深度学习已然成为推动人工智能发展的核心动力,而深度学习框架则是这场技术革命中的关键工具。在众多深度学习框架里,PyTorch 以其独特的魅力和强大的功能,迅速崛起并占据了重要的地位,吸引着无数开发者和研究者…

分布式光纤传感(DAS)技术应用解析:从原理到落地场景

近年来&#xff0c;分布式光纤传感&#xff08;Distributed Acoustic Sensing&#xff0c;DAS&#xff09;技术正悄然改变着众多传统行业的感知方式。它将普通的通信光缆转化为一个长距离、连续分布的“听觉传感器”&#xff0c;对振动、声音等信号实现高精度、高灵敏度的监测。…

Spring事务回滚在系统中的应用

以文章发布为例&#xff0c;介绍Spring事务回滚在系统中的应用 事务回滚的核心概念 事务回滚是数据库管理系统中的关键机制&#xff0c;它确保数据库操作要么全部成功&#xff0c;要么全部失败。在Spring框架中&#xff0c;我们可以通过Transactional注解轻松实现事务管理。 …

ASP.NET Core使用Quartz部署到IIS资源自动被回收解决方案

iis自动回收的原因 回收机制默认配置&#xff0c;间隔时间是1740分钟&#xff0c;意思是&#xff1a;默认情况下每1740分钟(29小时)回收一次&#xff0c;定期检查应用程序池中的工作进程&#xff0c;并终止那些已经存在很长时间或已经使用了太多资源的工作进程 进程模型默认配…