前期准备

准备测试数据如下:

fl_path = r"C:\Users\Desktop\test.xlsx"
dic = {
'num': ['001', '002', '003', '004'],
'name': ['jack', 'bob', 'alice', 'peter'],
'age': [22, 19, 21, 18],
'gender': ['man', 'man', 'woman', 'man']
} info = pd.DataFrame(dic)
writer = pd.ExcelWriter(fl_path)
info.to_excel(writer, index=False)
writer.save()

正文开始

read_excel方法的常用参数详解

read_excel(
io, sheet_name=0, header=0, names=None, index_col=None, usecols=None, squeeze=False, dtype=None, engine=None,
converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None,
keep_default_na=True, verbose=False, parse_dates=False, date_parser=None, thousands=None,
comment=None, skip_footer=0, skipfooter=0, convert_float=True, mangle_dupe_cols=True, **kwds
)
  • io
文件路径。值为str、bytes、ExcelFile、url,必须传
  • sheet_name
值为str、int或者list类型

int类型时,默认值0,表示Sheet1表,依次分别向后表示,不存在该sheet表时抛出IndexError错误: list index out of range
str类型时,必须输入sheet表的全名,不存在该sheet表时抛出xlrd.biffh.XLRDError错误: No sheet named <'x'>
list类型时,元素即可以是int,也可以是str,如:[0, 1, 'Sheet3'],返回值是多个DataFrame的字典
  • header
值为int类型或list类型

默认值0,表示从第一行开始读,输入值大于列的长度时会抛出ValueError错误: Passed header=7 but only 6 lines in file
list内的值也必须在列的长度范围内,如[2, 7],超出会抛出IndexError错误: list index out of range
header=[1, 3]中的1表示按行索引读取第几行,3表示按行索引从第几行开始往后读取。
当输入的最后一个值为最后一行时,如:header=[2, 4],显示方式为:
Empty DataFrame
Columns: [(2, 4), (bob, peter), (19, 18), (man, man)]
Index: []
当一列中含有空行时,header用list时不能包含空行
  • names
值为list或者str,默认None,一般使用list传参

指定表头的名称,list内的值跟表的列数要一一对应,即不能多也不能少,多或者少都会抛出ValueError错误: Number of passed names did not match number of header fields in the file
使用str类型传参时会循环出每一个字符在赋值给每一个表头,即不能多也不能少,多或者少都会抛出ValueError错误。
举栗子:
pd.read_excel(f_path, sheet_name=0, header=1, names='asdf')
a s d f
0 2 bob 19 man
1 3 alice 21 woman
2 4 peter 18 man
字符重复时,会自动在后面追加数字,从1开始,如:names='aaaa'
a a.1 a.2 a.3
0 2 bob 19 man
1 3 alice 21 woman
2 4 peter 18 man
  • index_col
值为int或str类型,默认None,指定第几列做为新的索引列

int时,按索引传参,超出列的长度后会抛出IndexError错误: list index out of range
str时,按第一行的列名传入,不存在该列名时抛出ValueError错误: Index age invalid
  • usecols
值为None、int、str、list类型,指定读取表格的指定列

None时,读取整个excel列
int时,读取从第一列开始到该数值(包含)结束的中间所有列
str时,只能按照excel的格式指定列,如"A: G",读取A列到G列的所有列
list时,list的元素只能是int型,如:[1, 4],表示读取list内指定的第一和第四列
  • skiprows
值为int、list类型或者func(lambda),默认None,跳过指定行(包括)之前的行开始读取

传入的值从1开始的任意int类型,超出行的长度不报错,显示为空,如下:
Empty DataFrame
Columns: []
Index: []
只剩最后一条数据时,显示如下:
Empty DataFrame
Columns: [4, peter, 18, man]
Index: []
  • nrows
值为int类型,默认None,只取前n行数据,按索引传参

传入值为0时,只取第一行,显示如下:
Empty DataFrame
Columns: [1, jack, 22, man]
Index: []
传入其余值时,只显示该值(包括)之前的行,超出行的长度后不报错,有多少行显示多少行
  • converters
值为dict类型,默认None,将指定的数据列转换为int、float、str等数据类型
num name age gender
001 jack 22 man
002 bob 19 man
003 alice 21 woman
004 peter 18 man
如上:是Excel中的原本数据形式,但是当我们读取出来可能就不是这个样子了,num以0开头的都不显示,如下:
num name age gender
0 1 jack 22 man
1 2 bob 19 man
2 3 alice 21 woman
3 4 peter 18 man
那这个时候就需要指定converters参数,将num列指定为str类型就可以了!可多个同时设置,如:converters={'num': str, 'age': str}
  • dtype
值为任意数据类型,默认None,将整个数据表格转为指定的数据类型。传入字典类型时可以指定列,如:{‘A’: np.float64, ‘B’: str}
  • thousands
值为str, 默认None。用于将字符串列解析为数字。请注意,此参数仅对Excel中以文本形式存储的列起作用。
如下数据,金额列是以文本形式存储的带有千分位分隔符的数字(不使用thousands参数读取的结果):
产品 金额
0 A 1,111.02
1 B 451,111.03
2 C 1,789,111.05
3 E 1,111.06
4 G 111.08
类型为object【df.dtypes】
产品 object
金额 object
dtype: object 传入thousands【df = pd.read_excel(file, thousands=',')】参数后结果如下:
产品 金额
0 A 1111.02
1 B 451111.03
2 C 1789111.05
3 E 1111.06
4 G 111.08
类型也由object转为float
产品 object
金额 float64
dtype: object

