Python Pandas(5):Pandas Excel 文件操作

        Pandas 提供了丰富的 Excel 文件操作功能,帮助我们方便地读取和写入 .xls 和 .xlsx 文件,支持多表单、索引、列选择等复杂操作,是数据分析中必备的工具。

操作方法说明
读取 Excel 文件pd.read_excel()读取 Excel 文件,返回 DataFrame
将 DataFrame 写入 ExcelDataFrame.to_excel()将 DataFrame 写入 Excel 文件
加载 Excel 文件pd.ExcelFile()加载 Excel 文件并访问多个表单
使用 ExcelWriter 写多个表单pd.ExcelWriter()写入多个 DataFrame 到同一 Excel 文件的不同表单

读取 Excel 文件

    pd.read_excel() 方法用于从 Excel 文件中读取数据并加载为 DataFrame。它支持读取 .xls 和 .xlsx 格式的文件。语法格式如下:

pandas.read_excel(io, sheet_name=0, *, header=0, names=None, index_col=None, usecols=None, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, parse_dates=False, date_parser=<no_default>, date_format=None, thousands=None, decimal='.', comment=None, skipfooter=0, storage_options=None, dtype_backend=<no_default>, engine_kwargs=None)
  • io:这是必需的参数,指定了要读取的 Excel 文件的路径或文件对象。
  • sheet_name=0:指定要读取的工作表名称或索引。默认为0,即第一个工作表。
  • header=0:指定用作列名的行。默认为0,即第一行。
  • names=None:用于指定列名的列表。如果提供,将覆盖文件中的列名。
  • index_col=None:指定用作行索引的列。可以是列的名称或数字。
  • usecols=None:指定要读取的列。可以是列名的列表或列索引的列表。
  • dtype=None:指定列的数据类型。可以是字典格式,键为列名,值为数据类型。
  • engine=None:指定解析引擎。默认为None,pandas 会自动选择。
  • converters=None:用于转换数据的函数字典。
  • true_values=None:指定应该被视为布尔值True的值。
  • false_values=None:指定应该被视为布尔值False的值。
  • skiprows=None:指定要跳过的行数或要跳过的行的列表。
  • nrows=None:指定要读取的行数。
  • na_values=None:指定应该被视为缺失值的值。
  • keep_default_na=True:指定是否要将默认的缺失值(例如NaN)解析为NA
  • na_filter=True:指定是否要将数据转换为NA
  • verbose=False:指定是否要输出详细的进度信息。
  • parse_dates=False:指定是否要解析日期。
  • date_parser=<no_default>:用于解析日期的函数。
  • date_format=None:指定日期的格式。
  • thousands=None:指定千位分隔符。
  • decimal='.':指定小数点字符。
  • comment=None:指定注释字符。
  • skipfooter=0:指定要跳过的文件末尾的行数。
  • storage_options=None:用于云存储的参数字典。
  • dtype_backend=<no_default>:指定数据类型后端。
  • engine_kwargs=None:传递给引擎的额外参数字典。

        本文以 runoob_pandas_data.xlsx 为例,下载链接:https://static.jyshare.com/download/runoob_pandas_data.xlsx

import pandas as pd# 读取 data.xlsx 文件
df = pd.read_excel('runoob_pandas_data.xlsx')# 打印读取的 DataFrame
print(df)

        read_excel 默认读取第一个表单(sheet_name=0),假设 data.xlsx 文件中只有一个表单,读取后的数据会存储在一个 DataFrame 中。如果 data.xlsx 文件中有多个表单,可以通过指定 sheet_name 来读取特定表单的数据,例如 pd.read_excel('data.xlsx', sheet_name='Sheet1')。

import pandas as pd# 读取默认的第一个表单
df = pd.read_excel('data.xlsx')
print(df)# 读取指定表单的内容(表单名称)
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
print(df)# 读取多个表单,返回一个字典
dfs = pd.read_excel('data.xlsx', sheet_name=['Sheet1', 'Sheet2'])
print(dfs)# 自定义列名并跳过前两行
df = pd.read_excel('data.xlsx', header=None, names=['A', 'B', 'C'], skiprows=2)
print(df)

