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
- comment
# 该参数用于指定 Excel 文件中的注释单元格。注释单元格通常不参与计算,但会显示在单元格中。当你使用 comment 参数时,Pandas 会在结果中过滤掉被注释的行,如下 df_tmp = pd.read_excel(excel_path) print(df_tmp.head()) print('-' * 100) df_tmp = pd.read_excel(excel_path, comment='#') print(df_tmp.head()) ''' 编号 需求部门 需求名称 ... 总运行时间(小时) 是否达到业务要求 待提升点 0 1 风险部 XXX报 ... 22.85 是 无 1 #2 风险部 XXX下载 ... 1.30 是 无 2 3 风险部 XXX批量下载 ... 16.00 是 无 3 4 风险部 XXX批量下载 ... 8.85 是 无 4 5 风险部 XXX份额分析报告 ... 0.04 是 无 [5 rows x 10 columns] ---------------------------------------------------------------------------------------------------- 编号 需求部门 需求名称 ... 总运行时间(小时) 是否达到业务要求 待提升点 0 1 风险部 XXX报 ... 22.85 是 无 1 3 风险部 XXX批量下载 ... 16.00 是 无 2 4 风险部 XXX批量下载 ... 8.85 是 无 3 5 风险部 XXX份额分析报告 ... 0.04 是 无 4 6 风险部 XXX情况月度监测表 ... 0.02 是 无 [5 rows x 10 columns] ''' # 注:注释字符可以为任意字符
后续更新中。。。。。
本文来自博客园,仅供参考学习,如有不当之处还望不吝赐教,不胜感激!转载请注明原文链接:https://www.cnblogs.com/rong-z/p/11314052.html
作者:cnblogs用户