excel文件
读取excel文件
使用read_excel()函数实现对excel文件的读取,语法如下:
pandas.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None, squeeze=None, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, parse_dates=False, date_parser=None, thousands=None, decimal='.', comment=None, skipfooter=0, convert_float=None, mangle_dupe_cols=True, storage_options=None)
常用参数说明:
-
io:接收任何可接受的字符串路径,文件路径。
-
sheet_name:接收字符串,整数,列表或者None。默认为0。字符串用于工作表名称,整数用于零索引工作表位置(图表工作表不计为工作表位置)。字符串/整数列表用于请求多张工作表,返回的是一个字典。默认0作为DataFrame的第一张工作表。
-
header:接收整数,整数列表,默认0。把第0行作为每列的列标签。如果没有标题,请使用 None。
-
names:接收array_like。如果文件不包含标题行,可以将包含列标签的列表传递给names。
-
index_col:接收整数(列索引),或者整数列表,默认None。使用哪一列作为 DataFrame 的行标签。
-
usecols:接收整数、字符串、类列表,默认为None。使用哪些列。
-
dtype:元素类型,使用字典传入 {‘列名1’: np.float64, ‘列名2’: np.int32}
-
engine:接收字符串,默认None。
- 如果 io 不是缓冲区或路径,则必须将其设置为标识 io。支持的引擎:“xlrd”、“openpyxl”、“odf”、“pyxlsb”。引擎兼容性:
- “xlrd”支持旧式 Excel 文件 (.xls)。
- “openpyxl”支持更新的 Excel 文件格式。
- “odf”支持 OpenDocument 文件格式(.odf、.ods、.odt)。
- “pyxlsb”支持二进制 Excel 文件。
- 如果path_or_buffer是 OpenDocument 格式(.odf、.ods、.odt),使用odf;如果path_or_buffer是 xls 格式,将被使用 xlrd;如果path_or_buffer是 xlsb 格式, 将使用pyxlsb;否则使用openpyxl。
- 如果 io 不是缓冲区或路径,则必须将其设置为标识 io。支持的引擎:“xlrd”、“openpyxl”、“odf”、“pyxlsb”。引擎兼容性:
-
nrows:接收整数,默认None。需要读取的行数。
-
na_values:接收标量、字符串、类列表或者字典,默认为None。以下值会被解释为NaN:
''、'#N/A'、'#N/AN/A'、'#NA'、'-1.#IND'、'-1.#QNAN'、 '-NaN'、'-nan'、'1.#IND'、'1.#QNAN'、'<NA>'、'N/A'、'NA'、'NULL'、'NaN'、'n /a'、'nan'、'null'
-
parse_dates:接收布尔值、类列表或者字典,默认为False。
- 布尔值。如果是True,尝试解析索引。
- int 或名称列表。例如,[1, 2, 3]尝试将第 1、2、3 列分别解析为单独的日期列。
- 二维列表。例如,如果 [[1, 3]] -> 将第 1 列和第 3 列合并,并解析为单个日期列。
- dict,例如 {‘foo’ : [1, 3]} -> 将第 1、3 列解析为日期并调用结果 ‘foo’
-
date_parser:函数,可选。用于将字符串列序列转换为日期时间实例数组的函数
返回值:
- DataFrame :来自传入的 Excel 文件的 DataFrame。
示例:
game.xlsx文件如图所示:
该文件中共有三个表分别为:Sheet1、will、Sheet3,首先读取Sheet1,代码如下:
data = pd.read_excel('game.xlsx', sheet_name=0, index_col='整体销售排名')
data
# sheet_name=0或者sheet_name='Sheet1'都可以
# 将'整体销售排名'列设置为行索引
读取的数据如图:
也可以同时读取三个表中的数据,代码如下:
data = pd.read_excel('game.xlsx', sheet_name=[0,'will',2])
data
读取的数据被存入在字典中,其中表名为字典的键,表中的数据为值,如图:
'Sheet1’中的数据:
'will’中的数据:
'Sheet3’中的数据:
写入excel文件
使用to_excel()函数将dataframe写入到excel文件中,语法如下:
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, storage_options=None)
常用参数说明:
- excel_writer:接收文件路径或现有ExcelWriter对象。
- sheet_name:接收字符串,默认为’Sheet1’。
- na_rep:接收字符串,默认为’'。缺失值表示。
- float_format:接收字符串,浮点数的格式字符串。例如:float_format=“%.2f”。
- columns:接收序列或者字符串列表,需要写入的列。
- header:接收布尔值,或字符串列表,默认为True。写入列名。
- index:接收布尔值,默认为True。是否写入行名。
- index_label:接收字符串或序列。如果需要,可选索引列的列标签。如果未指定,并且 header和index为 True,则使用整数索引。
返回值:
- 无返回值。
示例:
将读取的加利福尼亚房屋数据存储为excel文件,代码如下:
# 导包
from sklearn.datasets import fetch_california_housing
housing = fetch_california_housing()
housing
对数据进行处理
# 将数据赋值给变量x
x = housing['data']
# 将数据标签赋值给变量y
y = housing['target'].reshape(-1,1)
# 将feature_names和target_names合并到一个列表中
housing['feature_names'].extend(housing['target_names'])
# 为合并后的housing['feature_names']命名
column = housing['feature_names']
column
# 将数组x和y合并,并且创建DataFrame,将column列表作为df的列名
将数据写入excel文件中
df1.to_excel('california_housing.xlsx', sheet_name='california', index=False)
# 将工作表命名为'california',不设置行索引。
执行外代码后同路径的文件夹中会生成excel文件,文件内容如图: