hutool读取excel问题_⼀篇⽂章让你了解pandas操作excel的写
⼊和写出
excel对于办公⼈员来说,再熟悉不过,但是通过pandas如何来处理excel的数据,很多⼈⼀直很苦恼,其实pandas处理excel,⼀般是将
excel的数据读取到pandas中,将excel作为⼀种数据存储的介质,和读取csv差不多,但是不同的是excel可以有多个sheet,导出的时候也
分为只导⼊到⼀个sheet还是将多个sheet写⼊到⼀个⼯作簿⾥⾯,下⾯⼀起来看看吧!
read_excel:
⾸先还是先看看需要哪些准备⼯作,pandas不⽤多说肯定是要先安装的,没有的可以猜CMD下输⼊:pip install pandas,但是要处理
excel还需要倒⼊另外两个库:xlrd(xlrd是读excel,xlwt是写excel的库)
先来看看⼀个实例:
四六级准考证打印入口2020第⼀步:导⼊必要的库:
import pandas as pd
第⼆步导⼊需要处理的数据:
这是⽐较简单的读取单⼀sheet的情况,但是如果sheet⽐较多,或者只是想读取某⼏个sheet的该怎么办呢?
read_excel的参数sheet_name可以设置读取的sheet名:
ad_excel('201709.xls',sheet_name=0)
问题⼜来了,不知道有哪些sheets名字:
excel = pandas.ExcelFile("your excel")print(excel.sheet_names)
可恶的英文现在知道了sheet名,读取到pandas中,就可以处理数据了
如何保存到excel中呢?
<_excel('1.xlsx', sheet_name='Sheet1', index=Fal, header=True)
通过以上简单的介绍,应该可以初步了解了pandas的导⼊和导出过程,但还都⽐较简单,我们的需求可能更复杂,下⾯⼀起来仔细阅读以下所有的源代码:
先看下中⽂版read_excel的参数解释:
skip_footer=0, skipfooter=0, convert_float=True, mangle_dupe_cols=True, **kwds)[source]¶
1、io,Excel的存储路径
建议使⽤英⽂路径以及英⽂命名⽅式。
io = r'C:甥敳獲AdministratorDesktopdata.xlsx'
2、sheet_name,要读取的⼯作表名称
可以是整型数字、列表名或SheetN,也可以是上述三种组成的列表。
整型数字:⽬标sheet所在的位置,以0为起始,⽐如sheet_name = 1代表第2个⼯作表。
data = pd.read_excel(io, sheet_name = 1)
data.head()
列表名:⽬标sheet的名称,中英⽂皆可。
data = pd.read_excel(io, sheet_name = '英超射⼿榜')data.head()
SheetN:代表第N个sheet,S要⼤写,注意与整型数字的区别。
ppbdata = pd.read_excel(io, sheet_name = 'Sheet5')data.head()
组合列表: sheet_name = [0, '英超射⼿榜', 'Sheet4'],代表读取三个⼯作表,分别为第1个⼯作表、名为“英超射⼿榜”的⼯作表和第4个⼯作表。显然,Sheet4未经重命名。好听的网名大全
sheet_name 默认为0,取Excel第⼀个⼯作表。如果读取多个⼯作表,则显⽰表格的字典。对于初学者⽽⾔,建议每次读取⼀个⼯作表,然后进⾏⼆次整合。
data = pd.read_excel(io, sheet_name = ['英超积分榜', '西甲积分榜'], nrows = 5)# sheet_name = ['英超积分榜', '西甲积分榜'] ,返回两个⼯作表组成的字典data
3、header, ⽤哪⼀⾏作列名:⼀般很少设置
默认为0 ,如果设置为[0,1],则表⽰将前两⾏作为多重索引。
榆耳data = pd.read_excel(io, sheet_name = '英超积分榜', header = [0,1])# 前两⾏作为列名。data.head()
不想要列名也可以:
data = pd.read_excel(bastation,header=None)
4、names, ⾃定义最终的列名:可以在读取的时候设置你想要的名字
⼀般适⽤于Excel缺少列名,或者需要重新定义列名的情况。
注意:names的长度必须和Excel列长度⼀致,否则会报错。
data = pd.read_excel(io, sheet_name = '英超射⼿榜',names = ['rank','player','club','goal','common_goal','penalty'])data.head()
5、index_col, ⽤作索引的列:这个参数还是很重要的
可以是⼯作表列名称,如index_col = '排名';
可以是整型或整型列表,如index_col = 0 或 [0, 1],如果选择多个列,则返回多重索引。
data = pd.read_excel(io, sheet_name = '英超射⼿榜', index_col = '排名')data.head()data = pd.read_excel(io, sheet_name = '英超射⼿榜', index_col = [0, 1])data.he 6、ucols,需要读取哪些列:数据量⼤的化可以设置,数据量少可以读取后再截取相应列
可以使⽤整型,从0开始,如[0,2,3];
可以使⽤Excel传统的列名“A”、“B”等字母,如“A:C, E” ="A, B, C, E",注意两边都包括。
ucols 可避免读取全量数据,⽽是以分析需求为导向选择特定数据,可以⼤幅提⾼效率。
data = pd.read_excel(io, sheet_name = '西甲射⼿榜', ucols = [0, 1, 3])data.head()data = pd.read_excel(io, sheet_name = '西甲射⼿榜', ucols = 'A:C, E')data.h 7、squeeze,当数据仅包含⼀列:如果数据量真的很少可以⽤pd.read_clipboard()
squeeze为True时,返回Series,反之返回DataFrame。
data = pd.read_excel(io, sheet_name = 'squeeze', squeeze = True)data.head()data = pd.read_excel(io, sheet_name = 'squeeze', squeeze = Fal)data.h
8、converters :强制规定列数据类型:如果涉及数据计算,要不你去excel⾥⾯更改数据类型,要不你还是乖乖的设置这个参数,省的后
期报错
converters = {'排名': str, '场次': int}, 将“排名”列数据类型强制规定为字符串(pandas默认将⽂本类的数据读取为整型),“场次”列强
制规定为整型;
主要⽤途:保留以⽂本形式存储的数字。
data = pd.read_excel(io, sheet_name = 'converters')data['排名'].dtypedata = pd.read_excel(io, sheet_name = 'converters', converters = {'排名': str, '场次': float})da 9、skiprows,跳过特定⾏:很少⽤到,有时候表头不对可能需要跳过第⼀⾏
skiprows= n, 跳过前n⾏; skiprows = [a, b, c],跳过第a+1,b+1,c+1⾏(索引从0开始);
使⽤skiprows 后,有可能⾸⾏(即列名)也会被跳过。最好⽤列表
foundoutdata = pd.read_excel(io, sheet_name = '英超射⼿榜', skiprows = [1,2,3])# 跳过第2,3,4⾏数据(索引从0开始,包括列名)data.head()data = pd.read_excel(io, sheet_n 10、nrows ,需要读取的⾏数:数据太⼤,可以先打开⼀部分看看
能言马与男孩如果只想了解Excel的列名及概况,不必读取全量数据,nrows会⼗分有⽤。
data = pd.read_excel(io, sheet_name = '英超射⼿榜', nrows = 10)data
11、skipfooter , 跳过末尾n⾏:很少⽤得到,
data = pd.read_excel(r'C:甥敳獲AdministratorDesktopdata.xlsx' ,sheet_name = '英超射⼿榜', skipfooter = 43)# skipfooter = 43,跳过末尾43⾏(索引从0开始)
英⽂版本的参数解释:
engine=None, converters=None, true_values=None, fal_values=None, skiprows=None, nrows=None, na_values=None,
keep_default_na=True, verbo=Fal, par_dates=Fal, date_parr=None, thousands=None, comment=None,
skip_footer=0, skipfooter=0, convert_float=True, mangle_dupe_cols=True, **kwds)[source]
Read an Excel file into a pandas DataFrame.
Support both xls and xlsx file extensions from a local filesystem or URL. Support an option to read a single sheet or a list of sheets.
Parameters:
io : str, ExcelFile, xlrd.Book, path object or file-like object:路径
Any valid string path is acceptable. The string could be a URL. Valid URL schemes include http, ftp, s3, and file. For file
URLs, a host is expected. A local file could be: file://localhost/path/to/table.xlsx.
If you want to pass in a path object, pandas accepts any os.PathLike.
By file-like object, we refer to objects with a read() method, such as a file handler (e.g. via builtin open function) or StringIO.
sheet_name : str, int, list, or None, default 0:表名
Strings are ud for sheet names. Integers are ud in zero-indexed sheet positions. Lists of strings/integers are ud toversion是什么意思
request multiple sheets. Specify None to get all sheets.
Available cas:
Defaults to 0: 1st sheet as a DataFrame
繁荣英语1: 2nd sheet as a DataFrame
"Sheet1": Load sheet with name “Sheet1”
[0, 1, "Sheet5"]: Load first, cond and sheet named “Sheet5” as a dict of DataFrame
None: All sheets.
header : int, list of int, default 0 :确定哪个⾏为表头,不写默认为第0⾏
Row (0-indexed) to u for the column labels of the pard DataFrame. If a list of integers is pasd tho row positions will be combined into a MultiIndex. U None if there is no header.
names : array-like, default None :列名称,默认为第⼀⾏的值,也可以⾃定义
List of column names to u. If file contains no header row, then you should explicitly pass header=None.
index_col : int, list of int, default None:确定哪个列为索引,
Column (0-indexed) to u as the row labels of the DataFrame. Pass None if there is no such column. If a list is pasd, tho columns will be combined into a MultiIndex. If a subt of data is lected with ucols, index_col is bad on the subt.
ucols : int, str, list-like, or callable default None :确定导⼊哪些列
Return a subt of the columns.
If None, then par all columns.
If int, then indicates last column to be pard.
Deprecated since version 0.24.0: Pass in a list of int instead from 0 to ucols inclusive.
If str, then indicates comma parated list of Excel column letters and column ranges (e.g. “A:E” or “A,C,E:F”).
Ranges are inclusive of both sides.
If list of int, then indicates list of column numbers to be pard.
If list of string, then indicates list of column names to be pard.
New in version 0.24.0.
If callable, then evaluate each column name against it and par the column if the callable returns True.
New in version 0.24.0.
如果是int,则表⽰要解析的最后⼀列。
从版本0.24.0开始不推荐使⽤:传⼊int列表⽽不是0到ucols(包含)。
建军节用英语怎么说如果是str,则表⽰以逗号分隔的Excel列字母和列范围列表(例如“A:E”或“A,C,E:F”)。 范围包括双⽅。
如果是int列表,则表⽰要解析的列号列表。
如果是string列表,则表⽰要解析的列名列表。
版本0.24.0中的新功能。
如果是可调⽤的,则根据它评估每个列名称,如果callable返回True,则解析该列。
squeeze : bool, default Fal:如果只有⼀列可以转换为Series
If the pard data only contains one column then return a Series.
dtype : Type name or dict of column -> type, default None :数据或列的数据类型。
Data type for data or columns. E.g. {‘a’: np.float64, ‘b’: np.int32} U object to prerve data as stored in Excel and not interpret dtype. If converters are specified, they will be applied INSTEAD of d
type conversion.
例如。 {'a':np.float64,'b':np.int32}使⽤对象保存存储在Excel中的数据⽽不解释dtype。 如果指定了转换器,则它们将应⽤于dtype 转换的INSTEAD。数据或列的数据类型。 例如。 {'a':np.float64,'b':np.int32}使⽤对象保存存储在Excel中的数据⽽不解释dtype。如果指定了转换器,则它们将应⽤于dtype转换的INSTEAD。
New in version 0.20.0.
engine : str, default None: 引擎