数据准备
准备测试数据如下:
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
)
|
文件路径。值为 str 、bytes、ExcelFile、url,必须传
|
值为 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的字典
|
值为 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 时不能包含空行
|
值为 list 或者 str ,默认 None ,一般使用 list 传参<br>
指定表头的名称, 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
|
值为 int 或 str 类型,默认 None ,指定第几列做为新的索引列
int 时,按索引传参,超出列的长度后会抛出IndexError错误: list index out of range
str 时,按第一行的列名传入,不存在该列名时抛出ValueError错误: Index age invalid
|
值为 None 、 str 、 list 类型,指定读取表格的指定列
None 时,读取整个excel列
str 时,只能按照excel的格式指定列,如 "A: G" ,读取A列到G列的所有列
list 时,如:[ 1 , 4 ],表示读取 list 内指定的第一和第四列
|
值为 int 、 list 类型或者func( lambda ),默认 None ,跳过指定行(包括)之前的行开始读取
传入的值从 1 开始的任意 int 类型,超出行的长度不报错,显示为空,如下:
Empty DataFrame
Columns: []
Index: []
只剩最后一条数据时,显示如下:
Empty DataFrame
Columns: [ 4 , peter, 18 , man]
Index: []
|
值为 int 类型,默认 None ,只取前n行数据,按索引传参
传入值为 0 时,只取第一行,显示如下:
Empty DataFrame
Columns: [ 1 , jack, 22 , man]
Index: []
传入其余值时,只显示该值(包括)之前的行,超出行的长度后不报错,有多少行显示多少行
|
值为 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 }
|
值为任意数据类型,默认None,将整个数据表格转为指定的数据类型。传入字典类型时可以指定列,如:{‘A’: np.float64, ‘B’: str}
值为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
# 该参数用于指定 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]
'''
# 注:注释字符可以为任意字符
后续更新中。。。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人