pandas.read_excel #

熊猫。read_excel ( io sheet_name = 0 * header = 0名称= None index_col = None usecols = None dtype = None engine = None转换器= 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 = _NoDefault.no_default date_format = None数千= None小数= '.' comment = None skipfooter = 0 , storage_options = None , dtype_backend = _NoDefault.no_default , engine_kwargs = None ) [来源] #

将 Excel 文件读入pandas DataFrame.

支持从本地文件系统或 URL 读取xlsxlsxxlsmxlsbodfodsodt文件扩展名。支持读取单个工作表或工作表列表的选项。

参数
io str、bytes、ExcelFile、xlrd.Book、路径对象或类文件对象

任何有效的字符串路径都是可接受的。该字符串可以是 URL。有效的 URL 方案包括 http、ftp、s3 和 file。对于文件 URL,需要一个主机。本地文件可以是:file://localhost/path/to/table.xlsx.

如果你想传入一个路径对象,pandas 接受任何os.PathLike.

通过类文件对象,我们引用具有read()方法的对象,例如文件句柄(例如通过内置open函数)或StringIO.

自版本 2.1.0 起已弃用:不推荐使用传递字节字符串。要读取字节字符串,请将其包装在对象中BytesIO

sheet_name str、int、list 或 None,默认 0

字符串用于工作表名称。整数用于零索引工作表位置(图表工作表不计为工作表位置)。字符串/整数列表用于请求多个工作表。指定None获取所有工作表。

可用案例:

  • 默认为0:第一个工作表作为DataFrame

  • 1:第二张表作为数据框

  • "Sheet1":加载名为“Sheet1”的工作表

  • [0, 1, "Sheet5"]:加载第一个、第二个和名为“Sheet5”的工作表作为DataFrame的字典

  • None:所有工作表。

header int,int列表,默认0

用于解析的 DataFrame 的列标签的行(0 索引)。如果传递一个整数列表,这些行位置将被合并到一个MultiIndex.如果没有标题,请使用 None。

类似数组的名称,默认 None

要使用的列名称列表。如果文件不包含标题行,则应显式传递 header=None。

index_col int、str、int 列表,默认 None

用作 DataFrame 行标签的列(0 索引)。如果没有这样的列,则传递 None。如果传递了一个列表,这些列将被组合成一个MultiIndex.如果使用 选择数据子集usecols,则 index_col 基于该子集。

缺失值将被前向填充,以允许使用 to_excelfor进行往返merged_cells=True。为了避免前向填充缺失值,请使用set_indexafter read the data 而不是 index_col.

usecols str,类似列表或可调用,默认 None
  • 如果没有,则解析所有列。

  • 如果是 str,则表示以逗号分隔的 Excel 列字母和列范围列表(例如“A:E”或“A,C,E:F”)。范围包括双方。

  • 如果是 int 列表,则表示要解析的列号列表(从 0 开始索引)。

  • 如果是字符串列表,则表示要解析的列名列表。

  • 如果可调用,则根据它评估每个列名称,并在可调用返回时解析该列True

根据上述行为返回列的子集。

dtype列的类型名称或字典 -> 类型,默认 None

数据或列的数据类型。例如 {'a': np.float64, 'b': np.int32} 用于object保留 Excel 中存储的数据,而不解释 dtype,这必然会导致objectdtype。如果指定了转换器,则将应用它们而不是数据类型转换。如果您使用None,它将根据数据推断每列的数据类型。

引擎{'openpyxl', 'calamine', 'odf', 'pyxlsb', 'xlrd'}, 默认无

如果 io 不是缓冲区或路径,则必须设置它以识别 io。发动机兼容性:

  • openpyxl支持较新的 Excel 文件格式。

  • calamine支持 Excel(.xls、.xlsx、.xlsm、.xlsb)和 OpenDocument (.ods) 文件格式。

  • odf支持 OpenDocument 文件格式(.odf、.ods、.odt)。

  • pyxlsb支持二进制 Excel 文件。

  • xlrd支持旧式 Excel 文件 (.xls)。

当 时engine=None,将使用以下逻辑来确定引擎:

  • 如果path_or_buffer是 OpenDocument 格式(.odf、.ods、.odt),则将使用odf 。

  • 否则,如果path_or_buffer是 xls 格式,xlrd将使用。

  • 否则,如果path_or_buffer是 xlsb 格式,pyxlsb将被使用。

  • 否则openpyxl将被使用。

转换器字典,默认无

用于转换某些列中的值的函数字典。键可以是整数或列标签,值是采用一个输入参数、Excel 单元格内容并返回转换后的内容的函数。

true_values列表,默认 None

视为 True 的值。

false_values列表,默认 None

视为 False 的值。

Skiprows类似列表、int 或可调用、可选

文件开头要跳过的行号(从 0 开始索引)或要跳过的行数 (int)。如果可调用,则将根据行索引评估可调用函数,如果应跳过该行则返回 True,否则返回 False。有效的可调用参数的一个例子是。lambda x: x in [0, 2]

nrows int,默认无

要解析的行数。

na_values标量、str、类列表或字典,默认无

识别为 NA/NaN 的其他字符串。如果 dict 通过,则特定的每列 NA 值。默认情况下,以下值被解释为 NaN:''、'#N/A'、'#N/AN/A'、'#NA'、'-1.#IND'、'-1.#QNAN'、 '-NaN'、'-nan'、'1.#IND'、'1.#QNAN'、'<NA>'、'N/A'、'NA'、'NULL'、'NaN'、'无'、'不适用'、'南'、'空'。

keep_default_na bool, 默认 True

解析数据时是否包含默认 NaN 值。根据是否na_values传入,行为如下:

  • 如果keep_default_na为 True,并且na_values已指定, na_values则附加到用于解析的默认 NaN 值。

  • 如果keep_default_na为 True,且未na_values指定,则仅使用默认 NaN 值进行解析。

  • 如果keep_default_na为 False,并且na_values指定了 和 ,则仅使用指定的 NaN 值na_values进行解析。

  • 如果keep_default_na为 False,并且na_values未指定,则不会将任何字符串解析为 NaN。

请注意,如果na_filter传入 False,则keep_default_nana_values参数将被忽略。

na_filter bool, 默认 True

检测缺失值标记(空字符串和 na_values 的值)。在没有任何NA的数据中,传递na_filter=False可以提高读取大文件的性能。

详细布尔值,默认 False

指示放置在非数字列中的 NA 值的数量。

parse_dates bool、类似列表或字典,默认 False

行为如下:

  • bool。如果 True -> 尝试解析索引。

  • listint 或名称。例如,如果 [1, 2, 3] -> 尝试将第 1、2、3 列分别解析为单独的日期列。

  • list列表。例如,如果 [[1, 3]] -> 合并第 1 列和第 3 列并解析为单个日期列。

  • dict,例如 {'foo' : [1, 3]} -> 将第 1、3 列解析为日期并调用结果 'foo'

如果列或索引包含无法解析的日期,则整个列或索引将作为对象数据类型原样返回。如果您不想将某些单元格解析为日期,只需将 Excel 中的类型更改为“文本”即可。对于非标准日期时间解析,请使用pd.to_datetimeafter pd.read_excel

注意:对于 iso8601 格式的日期存在快速路径。

date_parser函数,可选

用于将字符串列序列转换为日期时间实例数组的函数。默认用于dateutil.parser.parser进行转换。 Pandas 将尝试以三种不同的方式调用date_parser,如果发生异常,则前进到下一个: 1) 传递一个或多个数组(由parse_dates定义)作为参数; 2) 将parse_dates定义的列中的字符串值连接(按行)到单个数组中并传递; 3)使用一个或多个字符串(对应于parse_dates定义的列)作为参数,为每一行调用一次date_parser 。

自版本 2.0.0 起已弃用:使用date_format替代方案,或读入 as object,然后 to_datetime()根据需要应用。

date_format列的 str 或 dict -> 格式,默认None

