12. Pandas :使用pandas读Excel文件的常用方法
一 read_excel 函数
其他参数根据实际需要进行查找。
1.接受一个工作表
在 11 案例用到的 Excel 工作簿中,数据是从第一张工作表的 A1 单元格开始的。但在实际场景中, Excel 文件可能并没有这么规整。所以 panda 提供了一些参数来优化读取过程。
比如 store.xlsx 文件的三个工作表都是这样:

通过 sheet_name、skiprows 和 usecols 这些参数,可以告诉 pandas 关于我们想要读取的列的详细信息。

sheet_name="2019":指定了要读取的工作表名称。sheet_name 接受工作表切片。闭区间,包括起始和结束的工作表。
- 单个工作表:
sheet_name="Sheet1" - 多个工作表(列表):
sheet_name=["Sheet1", "Sheet2"] - 工作表切片:
sheet_name="Sheet1:Sheet3"或sheet_name=0:3(使用索引)
skiprows=1:用于跳过文件开头指定数量的行。在这个例子中,skiprows=1 表示跳过文件的第一行,从第二行开始读取数据。
usecols="B:F":用于指定要读取的列范围。读取从列 B 到列 F 的数据(包括 B 和 F 列)。

补充:Flagship 的数据类型应该是 bool 而不是 object。要修正这一问题,需要提供一个转换函数来处理某列中发生冲突的单元格。(编写 fix_missing 函数或者写一个lambda 表达式)
将
Flagship列中的非布尔值处理为False,而将有效的布尔值保留为True或False。
Flagship列的数据类型是object,而不是bool。是因为该列中包含了一些非布尔值(如MISSING和NaN),导致 pandas 无法自动将其转换为布尔类型。1.编写函数
import pandas as pd import numpy as np# 定义 fix_missing 函数 def fix_missing(value):if isinstance(value, bool):return valueelse:return False# 读取数据 df = pd.read_excel("xl/stores.xlsx", sheet_name="2019", skiprows=1, usecols="B:F")# 应用 fix_missing 函数到 Flagship 列 df['Flagship'] = df['Flagship'].apply(fix_missing)# 打印修正后的 DataFrame print(df)2.使用 lambda 表达式
import pandas as pd# 读取数据 df = pd.read_excel("xl/stores.xlsx", sheet_name="2019", skiprows=1, usecols="B:F")# 使用 lambda 表达式将 Flagship 列中非布尔值转换为 False df['Flagship'] = df['Flagship'].apply(lambda x: x if isinstance(x, bool) else False)# 打印修正后的 DataFrame print(df)
apply()方法用于对 DataFrame 的每一列应用一个函数。
lambda x: x if isinstance(x, bool) else False是一个匿名函数,它检查每个元素x。如果
x是布尔类型(True或False),则保留原值。如果x不是布尔类型(例如,MISSING或NaN),则将其转换为False。
isinstance(x, bool)是一个内置函数,用于检查变量x是否是布尔类型 (bool)。3.结合使用
converters参数用于指定列的自定义转换函数。这允许你在数据读取过程中,对特定列的数据进行预处理或转换。converters是一个字典,其中键是列名(或列索引),值是应用于该列的转换函数。当pandas.read_excel读取数据时,会使用这些转换函数来处理指定列的数据。def fix_missing(x):return False if x in ["", "MISSING"] else xdf = pd.read_excel("xl/stores.xlsx",sheet_name="2019",skiprows=1,usecols="B:F",converters={"Flagship": fix_missing})
fix_missing函数:这个函数用于检查传入的值x。如果
x是一个空字符串""或字符串"MISSING",则返回False。否则,返回原始值x。
converters={"Flagship": fix_missing}:这里指定了一个转换字典,其中键是
"Flagship",表示要对Flagship列应用转换。值是fix_missing函数,这意味着在读取Flagship列的数据时,每个单元格的值都会通过fix_missing函数进行处理。
2.接受一个工作表名称列表
在 pandas 库中,read_excel 函数可以读取 Excel 文件中的一个或多个工作表。当你想要读取多个工作表时,可以通过传递一个工作表名称的列表或者使用 sheet_name=None 来读取所有的工作表。这将返回一个字典,其中键是工作表名称,值是对应的 DataFrame。
假设你有一个 Excel 文件 data.xlsx,其中包含以下三个工作表:
Sheet1: 包含学生基本信息。
Sheet2: 包含学生的成绩。
Sheet3: 包含学生的出勤记录。
import pandas as pd# 读取 Excel 文件中的所有工作表
sheets = pd.read_excel("data.xlsx", sheet_name=None)# `sheets` 是一个字典,键是工作表名称,值是对应的 DataFrame
print(sheets.keys()) # 输出: dict_keys(['Sheet1', 'Sheet2', 'Sheet3'])# 访问特定工作表的 DataFrame
students_info = sheets['Sheet1']
students_grades = sheets['Sheet2']
students_attendance = sheets['Sheet3']# 打印 Sheet1 的数据
print(students_info)
补充:usecols 参数。
用于指定要读取的列名,从而只导入你感兴趣的数据,忽略其他列。
import pandas as pd# 读取 Excel 文件中的两个工作表 "2019" 和 "2020" sheets = pd.read_excel("xl/stores.xlsx", sheet_name=["2019", "2020"], skiprows=1, usecols=["Store", "Employees"])# 打印 2019 年工作表的前两行 print(sheets["2019"].head(2))
.head(2)方法打印该DataFrame的前两行。
3.设置列名
源文件没有列标题,可以设置参数 header=None 并通过 names 参数提供对应的列名。
import pandas as pddf = pd.read_excel("xl/stores.xlsx", sheet_name=0, skiprows=2, skipfooter=3, usecols="B:C,F", header=None, names=["Branch", "Employee_Count", "Is_Flagship"]
)
sheet_name=0:指定读取 Excel 文件的第一个工作表。
skiprows=2:跳过文件开头的 2 行。
skipfooter=3:跳过文件末尾的 3 行。
usecols="B:C,F":指定要读取的列。"B:C" 表示读取从 B 列到 C 列的所有列(包括 B 和 C 列)。"F" 表示读取 F 列。
header=None:指定 Excel 文件中没有列标题行。规定不要将文件中的任何一行用作列名。
names=["Branch", "Employee_Count", "Is_Flagship"]:由于 header=None,我们需要通过 names 参数提供自定义的列名。
这里为读取的列指定了名称:"Branch"、"Employee_Count" 和 "Is_Flagship"。

