一个参数一张Excel表,玩转Pandas的read_excel()表格读取

2023-11-18

作者 | 黄伟呢

来源 | 数据分析与统计学之美

我觉得很有必要讲述这个文章,进行数据处理的第一步就是Python数据读取。但是你可能没想到,在进行数据读取的同时,我们其实可以配合相关参数做很多事儿,这对于后续的数据处理都是极其有帮助。

read_excel()函数和read_csv()函数,在参数上面有很多相同点,因此我就以read_excel()函数为例,进行详细的说明。



1)sheet_name参数

  • 含义:选择要读取的sheet表;

  • sheet_name=0表示默认读取第一个sheet表,等同于sheet_name=“sheet名称”;

  • sheet_name=[“sheet名”,0]会返回一个字典,然后可以利用键获取每一个sheet表中的数据;

  • sheet_name=None也会返回一个字典,但是会返回全部的sheet表;

① sheet_name=0和sheet_name="Sheet1"
# 下面这两个读取方式等同。
#df2 = pd.read_excel("readexcel.xlsx",sheet_name=0)
df2 = pd.read_excel("readexcel.xlsx",sheet_name="Sheet1")
df2

结果如下:

② sheet_name=[“sheet名”,0]
df2 = pd.read_excel("readexcel.xlsx",sheet_name=[0,1])
df2

结果如下:

接着,我们可以使用键值对的方式,获取每个sheet表中的数据。

注:关于sheet_name=None效果同上,只不过会返回所有的sheet表中的数据。

2)header参数
  • 含义:指定某一行作为表头;

  • header=None专门针对没有表头的表,这也是默认值;

  • header=1指定第一行作为表头;

  • header=[]主要针对复合表头的情况;

① header=None
df3 = pd.read_excel("header.xlsx",header=None)
df3

结果如下:

②  header=1
df3 = pd.read_excel("header.xlsx",sheet_name=2,header=1) 
df3

结果如下:

③ header=[]
df3 = pd.read_excel("header.xlsx",sheet_name=3,header=[0,1],index_col=0) 
df3

结果如下:

注意:上述用到了一个index_col参数,这个参数用于指定作为行索引的列,我就不详细举例了,看看下图。

3)usecols参数
  • 含义:选择读取一张表中的指定列;

  • usecols=None也是默认情况,表示读取所有列;

  • usecols=[A,C]表示只选取A列和C列。usecols=[A,C:E]表示选择A列,C列、D列和E列;

  • usecols=[0,2]表示只选择第一列和第三列;

  • usecols=["列名1","列名2"...]这也是推荐使用的一种写法;

① usecols=None
df4 = pd.read_excel("usecols.xlsx",usecols=None) # 默认
df4

结果如下:

② usecols=[A,C]
df4 = pd.read_excel("usecols.xlsx",usecols="A,C") 
df4

结果如下:

③ usecols=[A,C:D]
df4 = pd.read_excel("usecols.xlsx",usecols="A,C:D") 
df4

结果如下:

④ usecols=[0,2]
df4 = pd.read_excel("usecols.xlsx",usecols=[0,2]) 
df4

结果如下:

⑤ usecols=["列名1","列名2"...]

这种方式照说是没有任何问题的,但是在我这边运行总是无结果,我很纳闷,大家可以下去试试。

4)names参数
  • 含义:如果表中没有表头,可以用这个参数添加一个标题。如果表中有表头,可以用这个参数修改标题。

names = ["月份","语文","英语"]
df6 = pd.read_excel("names.xlsx",header=None,names=names) 
df6

结果如下:

5)dtype参数
  • 含义:读取数据时,设置每一列的数据类型(重要);

  • dtype={}传入一个字典,类似于{"列名":"类型"};

df7 = pd.read_excel("dtype.xlsx")
df7.dtypes
------------------------------------------------------
df7 = pd.read_excel("dtype.xlsx",dtype={"年龄":"str"})
df7.dtypes

结果如下:

