Python-pandas-操作Excel文件(读取数据/写入数据)及Excel表格列名操作详细分享

Python-pandas-操作Excel文件(读取数据/写入数据)

提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是pandas的使用语法。前后每一小节的内容是存在的有:学习and理解的关联性。【帮帮志系列文章】:每个知识点,都是写出代码和运行结果且前后关联上的去分析和说明(能大量节约您的时间)。

所有文章都不会直接把代码放那里,让您自己去看去理解。我希望我的内容对您有用而努力~

python语法-pandas第三节-附 :本小节是 DataFrame全系列分享(使用.特点.说明.外部文件数据.取值.功能函数.统计函数)的 Excel表格文件操作:读取数据及写入数据

详细的 DataFrame:
DataFrame全系列分享(数据结构.使用.特点.说明.外部文件数据.取值.功能函数.统计函数)
链接: DataFrame全系列分享【上榜文章】
【上榜文章】一文搞定,非常详细的Python-Pandas - DataFrame全系列分享。大量案例且晦涩难懂的有大白话解释。详细的扩展内容也额外写了其他更加细节全面的文章链接在里面,来保证DataFrame的全部内容,本文就是其中一个扩展读写数据Excel篇


文章目录

  • Python-pandas-操作Excel文件(读取数据/写入数据)
  • 前言
  • 一、读取数据 read_excel()
  • 二、写入数据 to_excel()
    • 多个表单 ExcelWriter()
  • 三、加载 Excel 文件 ExcelFile()
  • 四、多个 DataFrame 到同一Excel .ExcelWriter()
  • 总结


前言

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

快速预览:

pd.read_excel() 读取 Excel 文件,返回 DataFrame

DataFrame.to_excel() 将 DataFrame 写入 Excel 文件

pd.ExcelFile() 加载 Excel 文件并访问多个表单

pd.ExcelWriter() 写入多个 DataFrame 到同一 Excel 文件的不同表单


一、读取数据 read_excel()

方法参数:
pandas.read_excel(path, 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)

path:这是必需的参数,指定了要读取的 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:传递给引擎的额外参数字典。
其实平时操作Excel并不需要写全这么多参数,后续遇到对应的问题,来查阅参数即可

准备数据,我是在桌面创建的表格,写了一些数据后又放到开发工具里面
在这里插入图片描述
在这里插入图片描述

import pandas as pd#代码在Excel文件的同层级位置(直接写名字即可),也可以指定D盘E盘的某个excel。这里没有演示
df = pd.read_excel('bbz__pandas.xlsx')
print(df)#读取Excel并生成DataFrame:

在这里插入图片描述

报错:ImportError: Missing optional dependency ‘openpyxl’. Use pip or conda to install openpyxl.
安装一个 openpyxl的包就好了

pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple
pip命令安装 并指定国内镜像源地址,会安装快一点

# 读取指定表单的内容(表单名称)
#就是这个Excel文件,左下角有很多很多个表单,sheet_name指定读取哪一个
df = pd.read_excel('data.xlsx', sheet_name='表单名字')
print(df)# 读取多个表单,返回一个字典
#因为多个表单里面的列名可能不一致,所以方法返回的是字典。
#然后通过字典生成DataFrame的语法就可以合并列,或者指定不同的列(本文最开始链接有 字典==>DataFrame)
dfs = pd.read_excel('data.xlsx', sheet_name=['Sheet1', 'Sheet2'])
print(dfs)# 自定义列名并跳过前两行
#这里自定义的列名是DataFrame的列索引名字,当前指定的是ABC
#如果Excel前n行是合并标题,就跳过。当前随机写的两行
df = pd.read_excel('data.xlsx', header=None, names=['A', 'B', 'C'], skiprows=2)
print(df)

二、写入数据 to_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': ['bangbangzhi', 'hello', 'python', 'what'],'age': [25, 30, 35, 40],'city': ['chengdu', 'beijing', 'shanghai', 'tianjin']
})# 将 DataFrame 写入 Excel 文件,写入 'sheet1' 表单  
df.to_excel('output.xlsx', sheet_name='sheet1', index=False)

运行代码,不在控制台看。在左边代码文件同层级位置查看。它会生成一个新的文件:output.xlsx

多个表单 ExcelWriter()

# 写入多个表单,使用 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)
#这个output.xlsx的文件会有两个表单,分别是sheet1和sheet2#就是Excel 文件左下角那里,平时点击+多一个表

三、加载 Excel 文件 ExcelFile()

pd.ExcelFile(‘data.xlsx’) 就是可以 先看看这个Excel 文件
方法参数:
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()

四、多个 DataFrame 到同一Excel .ExcelWriter()

刚刚其实已经用过,它用于将 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) 等。

