【精选】50

您所在的位置:网站首页 python怎么读取表格文件 【精选】50

【精选】50

2023-11-09 07:13| 来源: 网络整理| 查看: 265

50_Pandas读取 Excel 文件 (xlsx, xls)

要使用 pandas 将 Excel 文件(扩展名:.xlsx、.xls)作为 pandas.DataFrame 读取,请使用 pandas.read_excel () 函数。

这里,将描述以下内容。

openpyxl、xlrd的安装pandas.read_excel()的基本用法通过编号/工作表名称指定要读取的工作表:参数 sheet_name 读取一张Sheet读取多张Sheet加载所有Sheet 指定标头、索引:参数header、index_col指定要读取的列和不读取的行:参数 usecols、skirows、skipfooter

以下面的 xlsx 文件为例。

sheet1

A B C one 11 12 13 two 21 22 23 three 31 32 33

sheet2

AA BB CC ONE 11 12 13 TWO 21 22 23 THREE 31 32 33 openpyxl、xlrd的安装

pandas.read_excel () 在内部使用名为 openpyxl 和 xlrd 的库。

openpyxl 和 xlrd 是在 Python 中读取和写入 Excel 文件(.xlsx、.xls)的库。

openpyxl 和 xlrd 都可以用 pip 安装。

$ pip install openpyxl $ pip install xlrd pandas.read_excel()的基本用法

在第一个参数 io 中指定 Excel 文件的路径或 URL。 如果您有多个工作表,则只有第一个工作表将作为 pandas.DataFrame 加载。

import pandas as pd print(pd.__version__) # 1.2.2 df = pd.read_excel('./data/sample.xlsx', index_col=0) print(df) # A B C # one 11 12 13 # two 21 22 23 # three 31 32 33 print(type(df)) #

Index_col = 0 设置为使第一列索引。稍后将描述细节。 该示例读取 .xlsx 文件(Excel2007 之后的 Excel 文件),但同样适用于 .xls 文件(Excel97-2003 的 Excel 文件)。

通过编号/工作表名称指定要读取的工作表:参数 sheet_name 读取一张Sheet

要读取的工作表可以由参数 sheet_name 指定。通过以 0 开头的数字或工作表名称指定。

df_sheet_index = pd.read_excel('./data/sample.xlsx', sheet_name=0, index_col=0) print(df_sheet_index) # A B C # one 11 12 13 # two 21 22 23 # three 31 32 33 df_sheet_name = pd.read_excel('./data/sample.xlsx', sheet_name='sheet2', index_col=0) print(df_sheet_name) # AA BB CC # ONE 11 12 13 # TWO 21 22 23 # THREE 31 32 33 读取多张Sheet

也可以在参数 sheet_name 中指定一个列表。您可以使用起始编号或工作表名称。 指定的数字或工作表名称被读取为键 key,该工作表的数据 pandas.DataFrame 被读取为值为 value 的字典 dict。

df_sheet_multi = pd.read_excel('./data/sample.xlsx', sheet_name=[0, 'sheet2'], index_col=0) print(type(df_sheet_multi)) # print(len(df_sheet_multi)) # 2 print(df_sheet_multi.keys()) # dict_keys([0, 'sheet2'])

读取时由数字指定的工作表的键是数字,由工作表名称指定的工作表的键是工作表名称。

print(df_sheet_multi[0]) # A B C # one 11 12 13 # two 21 22 23 # three 31 32 33 print(type(df_sheet_multi[0])) # print(df_sheet_multi['sheet2']) # AA BB CC # ONE 11 12 13 # TWO 21 22 23 # THREE 31 32 33 print(type(df_sheet_multi['sheet2'])) # 加载所有Sheet

如果设置了参数 sheet_name = None,则将读取所有工作表。

df_sheet_all = pd.read_excel('./data/sample.xlsx', sheet_name=None, index_col=0) print(type(df_sheet_all)) # print(df_sheet_all.keys()) # dict_keys(['sheet1', 'sheet2']) 指定标头、索引:参数header、index_col

要指定用作标题(pandas.DataFrame 的列名列)和索引(pandas.DataFrame 的行名索引)的行或列,请将行号/列号以 0 开头分别传递给参数 header 和 index_col。

如果 header 和 index_col 设置为 None,特定的行和列将不会用于 headers 和索引,它们将是从 0 开始的序列号。

df_header_index = pd.read_excel('./data/sample.xlsx', header=None, index_col=None) print(df_header_index) # 0 1 2 3 # 0 NaN A B C # 1 one 11 12 13 # 2 two 21 22 23 # 3 three 31 32 33 print(df_header_index.columns) # Int64Index([0, 1, 2, 3], dtype='int64') print(df_header_index.index) # RangeIndex(start=0, stop=4, step=1)

默认为 header = 0(= 第一行是列),index_col = None(= 没有指定列作为索引)。

df_default = pd.read_excel('./data/sample.xlsx') print(df_default) # Unnamed: 0 A B C # 0 one 11 12 13 # 1 two 21 22 23 # 2 three 31 32 33 print(df_default.columns) # Index(['Unnamed: 0', 'A', 'B', 'C'], dtype='object') print(df_default.index) # RangeIndex(start=0, stop=3, step=1)

如果pandas的版本比较旧,如果header中指定的行的第一个元素是NaN,即使默认也使用第一列作为索引(index_col = None)(源码未确认,所以不知道是什么类型的)处理它是。)。 如果要将第一列设置为索引,可以显式设置 index_col = 0 ,任何版本都可以放心。

print(pd.read_excel('./data/sample.xlsx', index_col=0)) # A B C # one 11 12 13 # two 21 22 23 # three 31 32 33

也可以在参数名称中指定任何列名称列,如在读取 csv 文件的 read_csv () 中。有关详细信息,请参阅以下文章。

03_Pandas读取csv/tsv文件(read_csv,read_table) 指定要读取的列和不读取的行:参数 usecols、skirows、skipfooter

如果不需要读取所有行/列,您可以指定读取哪些列和不读取哪些行。

在参数 usecols 中传递要读取的列号列表,在参数 skiprows 中传递要跳过(未读取)的行号列表,在参数 skipfooter 中传递要跳过(未读取)的最后行数。

df_use_skip = pd.read_excel('./data/sample.xlsx', index_col=0, usecols=[0, 1, 3], skiprows=[1], skipfooter=1) print(df_use_skip) # A C # two 21 23

当然,也可以在读取时不处理行列,全部读取后删除行列或引用任意位置的元素。

04_Pandas获取和修改任意位置的值(at,iat,loc,iloc)12_Pandas.DataFrame删除指定行和列(drop)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3