2 将 DataFrame 写入 Excel 文件

    to_excel() 方法用于将 DataFrame 写入 Excel 文件,支持 .xls 和 .xlsx 格式。

DataFrame.to_excel(excel_writer, *, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, inf_rep='inf', freeze_panes=None, storage_options=None, engine_kwargs=None)
  • excel_writer:这是必需的参数,指定了要写入的 Excel 文件路径或文件对象。
  • sheet_name='Sheet1':指定写入的工作表名称,默认为 'Sheet1'
  • na_rep='':指定在 Excel 文件中表示缺失值(NaN)的字符串,默认为空字符串。
  • float_format=None:指定浮点数的格式。如果为 None,则使用 Excel 的默认格式。
  • columns=None:指定要写入的列。如果为 None,则写入所有列。
  • header=True:指定是否写入列名作为第一行。如果为 False,则不写入列名。
  • index=True:指定是否写入索引作为第一列。如果为 False,则不写入索引。
  • index_label=None:指定索引列的标签。如果为 None,则不写入索引标签。
  • startrow=0:指定开始写入的行号,默认从第0行开始。
  • startcol=0:指定开始写入的列号,默认从第0列开始。
  • engine=None:指定写入 Excel 文件时使用的引擎,默认为 None,pandas 会自动选择。
  • merge_cells=True:指定是否合并单元格。如果为 True,则合并具有相同值的单元格。
  • inf_rep='inf':指定在 Excel 文件中表示无穷大值的字符串,默认为 'inf'
  • freeze_panes=None:指定冻结窗格的位置。如果为 None,则不冻结窗格。
  • storage_options=None:用于云存储的参数字典。
  • engine_kwargs=None:传递给引擎的额外参数字典。
import pandas as pd# 创建一个简单的 DataFrame
df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'City': ['New York', 'Los Angeles', 'Chicago']
})# 将 DataFrame 写入 Excel 文件,写入 'Sheet1' 表单
df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)# 写入多个表单,使用 ExcelWriter
with pd.ExcelWriter('output.xlsx') as writer:df.to_excel(writer, sheet_name='Sheet1', index=False)
df.to_excel(writer, sheet_name='Sheet2', index=False)

3 加载 Excel 文件

    ExcelFile 是一个用于读取 Excel 文件的类,它可以处理多个表单,并在不重新打开文件的情况下访问其中的数据。

excel_file = pd.ExcelFile('data.xlsx')
方法功能描述
sheet_names返回文件中所有表单的名称列表
parse(sheet_name)解析指定表单并返回一个 DataFrame
close()关闭文件,以释放资源
import pandas as pd# 使用 ExcelFile 加载 Excel 文件
excel_file = pd.ExcelFile('data.xlsx')# 查看所有表单的名称
print(excel_file.sheet_names)# 读取指定的表单
df = excel_file.parse('Sheet1')
print(df)# 关闭文件
excel_file.close()

4 写入 Excel 文件

        ExcelWriter 是 pandas 提供的一个类,用于将 DataFrame 或 Series 对象写入 Excel 文件。使用 ExcelWriter,你可以在一个 Excel 文件中写入多个工作表,并且可以更灵活地控制写入过程。