#01示例
#声明一个/创建一个  写入器writer  指定文件为output.xlsx 
with ExcelWriter('output.xlsx') as writer:df.to_excel(writer, sheet_name='sheet1')
#将df里面的内容,写到output.xlsx里面 指定表单为sheet1
#02示例
#任意写两个df(DataFrame)。两行数据,两个列,df1是这样的:
'''name  age
0  bangbangzhi   18
1        hello   20
'''  #正常df1会有很多很多数据,然后需要存储到Excel里面
df1 = pd.DataFrame([["bangbangzhi", 18],["hello", 20]], columns=["name", "age"])
df2 = pd.DataFrame([["java", 40],["python", 21]], columns=["name", "age"])
with pd.ExcelWriter("out02.xlsx") as writer:       #一个名为out02.xlsx的Excel文件df1.to_excel(writer, sheet_name="sheet1")     #df1存sheet1这个表单df2.to_excel(writer, sheet_name="sheet2")	  #df2存sheet2这个表单
#03示例
import pandas as pd
from datetime import date, datetime  #两行数据  两列数据
'''X                   Y
Date     2014-01-31 00:00:00 1999-09-24 00:00:00
Datetime 1998-05-26 23:33:04 2014-02-28 13:05:13
'''
df = 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("out03.xlsx",date_format="YYYY-MM-DD",   #统一时间格式  年-月-日datetime_format="YYYY-MM-DD HH:MM:SS"  #统一时间格式  年-月-日  时:分:秒
) as writer:df.to_excel(writer)#统一时间格式  年-月-日  意义是  年是第一个 并且中间是横杠隔开 然后月是第二个 .......
#(只要数据过来,哪怕5-2-2025)  程序也只认5是年份  2025是日期(因为我们指定了格式)  

本文演示Excel的案例,用了很多DataFrame语法。及读取了Excel文件,取值到我们代码里,然后怎么弄呢?
可以:
详细的 DataFrame操作:
DataFrame全系列分享(数据结构.使用.特点.说明.外部文件数据.取值.功能函数.统计函数)
链接: DataFrame全系列分享【上榜文章】
【上榜文章】一文搞定,非常详细的Python-Pandas - DataFrame全系列分享。大量案例且晦涩难懂的有大白话解释。详细的扩展内容也额外写了其他更加细节全面的文章链接在里面,来保证DataFrame的全部内容,本文就是其中一个扩展读写数据Excel篇


总结