4.处理缺失值
使用 na_values 和 keep_default_na 参数。
import pandas as pddf = pd.read_excel("xl/stores.xlsx", sheet_name="2019", skiprows=1, usecols="B,C,F", skipfooter=2, na_values="MISSING", keep_default_na=False
)
na_values="MISSING":指定将 "MISSING" 视为缺失值(NaN)。任何在数据中出现的 "MISSING" 都会被转换为 NaN。
keep_default_na=False:指定不保留 pandas 默认的缺失值标识符。默认情况下,pandas 会将空字符串 ""、'nan'、'null'、'NULL' 等识别为缺失值并转换为 NaN。设置为 False 后,只有 na_values 中指定的值(如 "MISSING") 会被视为缺失值。
二 ExcelFile 类
1.什么是 ExcelFile 类
使用 ExcelFile 类,你可以一次性加载整个 Excel 文件,然后根据需要选择性地解析各个工作表,从而提高数据处理的效率。
2.为什么有 ExcelFile 类
当需要从同一个 Excel 文件中读取多个工作表时,直接使用 read_excel 函数可能会多次打开和读取整个文件,导致性能下降。而 ExcelFile 类允许你一次性打开文件,并在内存中保持打开状态,从而避免了重复的文件读取操作。
ExcelFile 类可以被用作上下文管理器(使用 with 语句),这意味着文件会在使用后被自动关闭,从而避免了资源泄漏的问题。当使用 with 语句来打开 ExcelFile 时,pandas 会自动处理文件的打开和关闭。
3.如何使用 ExcelFile 类
1.导入 pandas 库
import pandas as pd
2.创建 ExcelFile 对象
传入 Excel 文件的路径。

