• pandas常用方法之read_excel详解


    前期准备

    准备测试数据如下:

    fl_path = r"C:UsersDesktop	est.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类型,文件路径,必须传
    • sheet_name
    值为str或int类型
    
    int类型时,默认值0,表示Sheet1表,依次分别向后表示,不存在该sheet表时抛出IndexError错误: list index out of range
    str类型时,必须输入sheet表的全名,不存在该sheet表时抛出xlrd.biffh.XLRDError错误: No sheet named <'x'>
    
    • 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类型,默认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}
    

      

     后续更新中。。。。。

  • 相关阅读:
    建站始末——(转载)
    阿里云——大神建个人网站分享(转载)
    从零开始建设个人网站
    前端资料——书籍
    【python】*与** 参数问题
    【python】python异常类型
    【python】unittest中常用的assert语句
    【性能测试】性能测试总结<四>
    【性能测试】性能测试总结<三>
    【性能测试】性能测试总结<二>
  • 原文地址:https://www.cnblogs.com/rongge95500/p/11314052.html
Copyright © 2020-2023  润新知