(会陆续更新非常多的IT技术知识及泛IT的电商知识,可以点个关注,共同交流。ღ( ´・ᴗ・` )比心)
(也欢迎评论,提问。 我会依次回答~)

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

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

相关文章

PHP分页显示数据,在phpMyadmin中添加数据

<?php $conmysqli_connect(localhost,root,,stu); mysqli_query($con,"set names utf8"); //设置字符集为utf8 $sql"select * from teacher"; $resultmysqli_query($con,$sql); $countmysqli_num_rows($result); //记录总条数$count。 $pagesize10;//每…

智能参谋部系统架构和业务场景功能实现

将以一个基于微服务和云原生理念、深度集成人工智能组件、强调实时性与韧性的系统架构为基础,详细阐述如何落地“智能参谋部”的各项能力。这不是一个简单的软件堆叠,而是一个有机整合了数据、知识、模型、流程与人员的复杂体系。 系统愿景:“智能参谋部”——基于AI赋能的…

企业级RAG架构设计:从FAISS索引到HyDE优化的全链路拆解,金融/医疗领域RAG落地案例与避坑指南(附架构图)

本文较长&#xff0c;纯干货&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习内容&#xff0c;尽在聚客AI学院。 一. RAG技术概述 1.1 什么是RAG&#xff1f; RAG&#xff08;Retrieval-Augmented Generation&#xff0c;检索增强生成&#xff09; 是…

Spring Boot Validation实战详解:从入门到自定义规则

目录 一、Spring Boot Validation简介 1.1 什么是spring-boot-starter-validation&#xff1f; 1.2 核心优势 二、快速集成与配置 2.1 添加依赖 2.2 基础配置 三、核心注解详解 3.1 常用校验注解 3.2 嵌套对象校验 四、实战开发步骤 4.1 DTO类定义校验规则 4.2 Cont…

理清缓存穿透、缓存击穿、缓存雪崩、缓存不一致的本质与解决方案

在构建高性能系统中&#xff0c;缓存&#xff08;如Redis&#xff09; 是不可或缺的关键组件&#xff0c;它大幅减轻了数据库压力、加快了响应速度。然而&#xff0c;在高并发环境下&#xff0c;缓存也可能带来一系列棘手的问题&#xff0c;如&#xff1a;缓存穿透、缓存击穿、…

PyTorch_构建线性回归

使用 PyTorch 的 API 来手动构建一个线性回归的假设函数&#xff0c;数据加载器&#xff0c;损失函数&#xff0c;优化方法&#xff0c;绘制训练过程中的损失变化。 数据构建 import torch from sklearn.datasets import make_regression import matplotlib.pyplot as plt i…

005-nlohmann/json 基础方法-C++开源库108杰

《二、基础方法》&#xff1a;节点访问、值获取、显式 vs 隐式、异常处理、迭代器、类型检测、异常处理……一节课搞定C处理JSON数据85%的需求…… JSON 字段的简单类型包括&#xff1a;number、boolean、string 和 null&#xff08;即空值&#xff09;&#xff1b;复杂类型则有…

HarmonyOS 5.0 分布式数据协同与跨设备同步​​

大家好&#xff0c;我是 V 哥。 使用 Mate 70有一段时间了&#xff0c;系统的丝滑使用起来那是爽得不要不要的&#xff0c;随着越来越多的应用适配&#xff0c;目前使用起来已经和4.3的兼容版本功能差异无碍了&#xff0c;还有些纯血鸿蒙独特的能力很是好用&#xff0c;比如&am…

Linux云计算训练营笔记day02(Linux、计算机网络、进制)

Linux 是一个操作系统 Linux版本 RedHat Rocky Linux CentOS7 Linux Ubuntu Linux Debian Linux Deepin Linux 登录用户 管理员 root a 普通用户 nsd a 打开终端 放大: ctrl shift 缩小: ctrl - 命令行提示符 [rootlocalhost ~]# ~ 家目录 /root 当前登录的用户…

macOS 安装了Docker Desktop版终端docker 命令没办法使用

macOS 安装了Docker Desktop版终端docker 命令没办法使用 1、检查Docker Desktop能否正常运行。 确保Docker Desktop能正常运行。 2、检查环境变量是否添加 1、添加环境变量 如果环境变量中没有包含Docker的路径&#xff0c;你可以手动添加。首先&#xff0c;找到Docker的…

Gradio全解20——Streaming:流式传输的多媒体应用(5)——基于WebRTC的摄像头实时目标检测

Gradio全解20——Streaming&#xff1a;流式传输的多媒体应用&#xff08;5&#xff09;——基于WebRTC的摄像头实时目标检测 本篇摘要20. Streaming&#xff1a;流式传输的多媒体应用20.5 基于WebRTC的摄像头实时目标检测20.5.1 环境配置及说明1. WebRTC2. TURN服务器 20.5.2 …

OSCP - Proving Grounds - NoName

主要知识点 linux命令注入SUID find提权 具体步骤 从nmap开始搜集信息&#xff0c;只开放了一个80端口 Nmap scan report for 192.168.171.15 Host is up (0.40s latency). Not shown: 65534 closed tcp ports (reset) PORT STATE SERVICE VERSION 80/tcp open http …

c++_csp-j算法 (6)_高精度算法(加减乘除)

高精度算法 C++高精度算法是指在C++编程语言中实现高精度计算的算法。在C++中,通常整数的范围是有限的,超出这个范围的整数计算会导致溢出。高精度算法的出现,使得C++程序能够处理超出常规整数范围的大整数计算,包括高精度加法、减法、乘法、除法等运算。 在C++中实现高精…

从OpenMP中的不兼容,窥探AI应用开发中的并行编程

在AI相关的项目开发中,偶然遇到下面这个问题: OMP: Error #15: Initializing libomp.dylib, but found libiomp5.dylib already initialized. OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the progr am. That is dangerous, sin…

vue2+element实现Table表格嵌套输入框、选择器、日期选择器、表单弹出窗组件的行内编辑功能

vue2element实现Table表格嵌套输入框、选择器、日期选择器、表单弹出窗组件的行内编辑功能 文章目录 vue2element实现Table表格嵌套输入框、选择器、日期选择器、表单弹出窗组件的行内编辑功能前言一、准备工作二、行内编辑1.嵌入Input文本输入框1.1遇到问题1.文本框内容修改失…

c#OdbcDataReader的数据读取

先有如下c#示例代码&#xff1a; string strconnect "DSNcustom;UIDsa;PWD123456;" OdbcConnection odbc new OdbcConnection(strconnect); odbc.Open(); if (odbc.State ! System.Data.ConnectionState.Open) { return; } string strSql "select ID from my…

【HTML5】老式放映机原理-实现图片无缝滚动

老式放映机原理-实现图片无缝滚动 实现思路&#xff1a; 页面设计部分——先将视口div设置为相对定位&#xff0c;再视口div里面嵌套一个类似“胶卷”的div,把该div设置为绝对定位&#xff0c;此时“胶卷"会挂靠在视口上面&#xff0c;再将“胶卷”的left属性设置为负值…

LeetCode 1781. 所有子字符串美丽值之和 题解

示例 输入&#xff1a;s "aabcb" 输出&#xff1a;5 解释&#xff1a;美丽值不为零的字符串包括 ["aab","aabc","aabcb","abcb","bcb"] &#xff0c;每一个字符串的美丽值都为 1这题光用文字解说还是无法达到讲…

2025ACTF Web部分题解

文章目录 ACTF uploadnot so web 1not so web 2 ACTF upload 前面登录随便输入可以进入文件上传页面, 随便上传一张图片, 发现路由存在file_path参数, 尝试路径穿越读取文件 发现可以成功读取 读取源码 /upload?file_path../app.pyimport uuid import os import hashlib im…

双目标清单——AI与思维模型【96】

一、定义 双目标清单思维模型是一种将决策或任务分解为两个主要目标&#xff0c;并分别列出相关要素和行动步骤的思维方式。这两个目标通常具有相互关联又有所侧重的特点&#xff0c;通过明确并列出与每个目标相关的具体事项&#xff0c;有助于更清晰地分析问题、制定计划和分…