pandas.ExcelWriter(path, engine=None, date_format=None, datetime_format=None, mode='w', storage_options=None, if_sheet_exists=None, engine_kwargs=None)
  • path:这是必需的参数,指定了要写入的 Excel 文件的路径、URL 或文件对象。可以是本地文件路径、远程存储路径(如 S3)、URL 链接或已打开的文件对象。
  • engine:这是一个可选参数,用于指定写入 Excel 文件的引擎。如果为 None,则 pandas 会自动选择一个可用的引擎(默认优先选择 openpyxl,如果不可用则选择其他可用引擎)。常见的引擎包括 'openpyxl'(用于 .xlsx 文件)、'xlsxwriter'(提供高级格式化和图表功能)、'odf'(用于 OpenDocument 格式如 .ods)等。
  • date_format:这是一个可选参数,指定写入 Excel 文件中日期的格式字符串,例如 "YYYY-MM-DD"
  • datetime_format:这是一个可选参数,指定写入 Excel 文件中日期时间对象的格式字符串,例如 "YYYY-MM-DD HH:MM:SS"
  • mode:这是一个可选参数,默认为 'w',表示写入模式。如果设置为 'a',则表示追加模式,向现有文件中添加数据(仅支持部分引擎,如 openpyxl)。
  • storage_options:这是一个可选参数,用于指定与存储后端连接的额外选项,例如认证信息、访问权限等,适用于写入远程存储(如 S3、GCS)。
  • if_sheet_exists:这是一个可选参数,默认为 'error',指定如果工作表已经存在时的行为。选项包括 'error'(抛出错误)、'new'(创建一个新工作表)、'replace'(替换现有工作表的内容)、'overlay'(在现有工作表上覆盖写入)。
  • engine_kwargs:这是一个可选参数,用于传递给引擎的其他关键字参数。这些参数会传递给相应引擎的函数,例如 xlsxwriter.Workbook(file, **engine_kwargs) 或 openpyxl.Workbook(**engine_kwargs) 等。

4.1 ExcelWriter

        基本语法:

with ExcelWriter('output.xlsx') as writer:df.to_excel(writer, sheet_name='Sheet1')

        你可以使用同一个 ExcelWriter 对象将不同的 DataFrame 写入同一个 Excel 文件的不同工作表。

import pandas as pddf1 = pd.DataFrame([["AAA", "BBB"]], columns=["Spam", "Egg"])
df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
with pd.ExcelWriter("path_to_file.xlsx") as writer:df1.to_excel(writer, sheet_name="Sheet1")df2.to_excel(writer, sheet_name="Sheet2")

4.2 设置日期格式或日期时间格式

from datetime import date, datetimeimport pandas as pddf = pd.DataFrame([[date(2014, 1, 31), date(1999, 9, 24)],[datetime(1998, 5, 26, 23, 33, 4), datetime(2014, 2, 28, 13, 5, 13)],],index=["Date", "Datetime"],columns=["X", "Y"],
)
with pd.ExcelWriter("path_to_file.xlsx",date_format="YYYY-MM-DD",datetime_format="YYYY-MM-DD HH:MM:SS"
) as writer:df.to_excel(writer)

4.3 向现有 Excel 文件追加内容

with pd.ExcelWriter("path_to_file.xlsx", mode="a", engine="openpyxl") as writer:df.to_excel(writer, sheet_name="Sheet3")

        使用 if_sheet_exists 参数替换已存在的工作表:

with ExcelWriter("path_to_file.xlsx",mode="a",engine="openpyxl",if_sheet_exists="replace",
) as writer:df.to_excel(writer, sheet_name="Sheet1")

        向同一个工作表写入多个 DataFrame,注意 if_sheet_exists 参数需要设置为 overlay:

with ExcelWriter("path_to_file.xlsx",mode="a",engine="openpyxl",if_sheet_exists="overlay",
) as writer:df1.to_excel(writer, sheet_name="Sheet1")df2.to_excel(writer, sheet_name="Sheet1", startcol=3)

4.4 将 Excel 文件存储在内存中

import ioimport pandas as pddf = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
buffer = io.BytesIO()
with pd.ExcelWriter(buffer) as writer:df.to_excel(writer)

4.5 将 Excel 文件打包到 zip 压缩文件中

import zipfileimport pandas as pddf = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
with zipfile.ZipFile("path_to_file.zip", "w") as zf:with zf.open("filename.xlsx", "w") as buffer:with pd.ExcelWriter(buffer) as writer:df.to_excel(writer)

4.6 向底层引擎传递额外的参数

with pd.ExcelWriter("path_to_file.xlsx",engine="xlsxwriter",engine_kwargs={"options": {"nan_inf_to_errors": True}}
) as writer:df.to_excel(writer)

        在追加模式下,engine_kwargs 会传递给 openpyxl 的 load_workbook:

with pd.ExcelWriter("path_to_file.xlsx",engine="openpyxl",mode="a",engine_kwargs={"keep_vba": True}
) as writer:df.to_excel(writer, sheet_name="Sheet2")

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

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