补充:通过 ExcelFile 访问所有工作表的名称
3.读取工作表
使用 pd.read_excel 函数读取 ExcelFile 对象中的特定工作表。

4.(可选)使用上下文管理器
为了确保文件在使用后被正确关闭,可以使用 with 语句来管理 ExcelFile 对象。

补充:上下文管理器和 with 语句
Python 中的 with 语句被用于管理文件或数据连接之类的资源。如果你想加载最新的销售数据以便对其进行分析,就必须打开一个文件或者建立一个数据库连接。在数据读取完成后,最好尽快关闭文件或者数据库连接。否则,你可能会无法打开其他文件或者建立新的数据库连接。
手动打开和关闭文本文件的代码:
执行这段代码会在笔记本的工作目录中创建一个叫作 output.txt 的文件,并将“Some text”
写入文件。要读取一个文件,需要使用 r 模式而不是 w 模式;要在文件末尾追加内容,则需要使用 a 模式。
文件的打开和关闭是一种相当常见的操作,因此 Python 提供了 with 语句来简化这类代码:
当代码的执行过程离开 with 语句的主体时,无论是否发生异常,文件都会被自动关闭。支持 with 语句的对象被称作上下文管理器。ExcelFile 对象和 ExcelWriter 对象,数据库连接对象都是上下文管理器。
5.示例


pd.ExcelFile("xl/stores.xls"): 使用 pandas 的 ExcelFile 类来打开和加载名为 "xl/stores.xls" 的 Excel 文件。
as f: 将创建的 ExcelFile 对象赋值给变量 f。这样,在 with 语句的作用域内,你可以通过 f 来引用这个 ExcelFile 对象。
三 通过 URL 读取Excel 文件

