pandas常用方法之read_excel详解

数据准备

准备测试数据如下:

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、str、list类型,指定读取表格的指定列

None时,读取整个excel列
str时,只能按照excel的格式指定列,如"A: G",读取A列到G列的所有列
list时,如:[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

 后续更新中。。。。。

  • 18
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于 Pandasread_excel() 和 to_excel() 函数的各参数详解,我来给你解释一下。 首先,read_excel() 函数用于读取 Excel 文件中的数据,并且可以将其转换成 Pandas 中的 DataFrame 对象。它的基本语法如下: ```python pandas.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, skipfooter=0, convert_float=True, mangle_dupe_cols=True, **kwds) ``` 其中,一些常用的参数如下: - io:要读取的 Excel 文件名或 URL; - sheet_name:要读取的工作表名称或索引,可以是字符串、整数或列表,默认值为 0,即第一个工作表; - header:指定作为列名的行号,默认为 0,即第一行; - names:指定列名,如果 header=None,则必须指定; - index_col:指定作为行名的列号或列名,可以是整数、字符串或 None,默认为 None; - usecols:要读取哪些列,可以是列名或列号,也可以是列表; - dtype:指定每一列的数据类型; - na_values:将指定值识别为 NaN; - skiprows:要跳过的行数; - nrows:要读取的行数; - parse_dates:尝试将指定列解析为日期; - converters:将指定列转换为特定的类型。 而 to_excel() 函数则用于将 DataFrame 对象写入到 Excel 文件中。它的基本语法如下: ```python 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, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None) ``` 其中,一些常用的参数如下: - excel_writer:要写入的 Excel 文件名或 ExcelWriter 对象; - sheet_name:要写入的工作表名称; - na_rep:将 NaN 值替换为指定的字符串; - float_format:浮点数的格式; - columns:要写入的列,可以是列名或列号,也可以是列表; - header:是否写入列名,默认为 True; - index:是否写入行名,默认为 True; - index_label:行名的名称; - startrow:从哪一行开始写入,默认为 0; - startcol:从哪一列开始写入,默认为 0; - merge_cells:是否合并单元格; - encoding:指定编码方式。 以上是 read_excel() 和 to_excel() 函数的各参数详解,希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值