相关文章

基于钉钉API的连接器实现:企业数据集成与自动化管理

文章目录 概要背景与需求钉钉API概述连接器实现小结 概要 在当今数字化时代&#xff0c;企业面临着海量数据的管理与整合挑战。钉钉作为国内广泛使用的办公协作平台&#xff0c;提供了丰富的API接口&#xff0c;支持企业进行数据集成与自动化管理。本文将介绍如何通过钉钉API实…

第六届MathorCup高校数学建模挑战赛-A题:淡水养殖池塘水华发生及池水自净化研究

目录 摘要 1 问题的重述 2 问题的分析 2.1 问题一的分析 2.2 问题二的分析 2.3 问题三的分析 2.4 问题四的分析 2.5 问题五的分析 3. 问题的假设 4. 符号说明 5. 模型的建立与求解 5.1 问题一的建模与求解 5.1.1 分析对象与指标的选取 5.1.2 折线图分析 5.1.3 相关性分析 5.1.4…

方舟字节码原理剖析:架构、特性与实践应用

方舟字节码原理剖析&#xff1a;架构、特性与实践应用 一、引言 在当今软件行业高速发展的大背景下&#xff0c;应用程序的性能、开发效率以及跨平台兼容性成为了开发者们关注的核心要素。编译器作为软件开发流程中的关键工具&#xff0c;其性能和特性直接影响着软件的质量和…

如何在Android Studio中开发一个简单的Android应用?

Android Studio是开发Android应用的官方集成开发环境&#xff08;IDE&#xff09;&#xff0c;它提供了许多强大的功能&#xff0c;使得开发者能够高效地创建Android应用。如果你是Android开发的初学者&#xff0c;本文将引导你如何在Android Studio中开发一个简单的Android应用…

使用 JFreeChart 创建动态图表:从入门到实战

文章目录 前言一、JFreeChart 简介二、环境准备三、 创建第一个折线图四、自定义图表样式4.1 设置背景色4.2 设置折线颜色4.3 设置字体&#xff08;解决中文乱码&#xff09;4.4 设置横坐标的标签宽度和方向 五、导出图表六、实战&#xff1a;动态生成日报图表总结 前言 在数据…

vue.js v-model实现原理

在 vue.js 3中&#xff0c;通过 v-model 指令可以方便实现表单元素数据双向绑定。实现 v-model 指令元素并不神奇&#xff0c;本质上是一种语法糖。实现原理其实是 v-bind 和 v-on 这两个指令。 v-bind 指令会将表单元素的 value 属性与一个变量绑定&#xff0c;简写为 :属性名…

Formality:探针(Probe Point)的设置与使用

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 一般情况下&#xff0c;verify命令会对参考设计和实现设计所有匹配的比较点各自进行验证&#xff0c;但有些时候为了调试&#xff0c;可能需要验证参考设计和实现设…

idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡

idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡 问题 idea编译器 安装copilot AI工具 实际操作 在 IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤如下&#xff1a; 打开 IntelliJ IDEA&#xff1a; 打开你的 IntelliJ IDEA 应用…

【计算机网络】TCP/IP 网络模型有哪几层?

目录 应用层 传输层 网络层 网络接口层 总结 为什么要有 TCP/IP 网络模型&#xff1f; 对于同一台设备上的进程间通信&#xff0c;有很多种方式&#xff0c;比如有管道、消息队列、共享内存、信号等方式&#xff0c;而对于不同设备上的进程间通信&#xff0c;就需要网络通…

Spring Boot: 使用 @Transactional 和 TransactionSynchronization 在事务提交后发送消息到 MQ

Spring Boot: 使用 Transactional 和 TransactionSynchronization 在事务提交后发送消息到 MQ 在微服务架构中&#xff0c;确保消息的可靠性和一致性非常重要&#xff0c;尤其是在涉及到分布式事务的场景中。本文将演示如何使用 Spring Boot 的事务机制和 TransactionSynchron…

c/c++蓝桥杯经典编程题100道(14)矩阵转置

