京公网安备 11010802034615号
经营许可证编号:京B2-20210330
人们经常用pandas处理表格型数据,时常需要读入excel表格数据,很多人一般都是直接这么用:pd.read_excel(“文件路径文件名”),再多一点的设置可能是转义一下路径中的斜杠,一旦原始的excel表不是很规整,这样简单读入势必报错!
其实这个函数有很多参数可以设置,为了应对各式excel表满足各种读入的需求,我们来详细了解下pd.excel()中的主要参数。
首先,认识一下pd.read_excel(),函数的官方文档是这么说的:将Excel文件读取到pandas DataFrame中,支持本地文件系统或URL的’xls’和’xlsx’文件扩展名,带有这两种扩展名的文件,函数都可以处理;
然后它的函数完整版长这个样子:
没想到吧,它它它…它居然有二十多个参数,是不是有点出乎意料,接下来认识下这些参数都是做什么用的吧!
io参数可以接受的有:str,Excel文件,xlrd.Book,路径对象或类似文件的对象,其中最常用的是str,一般是文件路径+文件名,需要注意的是文件名字不要漏掉后缀,即文件扩展名,表明文件类型的那个!有时候需要对路径中的”\”进行转义,io参数没有默认值,必须传入。
举个例子:
输出结果:
sheet_name参数可以接收的有:str,int,list或None,默认0
其中,字符串用于工作表名称。 整数用于零索引工作表位置。 字符串/整数列表用于请求多个工作表。设置None获取所有工作表。
有时候一个excel工作簿中包含有很多个sheet工作表,如果不指定默认为0,数据读入的时候默认读入的是第一个位置的sheet。
常用的是指定sheet位置或者名字,还是来个例子:
输出结果和不指定sheet时的结果是一样的,因为默认的就是第0个sheet:
指定另一个位置的sheet:
输出结果:
输出结果,能够看到结果和sheet_name=1的结果是一样的:
可以看一下原表中sheet的名字就能理解名字为data2的sheet正好在第1个位置(名字为data1的sheet在第0个位置)
通过名字读取另一个sheet就不在这里赘述了,我们看看这个参数还有两种可以接收的对象,挨个看下是什么样的效果吧。
sheet_name参数的其他设置
输出结果:
输出结果:
能够看到比上边只读入两个sheet工作表的命令相比,这里多了data3这个工作表!
综上,sheet_name空值既可以通过sheet位置也可以通过sheet名字来指定读入哪个sheet的数据。
这个参数是用来指定哪一行作为列名的,默认是第0行,接收的参数可以是整数(指定第几行作为列名),可以是有整数组成的列表(指定哪几行作为列名,是的,列名可以有多行,是不是有点突破认知?),也可以是None(没有列名)。
比如这种数据就需要在读入数据的时候指定哪一行作为列名:
开头有空行,直接读取试一下:
是这种效果(截取部分数据图像):
header参数可以有效的解决这个问题,可以看到行标签为1的数据才是我们需要的列名,所以在读取数据的时候进行设置就可以了:
输出结果:
这样就符合要求了!
对header参数的其他设置
为了满足好奇心,我们也实验一下其他的参数,比如整数组成的列表,提前预告,读出来不一定符合业务逻辑要求哦。
输出结果:
能看到的确有两行列名!
如果不要列名是什么样子呢?
输出结果:
不指定列名后的效果就是这样的了!
官方文档说这个参数接收 array-like, 默认 None,表示要使用的列名列表,如果不需要列名,请设置header = None,如果header = None和names参数都设置的话,依然会显示names指定的列名。
还是通过实例来感受下参数的作用吧,为了节省篇幅,代码放入截图中:
如果原始表格中的列名不符合需求,比如上图中很明显是进行聚合后系统生成的列名,在读入数据的时候可以根据需求自定义列名,需要注意的是指定的列名和原数据中的列名是依据位置一一对应的,顺序不要乱了!
官方文档说这个参数接收整数,或者由整数组成的列表,默认是None。
这个参数的作用是指定用哪一列做为行索引。如果传给参数的是整数n,则表示指定第n列作为行索引,如果传入的是列表,则表示需要指定多列作为行索引。上一篇文章中介绍了header参数,是指定由哪一行作为列名,也是传入整数或者整数组成的列表,可以对比记忆。
来个例子感受一下:
上边的例子分别采用了默认值None,整数0和列表[0,1]对index_col进行了设置,用法和效果一目了然。
看下官方文档是怎么说的:该参数接收整数,字符或者类似列表的序列,默认值是None,返回的是列的子集,直白点解释就是在读入表格的时候不是所有的列都会被读入,可以通过usecols参数来设置要把哪些列读取进来。
温馨提示:如果设置了names参数,注意设置的列名个数要和读取的列数一致
来个直观的例子感受下:
结合对参数的文字说明看例子,还是蛮清楚明白的。
来自官方文档的解释:接收布尔值,当取值为True的时候,如果解析的数据仅包含一列,则返回Series。默认值是False,即只有一列也返回Dataframe。
举例说明:
如果需要读进来一个Series,可以通过squeeze参数实现。
惯例还是官方文档的解释:输入表示数据类型的名称字符或者字典,如果输入的是字符表示整个表格的数据都转换成指定的数据类型,如果输入的是字典,那么每个字段可以指定不同的数据类型。
来个例子帮助理解:
由于整个表格中既有文本又有数值,如果要设置成统一的数据类型只能设置成字符型了;针对每一列设置不同的数据类型,效果还是很明显的。
篇幅限制,对pd.read_excel()函数参数的介绍先到这里,剩下的参数在后续的文章中接续介绍哦。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
一、问题:为什么 ID 会"断号" 很多刚接触 MySQL 的同学都会有一个困惑:表里的主键 ID 是自增的,删了中间几行数据之后,ID 变 ...
2026-10-22一、问题场景:为什么会重复 JOIN 同一个子查询 在写复杂 SQL 时,经常遇到这种需求:同一张表或同一个聚合子查询,要和主表关联 ...
2026-10-22人力资源专员是HR体系的执行入口。招聘信息发布、简历初筛、面试安排、考勤汇总、入离职手续、劳动合同与档案管理,大多由这个岗 ...
2026-10-22人力资源经理问“必学技巧”,真正要解决的不是知识清单不够长,而是时间有限、业务催得紧,学完却用不上。更有效的路径是:先用 ...
2026-10-22内容营销岗位的核心任务,不是“把文案写得更漂亮”,而是围绕目标受众,用持续的内容供给影响认知、推动转化并沉淀复购。它至少 ...
2026-10-22理财经理培训课程很多,难的是判断“先学什么、后学什么、学完能做什么”。与其按课程名称罗列,不如先看岗位任务:客户分层与维 ...
2026-10-22理财经理的知识结构,可以先用一句话概括:合规与产品知识决定“不出错”,客户经营与资产配置决定“够不够专业”,市场研判与数 ...
2026-10-22经济学背景做数据分析,优势不在工具,而在问题意识:供需如何相互作用、成本与收益如何权衡、变量之间是相关还是因果。真正的缺 ...
2026-10-22需要,但要把“需要”理解准确。经济学本身就在处理数据:GDP、物价、就业、企业营收、问卷调研,都是经济分析的原料。真正的区 ...
2026-10-22经济学分析能力不是单一技能,它至少由三层构成:把现实问题转成可检验假设的理论框架能力、用数据与统计方法验证假设的工具能力 ...
2026-10-22金融分析师的知识提升,先补的不是更多模型,而是让结论可复核的底层能力。按任务顺序,大致是四层:财务与业务理解、指标口径管 ...
2026-10-22金融分析师的“通用技能”,指换到不同机构、不同行业组仍用得上的底层能力,而非某家公司内部系统的操作经验。按任务拆,日常要 ...
2026-10-22先给结论:数据分析证书不是金融分析师的准入条件,招聘方也不会因为一张证书就直接判断你能做分析。要不要考,取决于你当前任务 ...
2026-10-22金融分析师的核心技能,不是“会看K线”或“会讲宏观”,而是能把一家公司、一个行业或一类资产,转化为可核查的数据判断与书面 ...
2026-10-22产品经理的知识提升,不是把需求文档、原型、SQL、数据分析、项目管理都学一遍,而是先对准目标岗位的真实任务,找出自己最缺的 ...
2026-10-22产品专员提升工作知识,最有效的方式不是先囤课程,而是围绕日常交付的四件事来补:需求调研与优先级判断、原型与PRD表达、竞品 ...
2026-10-22产品运营专员提升个人能力,常见误区是先把Excel、SQL、Python列成一张学习清单,然后从第一个工具开始学。更有效的做法是先回答 ...
2026-10-22产品运营的能力提升,最怕从“课程目录”出发:今天学增长模型,明天背SQL语法,学完却说不清自己负责的功能为什么激活率低。更 ...
2026-10-22产品经理的技能和影响力不是两条分开的赛道。技能决定你能不能把问题分析清楚、把方案设计对;影响力决定你的判断能否被团队接受 ...
2026-10-22产品经理要学的数据分析能力,不是“会写SQL”或“会用BI工具”这么简单。更准确地说,是围绕需求评估、功能迭代、指标监控、实 ...
2026-10-22