后续更新中。。。。。

pandas常用方法之read_excel详解的更多相关文章

  1. pandas.read_csv to_csv参数详解

    pandas.read_csv参数整理   读取CSV(逗号分割)文件到DataFrame 也支持文件的部分导入和选择迭代 更多帮助参见:http://pandas.pydata.org/pandas ...

  2. pandas模块的使用详解

    为什么学习pandas numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢? numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类型的 ...

  3. iOS UIView非常用方法及属性详解

    在调用视图的 Quartz  调用都可以正确地在视图中描画.   视图对象通过 bounds .和 center  属 性声明来跟踪自己的大小和位置.frame 属性包含一个矩形,即边框矩形,用于指定 ...

  4. python3 常用模块详解

    这里是python3的一些常用模块的用法详解,大家可以在这里找到它们. Python3 循环语句 python中模块sys与os的一些常用方法 Python3字符串 详解 Python3之时间模块详述 ...

  5. Pandas 常见操作详解

    Pandas 常见操作详解 很多人有误解,总以为Pandas跟熊猫有点关系,跟gui叔创建Python一样觉得Pandas是某某奇葩程序员喜欢熊猫就以此命名,简单介绍一下,Pandas的命名来自于面板 ...

  6. $.ajax()常用方法详解(推荐)

    AJAX 是一种与服务器交换数据的技术,可以在补充在整个页面的情况下更新网页的一部分.接下来通过本文给大家介绍ajax一些常用方法,大家有需要可以一起学习. 1.url: 要求为String类型的参数 ...

  7. 【Java】HashMap源码分析——常用方法详解

    上一篇介绍了HashMap的基本概念,这一篇着重介绍HasHMap中的一些常用方法:put()get()**resize()** 首先介绍resize()这个方法,在我看来这是HashMap中一个非常 ...

  8. 学机器学习,不会数据处理怎么行?—— 二、Pandas详解

    在上篇文章学机器学习,不会数据处理怎么行?—— 一.NumPy详解中,介绍了NumPy的一些基本内容,以及使用方法,在这篇文章中,将接着介绍另一模块——Pandas.(本文所用代码在这里) Panda ...

  9. phpExcel常用方法详解【附有php导出excel加超级链接】

    phpExcel常用方法详解[附有php导出excel加超级链接] 发表于4年前(-- :) 阅读() | 评论() 0人收藏此文章, 我要收藏 赞0 http://www.codeplex.com/ ...

  10. 【笔记】Pandas分类数据详解

    [笔记]Pandas分类数据详解 Pandas  Pandas分类数据详解|轻松玩转Pandas(5) 参考:Pandas分类数据详解|轻松玩转Pandas(5)

随机推荐

  1. 【随手记】Burp Suite 设置HTTP2

    Burp Suite 设置HTTP2

  2. Linux 在miniconda和anaconda同时安装时,卸载miniconda

    1. 找到miniconda目录,删除. rm -rf miniconda3/ 2. 编辑bashrc sudo vim .bashrc setup路径改回anaconda3的,注释掉"&g ...

  3. 常用Linxu指令

    1.查看端口占用情况 1.查看所有的服务端口: netstat -a 2.查看所有端口并显示进程号(PID): netstat -ap 若需停止某一进程,可通过kill PID来杀死进程或者用kill ...

  4. 关于.net core连接数据库字符串加密查询 (DES加密)

    des加密获取的乱码是相对一致的  所以只需要获取到加密乱码在api后台解密就好 1.创建一个控制台用来获取加密后的乱码 using System; using System.Collections. ...

  5. 利用shell脚本来监控linux系统的负载与CPU占用情况

    一.安装linux下面的一个邮件客户端msmtp软件(类似于一个foxmail的工具) 1.下载安装: http://downloads.sourceforge.net/msmtp/msmtp-1.4 ...

  6. Docker技术知识点总纲

    基本介绍的安装使用 1.Docker简要介绍 2.windows下Docker的安装 3.CentOS下Docker的安装 快速入门与常用操作 4.Docker引擎升级与存储驱动的升级 5.Docke ...

  7. 杂:pthread_cond_timedwait导致死锁

    地球人都知道1:pthread_cond_timedwait使用时,需要对[条件]加锁.[条件]也是一种线程共享资源. 地球人都知道2:1个互斥锁不应该管理2类及以上的多线程共享资源 1+2=下面这样 ...

  8. 2022NCTF

    是真的菜 开始复现把 calc 访问之后获得源码 @app.route("/calc",methods=['GET']) def calc(): ip = request.remo ...

  9. M1 IntelliJ IDEA2022安装报错解决方法

    下载地址:http://pan.jizhouyun.com/s/I3QJVzk3et 报错一:系统权限问题 报错示例: 1.XX已损坏,打不开:您应该将它移到废纸娄/已损坏 2.打不开:您应该推出磁盘 ...

  10. 在platformio自动上传esp8266固件

    不想每次上传固件的时候手工点按钮,修改这个文件:C:\Users\你的登录名.platformio\platforms\espressif8266\builder\main.py 在319行UPLOA ...