如果与 一起使用parse_dates,将根据此格式解析日期。对于更复杂的内容,请阅读 asobjectto_datetime()根据需要应用。

2.0.0 版本中的新增内容。

str,默认无

用于将字符串列解析为数字的千位分隔符。请注意,此参数仅对于在 Excel 中存储为 TEXT 的列是必需的,任何数字列都会自动解析,无论显示格式如何。

十进制str,默认 '.'

识别为小数点的字符,用于将字符串列解析为数字。请注意,此参数仅对于在 Excel 中存储为 TEXT 的列是必需的,无论显示格式如何,任何数字列都将被自动解析。(例如,对欧洲数据使用​​“,”)。

1.4.0 版本中的新增功能。

注释str,默认 None

注释掉该行的其余部分。将一个或多个字符传递给此参数以指示输入文件中的注释。注释字符串和当前行末尾之间的任何数据都将被忽略。

Skipfooter int,默认0

要跳过末尾的行(0 索引)。

storage_options字典,可选

对于特定存储连接有意义的额外选项,例如主机、端口、用户名、密码等。对于 HTTP(S) URL,键值对将urllib.request.Request作为标头选项转发。对于其他 URL(例如以“s3://”和“gcs://”开头),键值对将转发到fsspec.open。请参阅fsspecurllib了解更多详细信息,有关存储选项的更多示例,请参阅此处

dtype_backend {'numpy_nullable', 'pyarrow'}, 默认 'numpy_nullable'

应用于结果的后端数据类型DataFrame (仍处于试验阶段)。行为如下:

  • "numpy_nullable":返回 nullable-dtype-backed DataFrame (默认)。

  • "pyarrow":返回 pyarrow 支持的可为空的ArrowDtype DataFrame。

2.0版本中的新增内容。

engine_kwargs字典,可选

任意关键字参数传递给 Excel 引擎。

返回
DataFrame 或 DataFrame 的字典

来自传入的 Excel 文件的 DataFrame。有关何时返回 DataFrames 字典的更多信息,请参阅sheet_name参数中的注释。

也可以看看

DataFrame.to_excel

将 DataFrame 写入 Excel 文件。

DataFrame.to_csv

将 DataFrame 写入逗号分隔值 (csv) 文件。

read_csv

将逗号分隔值 (csv) 文件读入 DataFrame。

read_fwf

将固定宽度格式行的表读入 DataFrame。

笔记

有关每个 Excel 引擎使用的方法的具体信息,请参阅 pandas 用户指南

例子

可以使用文件名作为字符串或打开的文件对象来读取文件:

>>> pd.read_excel('tmp.xlsx', index_col=0)  
       Name  Value
0   string1      1
1   string2      2
2  #Comment      3
>>> pd.read_excel(open('tmp.xlsx', 'rb'),
...               sheet_name='Sheet3')  
   Unnamed: 0      Name  Value
0           0   string1      1
1           1   string2      2
2           2  #Comment      3

索引和标题可以通过index_col标题参数指定

>>> pd.read_excel('tmp.xlsx', index_col=None, header=None)  
     0         1      2
0  NaN      Name  Value
1  0.0   string1      1
2  1.0   string2      2
3  2.0  #Comment      3

列类型是推断的,但可以显式指定

>>> pd.read_excel('tmp.xlsx', index_col=0,
...               dtype={'Name': str, 'Value': float})  
       Name  Value
0   string1    1.0
1   string2    2.0
2  #Comment    3.0

True、False 和 NA 值以及千位分隔符都有默认值,但也可以显式指定。提供您想要的字符串或字符串列表的值!

>>> pd.read_excel('tmp.xlsx', index_col=0,
...               na_values=['string1', 'string2'])  
       Name  Value
0       NaN      1
1       NaN      2
2  #Comment      3

可以使用 commentkwarg 跳过 Excel 输入文件中的注释行。

>>> pd.read_excel('tmp.xlsx', index_col=0, comment='#')  
      Name  Value
0  string1    1.0
1  string2    2.0
2     None    NaN