6)parse_dates参数
  • 含义:指定将哪些列,解析为日期格式;

  • parse_dates=True是专门用于将行索引,解析为日期格式;

  • parse_dates=[0,1,2,3,4]和parse_dates=["列名1","列名2","列名3","列名4"],都是将指定列一起解析为日期格式;

  • parse_dates=[[1,2,3]]和parse_dates=[["年","月","日"]],都是将多个列,解析为单个日期列;

  • parse_dates={"日期":[1,2,3]}不仅将多个日期列解析为单个日期列,同时还为这一列命名;

① parse_dates=True
df8 = pd.read_excel("parse_dates",index_col=2,parse_dates=True)
df8.index

结果如下:

② parse_dates=[0,1]和parse_dates=["列名1","列名2"]
df8 = pd.read_excel("parse_dates",parse_dates=[0,1,2,3,4])
df8.dtypes
# 这个代码效果同上
df8 = pd.read_excel("parse_dates.xlsx",
                    parse_dates=["数值日期1","文本日期2","文本日期3","文本日期4","文本日期5"])

结果如下:

③ parse_dates=[[1,2,3]]和parse_dates=[["年","月","日"]]
#df8 = pd.read_excel("parse_dates.xlsx",sheet_name="Sheet2",parse_dates=[["年","月","日"]])
df8 = pd.read_excel("parse_dates.xlsx",sheet_name="Sheet2",parse_dates=[[1,2,3]])
df8

结果如下:

④ parse_dates={"日期":[1,2,3]}
df8 = pd.read_excel("parse_dates.xlsx",sheet_name="Sheet2",parse_dates={"日期":[1,2,3]})
df8

结果如下:

7)date_parser参数
  • 含义:利用lambda函数,将某个字符串列,解析为日期格式;

  • 一般是配合parse_dates参数,一起使用;

df9 = pd.read_excel("date_parser.xlsx",parse_dates=[1],
                    date_parser=lambda x: pd.to_datetime(x,format="%Y年%m月%d"))
print(df9.dtypes)
df9

结果如下:

8)na_values参数
  • 含义:用于将某些特定的值,解析为NaN值,然后便于我们后面做缺失值的处理;

  • na_values=”值1“表示将所有数据中值1全部替换为NaN;

  • na_values=[”值1“,"值2"]表示将所有数据中值1、值2全部替换为NaN;

  • na_values={"列1":[”值1“,"值2"]}表示将第一列中所有的值1、值2全部替换为NaN;

① na_values=”值1“
df10 = pd.read_excel("na_values.xlsx",na_values=" ")
df10

结果如下:

② na_values=[”值1“,"值2"]
df10 = pd.read_excel("na_values.xlsx",na_values=["a","0"])
df10

结果如下:

③ na_values={"列1":[”值1“,"值2"]}
#  只替换某一列中的某些值为NaN
df10 = pd.read_excel("na_values.xlsx",na_values={"列2":["0"," "]})
df10

结果如下:

9)converters参数
  • 含义:对某一列使用Lambda函数,进行某种运算;

  • 例如:converters={"工资":lambda x: x + 1000};

df11 = pd.read_excel("converters.xlsx",
                     converters={"地址":lambda x: "中国"+x,"工资":lambda x: x + 1000})
df11

结果如下:

●10万条弹幕,发现战神终极奥义!●12000+字超详细 SQL 语法速成!后台回复“入群”即可加入小z干货交流群
干货????
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个参数一张Excel表,玩转Pandas的read_excel()表格读取 的相关文章

  • ARKit 演示在 iPhone 6/iPhone 6 Plus 上崩溃

    我正在与ARKit功能 https developer apple com videos play wwdc2017 602 最近发布了主要的 iOS 版本 但我遇到了错误崩溃failed assertion MTLRenderPassDe
  • 无法在 Angular 10 中的“pdf-viewer”=>“ng2-pdf-viewer”中显示 blob url

    我有一个 API 它将上传的文件作为 blob 返回 当我尝试绑定时src如果使用 blob URL 则它不会显示任何内容 但是 当我尝试绑定直接 URL 时 它可以显示 PDF 文件 这是我下面给出的代码 我的 TS 代码 downloa
  • 有条件地在 html.RadioButtonFor (MVC4/Razor) 中包含选中的属性

    当您在手动编码的 html 元素 例如单选按钮 中显式包含 checked 属性时 您可以使用 bool 来确定该属性是否存在于该元素上正如这里所看到的 http www davidhayden me blog conditional at
  • 从 iPhone 设备查找当前国家/地区

    我必须在 iPhone 设置中获取当前国家 地区 谁能告诉我如何在 iPhone 应用程序中获取当前国家 地区 我必须使用当前国家 地区来解析需要传递当前国家 地区的 RSS 提要 请帮我找到那个国家 提前致谢 要查找用户选择的语言所在的国
  • 在 iOS 上不显示数字键盘

    根据苹果的文档 http developer apple com library safari documentation AppleApplications Reference SafariHTMLRef Articles InputTy
  • 动态添加jinja模板

    我有一个 jinja 模板 它是一组 div 标签内的唯一内容 div include temppage html div 当我按下按钮时 我想用其他内容替换标签之间的所有内容 我希望用另一个 jinja 模板 include realpa
  • 无法在 iOS UIWebView 中加载完整的 Facebook 评论插件

    我有一个简单的ViewController在 UIWebView 中加载 FB 评论插件 implementation ViewController void viewDidLoad super viewDidLoad UIWebView
  • 捕获动态表中 HTML 元素的值

    我有从数据库生成的以下动态表
  • 由于没有系统应用程序而终止

    这个错误让我发疯 我有一个按钮 我想移动到视图控制器 如果我将其设置为初始视图控制器 我可以打开该视图控制器 但现在我通过单击按钮来调用它 视图控制器包含一个自定义视图 我在绘制矩形上放置了一个断点 当绘制矩形完成时 模拟器终止 我在屏幕上
  • 停止在 iOS Web 应用程序上滚动屏幕边缘?

    正在开发 iOS 网络应用程序 用户可以上下滚动页面内容 但是 有没有办法阻止屏幕被拖动得太远以致灰色背景变得可见 这可以通过在移动 Safari 中打开任何网页并将页面下拉来复制 您可以使用诸如 Pastrykit 或 iScroll 之
  • 调用退出后应用程序未退出

    我有一个小问题 我似乎无法弄清楚 我正在将 DataGridView 它的内容 保存到 xls 文件中 我这样做没有任何问题 除了在我的任务管理器中它仍然显示它正在运行 我已致电 xlApp Application Quit 这被声明为 D
  • 使用 iOS swift AVPlayer 在横向模式下不全屏

    我将视频视图设置为全屏 然而 在模拟器中玩时 它并没有全屏运行 此问题仅适用于 iPad 不适用于 iPhone 这是我的代码 override func viewDidAppear animated Bool super viewDidA
  • 领域数据库对象看起来是空的,但实际上不是

    我在用Realm https realm io对于一个小而简单的项目 我正在使用最新版本的框架 昨天从 Github 编译 和当前 AppStore 版本的 Xcode with Swift 2 1 我正在通过 segue 将 Realm
  • CSS 按钮将线性渐变背景转换为透明背景

    我有一个带有线性渐变背景 橙色边框和一些文本的按钮 当我将鼠标悬停在按钮上时 我希望背景变得透明 而不更改按钮的其他属性 我尝试将不透明度转换为 0 但显然 这会隐藏边框和文本 我也尝试过转换背景 但它不起作用 因为我没有要转换到的端点 因
  • 如何计算 COUNTIF 但仅计算唯一值?

    我有一个数据集 其中有一列包含参考文献 参考文献始终遵循相同的格式 1 XXX YYY XXX 始终为 3 个字母 YYY 始终是一个数字 每个XXX都会有YYY 001 如果同一个XXX有多个类型 就会有YYY 002 以此类推 我想知道
  • 解包可选值时意外发现 nil - 使用 ALAMOFIRE

    我正在尝试使用 Alamofire 获取 JSON 格式的数据 当我使用一个 URL 时 它工作正常 当我使用另一个 URL 时 我在解包可选值时收到错误 我似乎无法追踪错误来自哪里 我已采取将代码放入 ViewDidLoad 来跟踪错误
  • 是否有非 VBA Excel 溢出公式来创建和处理数组数组?

    我在 Excel 365 中有一张工作表 其中包含 A 列和 B 列 如下所示 我想使用一些公式 不是 VBA 获取 C 列和 D 列 也就是说 我想重复每一个Title for Count次并为其添加一个流水号 A B C D 1 Tit
  • Python:Scrapy返回元素后面的所有html,而不仅仅是元素的html

    我遇到了 Scrapy 行为异常的问题 几个月前我编写了一个简单的函数 它返回给定 xpath 处的项目列表 def get html response path sel Selector text response page source
  • 属性更改时的 jQuery 事件

    我需要一个函数在 divs data page index 属性更改时运行 var active swipeview active dpi parseInt active attr data page index left data pag
  • CSS - 为什么我无法设置 元素的高度和宽度?

    我正在尝试使用以下 html 标记创建 css 按钮 a href access php class css button red Forgot password a 但它最终不会比中间的文本大 即使我已经设置了班级的高度和宽度 顺便说一句