相关文章:
12. Pandas :使用pandas读Excel文件的常用方法
一 read_excel 函数 其他参数根据实际需要进行查找。 1.接受一个工作表 在 11 案例用到的 Excel 工作簿中,数据是从第一张工作表的 A1 单元格开始的。但在实际场景中, Excel 文件可能并没有这么规整。所以 panda 提供了一些参数来优化读取过程。 比如 s…...
记录致远OA服务器硬盘升级过程
前言 日常使用中OA系统突然卡死,刷新访问进不去系统,ping服务器地址正常,立马登录服务器检查,一看磁盘爆了。 我大脑直接萎缩了,谁家OA系统配400G的空间啊,过我手的服务器没有50也是30台,还是…...
Java网络多线程
网络相关概念: 关于访问: IP端口 因为一个主机上可能有多个服务, 一个服务监听一个端口,当你访问的时候主机通过端口号就能知道要和哪个端口发生通讯.因此一个主机上不能有两个及以上的服务监听同一个端口. 协议简单来说就是数据的组织形式 好像是两个人交流一样,要保证自己说…...
【H2O2 | 软件开发】Axios发送Http请求
目录 前言 开篇语 准备工作 正文 概念 封装工具包 示例 结束语 前言 开篇语 本系列为短篇,每次讲述少量知识点,无需一次性灌输太多的新知识点。该主题文章主要是围绕前端、全栈开发相关面试常见问题撰写的,希望对诸位有所帮助。 如…...
VScode 运行LVGL
下载vscode解压 环境安装 安装mingw64,gcc 版本必须8.3以上 安装cmak 系统环境变量Path中添加(以实际安装目录为准) C:\Program Files\mingw64\bin C:\Program Files\CMake\bin 将GUI-Guider生成的代码目录拷贝一份放到vscode项目目录…...
AIP-165 按条件删除
编号165原文链接https://google.aip.dev/165状态批准创建日期2019-12-18更新日期2019-12-18 有时API需要提供一种机制,按照一些过滤参数删除大量资源,而非提供待删除的各资源名字。 这是一个稀有的场景,用于用户一次性删除数千或更多资源的…...
React Next项目中导入Echart世界航线图 并配置中文
公司业务要求做世界航线图,跑了三个ai未果,主要是引入world.json失败,echart包中并不携带该文件,源码的world.json文件页面404找不到。需要自己寻找。这是整个问题卡壳的关键点,特此贴出资源网址。 目录 一、安装 二…...
QT与网页显示数据公式的方法
一.网页中显示数学公式通常有三种主要方法 1.图片方式 原理:将公式转换为图片(如 PNG、SVG),通过 <img> 标签嵌入网页。 实现步骤: 使用工具(如 LaTeX dvipng、在线生成工具)将公式渲…...
深入解析APP订阅页的运作机制(订阅页如何运作)
在当今数字经济的背景下,订阅模式已成为许多企业获取稳定收入的重要方式。无论是软件、视频流媒体还是电子商务,订阅服务都能为用户提供持续的价值体验。然而,如何有效地设计和运作一个订阅页,是决定用户是否愿意订阅的关键因素。…...
Golang倒腾一款简配的具有请求排队功能的并发受限服务器
golang官方指南[1]给了一些代码片段,层层递进演示了信道的能力: 1>. 信号量2>. 限流能力 var sem make(chan int, MaxOutstanding) func Serve(queue chan *Request) {for req : range queue {req: reqsem <- 1 go func() { // 只会开启MaxOutstandin…...
【运维】服务器系统从centos7重装为ubuntu22.04
目录 一、硬盘准备二、系统安装三、安装基本系统组件四、挂载机械硬盘五、问题解决 一、硬盘准备 【注意:这一步会把硬盘的数据清空,所以需要找一个空的U盘或者把U盘数据备份】 ubuntu22.04下载 需要先安装 bittorrent 下载完之后会打开一个网页 然后…...
创新技术引领软件供应链安全,助力数字中国建设
编者按 随着数字化转型的加速,针对软件供应链的攻击事件呈快速增长态势,目前已成为网络空间安全的焦点。如何将安全嵌入到软件开发到运营的全流程,实现防护技术的自动化、一体化、智能化,成为技术领域追逐的热点。 悬镜安全作为…...
【设计模式】建造者模式——工厂模式
三、建造者模式——工厂模式 3.1 工厂模式 创建一个类对象的传统方式是使用关键字new, 因为用new 创建的类对象是一个堆对象,可以实现多态。工厂模式通过把创建对象的代码包装起来,实现创建对象的代码与具体 的业务逻辑代码相隔离的目的(将对象的创建和…...
Java基础:枚举类enum入门案例
1.基础枚举定义与使用: package com.zxy;public class Main {public static void main(String[] args) { // 获取枚举值cars car cars.BMW;switch (car){case BMW :System.out.println("BMW");break;case BENZ :System.out.println("BENZ&…...
蓝桥备赛(18)- 红黑树和 set 与 map(上)
对于二叉搜索树 , 平衡二叉树 , 以及红黑树 , 目前只需要了解背后的原理 , 不做代码实现的要求 , 重要的就是了解各种操作的时间复杂度即可 , 为set 与 map 做铺垫 一、二叉搜索树 1.1 基本概念 相较与于堆…...
Spring Boot集成EasyExcel
1. 初始化Spring Boot项目 首先,使用Spring Initializr(https://start.spring.io/)生成一个基本的Spring Boot项目。选择以下依赖项: Spring WebLombok (用于减少样板代码)SLF4J (用于日志记录) 2. 添加依赖 在你的pom.xml文件…...
obeaver 连接oracle 库 模式乱码
下载orai18n-12.1.0.2.0.jar 库--添加文件--把提前下载好的jar 随便放在一个文件夹下--添加文件选中,然后点击找到类, 选择类,确定即可正常 下载地址:https://download.csdn.net/download/weixin_42845364/88368302...
ChatGPT 使用教程:深度探索AI常用功能技巧
文章目录 前言一、ChatGPT介绍1.1 人工智能与自然语言处理的发展1.2 ChatGPT 的诞生与意义 二、ChatGPT 基础入门2.1 注册与登录2.2 对话界面介绍2.3 基本提问方式 三、常用功能详解3.1 文本生成3.2 问题回答3.3 语言翻译3.4 代码生成与调试 四、高级使用技巧4.1 指令优化4.2 多…...
無人機的應用程序有那些可以部署在linux server 系統
Dronecode Project:由 Linux Foundation 主導的開源項目,提供無人機航空操作系統和導航工具的開發框架,適合開發者使用。 DeepSeek-R1:這是一個人工智能模型,適用於無人機的數據處理和分析,支持在 Linux 系…...
[HUBUCTF 2022 新生赛]messy_traffic
下载附件 看到文件类型直接用wireshark打开,对MySQL协议进行追踪流,并没有什么发现,后面对NO.437发现有用信息,http追踪流 发现**system(‘cat passwd.txt’);**这里是在打开查看passwd.txt,密码是"SignUpForHUBU…...
铁人三项(第五赛区)_2018_rop题解
先启动靶机连接看看。 直接ls,就给我输出句话,看来不能直接拿flag。 那走下流程。 查下位数和其他信息: 可以看到是32位的包,开了NX,但没开其他保护。 用ida32打开looklook。 主函数就是个这,看到了弹出的…...
package.json 依赖包约束及快速删除node_modules
文章目录 一、package.json版本约束1、初始项目安装2. 已有 yarn.lock 文件的项目安装3. 特殊情况手动修改 package.json 版本:使用 yarn upgrade 命令: 二、快速删除node_modules三、depcheck 检测npm未使用的依赖 一、package.json版本约束 1、初始项…...
Compose 实践与探索六 —— 动画的流程控制与 Transition
1、Block 参数:监听每一帧 animateTo() 与 animateDecay() 中都有一个函数类型的 block 参数: suspend fun animateDecay(initialVelocity: T,animationSpec: DecayAnimationSpec<T>,block: (Animatable<T, V>.() -> Unit)? null): An…...
虚拟机Contos7为啥不能被本机电脑访问?
1.查看防火墙是否开启 systemctl status firewalld.service 2.如果防火墙关闭就可以直接被访问 3.如果防火墙打开了我们需要开放端口(下面为防火墙一系列指令) # 关闭防火墙 systemctl stop firewalld.service# 打开防火墙 systemctl start firewalld.service# 关闭开启自启…...
【21】单片机编程核心技巧:if语句逻辑与真假判断
【21】单片机编程核心技巧:if语句逻辑与真假判断 七律 条件分野 if语句判真假,括号条件定乾坤。 非零为真零为假,大括号内藏玄门。 省略虽简风险在,代码规范护本根。 单片逻辑由心控,条件分支自成文。 注释…...
Java 实现 Android ViewPager2 顶部导航:动态配置与高效加载指南
Java 实现:明确使用的编程语言。Android ViewPager2:技术栈和核心组件。顶部导航:功能点。动态配置与高效加载指南:突出动态配置的灵活性和性能优化的重点。 在 Android 中使用 Java 实现 ViewPager2 和 TabLayout 的顶部导航也是…...
Python :数据模型
一. 什么是数据模型? Python数据模型是Python对象系统的抽象,通过一组特殊方法(如__init__、__len__等)和协议(如迭代协议、上下文管理协议),定义了对象如何与语言的内置功能(如…...
idea超级AI插件,让 AI 为 Java 工程师
引言 用户可在界面中直接通过输入自然语言的形式描述接口的需求,系统通过输入的需求自动分析关键的功能点有哪些,并对不确定方案的需求提供多种选择,以及对需求上下文进行补充,用户修改确定需求后,系统会根据需求设…...
施磊老师c++笔记(五)
继承与多态-深入掌握oop语言最强大的机制 文章目录 继承与多态-深入掌握oop语言最强大的机制1.继承的基本意义2.派生类的构造过程3.重载,隐藏,覆盖4.虚函数, 静态绑定和动态绑定--面试重点5.虚析构函数--重点在于什么呢时候用6.再讨论虚函数和动态绑定7.理解多态到底是什么8.理…...
µCOS-III从入门到精通 第十四章(软件定时器)
参考教程:【正点原子】手把手教你学UCOS-III实时操作系统_哔哩哔哩_bilibili 一、软件定时器简介 1、定时器的概念与种类 (1)定时器的概念:从指定的时刻开始,经过一个指定时间,然后触发一个超时事件&…...