矩阵转置 ->返回c/c蓝桥杯经典编程题100道-目录 目录 矩阵转置 一、题型解释 二、例题问题描述 三、C语言实现 解法1&#xff1a;使用额外空间&#xff08;难度★&#xff09; 解法2&#xff1a;原地转置&#xff08;仅限方阵&#xff0c;难度★★&#xff09; 四、…

整合 Redis 分布式锁:从数据结构到缓存问题解决方案

引言 在现代分布式系统中&#xff0c;Redis 作为高性能的键值存储系统&#xff0c;广泛应用于缓存、消息队列、实时计数器等多种场景。然而&#xff0c;在高并发和分布式环境下&#xff0c;如何有效地管理和控制资源访问成为一个关键问题。Redis 分布式锁正是为了解决这一问题…

(done) openMP学习 (Day10: Tasks 原语)

url: https://dazuozcy.github.io/posts/introdution-to-openmp-intel/#19-%E6%8A%80%E8%83%BD%E8%AE%AD%E7%BB%83%E9%93%BE%E8%A1%A8%E5%92%8Copenmp 本章节内容仅提供引入&#xff0c;关于 task 更详细的细节请看 openMP 手册或者源材料 Day9 介绍了一个优化链表遍历的粗糙方…

《代码随想录第二十八天》——回溯算法理论基础、组合问题、组合总和III、电话号码的字母组合

《代码随想录第二十八天》——回溯算法理论基础、组合问题、组合总和III、电话号码的字母组合 本篇文章的所有内容仅基于C撰写。 1. 基础知识 1.1 概念 回溯是递归的副产品&#xff0c;它也是遍历树的一种方式&#xff0c;其本质是穷举。它并不高效&#xff0c;但是比暴力循…

网站快速收录策略:提升爬虫抓取效率

本文转自&#xff1a;百万收录网 原文链接&#xff1a;https://www.baiwanshoulu.com/102.html 要实现网站快速收录并提升爬虫抓取效率&#xff0c;可以从以下几个方面入手&#xff1a; 一、优化网站结构与内容 清晰的网站结构 设计简洁明了的网站导航&#xff0c;确保爬虫…

群晖安装Gitea

安装Docker Docker运行Gitea 上传gitea包&#xff0c;下载地址&#xff1a;https://download.csdn.net/download/hmxm6/90360455 打开docker 点击印象&#xff0c;点击新增&#xff0c;从文件添加 点击启动 可根据情况&#xff0c;进行高级设置&#xff0c;没有就下一步 点击应…

ES6 中函数参数的默认值

ES6 引入了函数参数的默认值&#xff08;Default Parameters&#xff09;功能&#xff0c;允许在函数定义时为某些参数提供默认值。当调用函数时&#xff0c;如果这些参数没有传递值&#xff08;或传递的值为 undefined&#xff09;&#xff0c;则会使用默认值。 1. 基本语法 …

SAP ABAP调用DeepSeek API大模型接口

搜索了一下DeepSeek&#xff0c;发现有人已经实现了SAP的对接&#xff0c; 不登录网页&#xff0c;SAP如何使用DeepSeek快速编程&#xff0c;ABAP起飞啦~ 按照对应的注册流程和方法。总算做出了第一个能够直连DeepSeek的API abap程序。 效果不错。 report ZTOOL_ABAP_CALL_D…

如何使用python制作一个天气预报系统

制作一个天气预报系统可以通过调用天气 API 来获取实时天气数据,并使用 Python 处理和展示这些数据。以下是一个完整的指南,包括代码实现和注意事项。 1. 选择天气 API 首先,需要选择一个提供天气数据的 API。常见的天气 API 有: OpenWeatherMap API:提供全球范围内的天…

verilog练习:i2c slave 模块设计

文章目录 前言1. 结构2.代码2.1 iic_slave.v2.2 sync.v2.3 wr_fsm.v2.3.1 状态机状态解释 2.4 ram.v 3. 波形展示4. 建议5. 资料总结 前言 首先就不啰嗦iic协议了&#xff0c;网上有不少资料都是叙述此协议的。 下面将是我本次设计的一些局部设计汇总&#xff0c;如果对读者有…