随机推荐

  • Linux命令 - zip命令

    Linux命令 zip命令 Linux中 zip 命令是个使用广泛的压缩程序 文件经它压缩后会另外产生具有 zip 扩展名的压缩文件 1 语法 zip 参数 文件或目录 2 功能 可以压缩文件且保留源文件 3 参数 A 调整可执行的自动解压
  • 信号完整性揭秘:于博士SI设计手记----阅读笔记

    文章目录 1 概述 2 数字信号的频谱与带宽 3 传输线 1 概述 1 尽管信号是数字的 但是承载这些信息的电压或电流波形是模拟的 2 SI的根本问题 是信号的上升时间减小了 上升时间越小 信号中包含的高频成分越多 导致的互相耦合得到的畸变
  • YOLOv4 tensorrt推理 python版【附代码】

    学了几天的tensorRT 又经过了几天的努力终于实现了YOLOv4 tensorRT推理 这篇文章将把这些成果开源出来 供大家免费使用 YOLOv4代码我采用的是b站up主Bubbliiiing 相信大家应该都比较熟悉这位大佬 关于trt
  • 基于XMind的E-R图制作

    基于XMind的E R图制作 使用工具 XMind2021 E R图我们再熟悉不过 又称实体 联系图 E R图有许多绘制方式 网上也有许多工具和教程 今天我们来采取一种不太正规的手段 使用一款新的软件进行演示 XMind 这款应用我们也不陌
  • 关于登录密码加密的三个方式

    登录密码对于用户来说是最重要的数据 所以在存储的时候需要进行加密 防止在一些外部攻击下用户重要数据被别人获取了 对于登录密码加密 本人整理了三种简单的方式 具体思路如下 一 数据库加密 1 在后端存入数据库时 通过sql语句进行对应数据库的
  • 安装Miniconda+python3.9开发环境

    因为如果你直接通过系统的Python环境开发项目的话 每一个项目下 都需要安装相应的模块环境 所以我这边推荐用Miniconda 通过这个可以大大减小磁盘的利用空间 毕竟开发时一个torch模块已经有一两个G了 多次下载浪费空间 一 下载并
  • oracle数据导入导出

    创建一个目录用来存导出的数据和log 数据所在的机器的目录 SQL gt create directory exp dir1 as home tyc 导出 oracle gzsw3 expdp sys 密码 tns配置中的实例名 schem
  • maven执行失败(mvn clean package)

    开发环境 sh all sh 诡异 build faild 在默认配置下 当Maven项目比较大 运行诸如 mvn clean package 的命令是需要很多的内存的并且会导致失败退出 在架构师哥的帮助下 通过设置maven的运行环境堆大
  • 对于前端开发在vs code中编写后出现的Cannot find module 'crypto-js/hmac-sha256.js'.报错

    移植了老师的代码 出现了该问题 应该是js加密的问题 而本机中并没有使用过js加密 所以并没有该包的原因 遵循没有就安装的方式进行解决 1 直接安装该包 网上大多数都是这个方法 命令行代码如下 npm install crypto js 跟
  • 老胡的周刊(第107期)

    老胡的信息周刊 1 记录这周我看到的有价值的信息 主要针对计算机领域 内容主题极大程度被我个人喜好主导 这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享 项目 open interpreter 2 基于 LLM 为你提供一种新的
  • c99编译报错改用gnu99

    使用c99编译出警告信息 implicit declaration of function usleep 按常规来讲 出现 implicit declaration of function xxxx 是因为头文件未包含导致的 但是uslee
  • 在servlet中 PrintWriter out=response.getWriter()

    1 从HttpServletResponse中get一个PrintWriter 2 打个通俗的比方就是通过HttpServletResponse对象得到一支笔 然后就可以用out print 方法在网页上写任何你想显示的内容 out pri
  • extern “C“ __declspec(dllexport)是什么意思

    如果DLL是提供给VC 用户使用的 你只需要把编译DLL时产生的 lib提供给用户 它可以很轻松地调用你的DLL 但是如果你的DLL是供其他程序如VB delphi 以及 NET用户使用的 那么会产生一个小麻烦 因为VC 对于 declsp
  • Tensorflow初步之非线性回归

    神经网络 输入 1个神经元 中间层 10个神经元 输出 1个神经元 一 创造二次函数并加入噪声 import tensorflow as tf import matplotlib pyplot as plt import numpy as
  • 干货丨7款易上手C语言编程软件推荐

    C语言是一门历史很长的编程语言 其编译器和开发工具也多种多样 其开发工具包括编译器 现举几个开发工具供大家选择 当然也要根据自己的操作系统来选择适合自己的开发工具 好多刚开始接触c语言的朋友都想知道用上面软件开发c语言比较好 一般来说微软的
  • node版本升级:与node-sass、sass-loader版本不兼容问题

    npm WARN deprecated har validator 5 1 5 this library is no longer supported npm WARN deprecated uuid 3 4 0 Please upgrad
  • 浅谈人工智能:现状、任务、构架与统一

    浅谈人工智能 现状 任务 构架与统一 原创 2017 11 02 朱松纯 目录 引言 第一节 现状 正视现实 第二节 未来 一只乌鸦给我们的启示 第三节 历史 从 春秋五霸 到 战国六雄 第四节 统一 小数据 大任务 范式与认知构架 第五节
  • 《动手学深度学习 Pytorch版》 7.3 网络中的网络(NiN)

    LeNet AlexNet和VGG的设计模式都是先用卷积层与汇聚层提取特征 然后用全连接层对特征进行处理 AlexNet和VGG对LeNet的改进主要在于扩大和加深这两个模块 网络中的网络 NiN 则是在每个像素的通道上分别使用多层感知机
  • nginx 配置ssl后配置websockt

    1 前言 这里以Vue 和 nginx 1 22 0 为例 在nginx配置好ssl为前提下 2 代码 vue 连接路径 state ws new WebSocket wss ssl绑定域名 端口号 ws mediaToChatRoom 端
  • 一个参数一张Excel表,玩转Pandas的read_excel()表格读取

    作者 黄伟呢 来源 数据分析与统计学之美 我觉得很有必要讲述这个文章 进行数据处理的第一步就是Python数据读取 但是你可能没想到 在进行数据读取的同时 我们其实可以配合相关参数做很多事儿 这对于后续的数据处理都是极其有帮助 read e