pandas.read_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)[源代码]#

将Excel文件读入Pandas数据帧。

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

参数
io字符串、字节、ExcelFile、xlrd.Book、Path对象或类似文件的对象

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

如果要传入Path对象,则Pandas接受任何 os.PathLike

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

sheet_name字符串、整型、列表或无,默认为0

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

可用案例:

  • 默认为 0 :第一张图纸作为 DataFrame

  • 1: 2nd sheet as a DataFrame

  • "Sheet1" :加载名称为“Sheet1”的图纸

  • [0, 1, "Sheet5"]: Load first, second and sheet named "Sheet5" as a dict of DataFrame

  • 无:所有工作表。

headerInt,int列表,默认为0

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

names类似数组,默认为无

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

index_colInt,int列表,默认为无

要用作DataFrame的行标签的列(0-已索引)。如果没有这样的列,则传递None。如果传递列表,则这些列将合并到一个 MultiIndex 。如果使用选择数据的子集 usecols INDEX_COL是基于子集的。

将向前填充缺少的值,以允许使用 to_excelmerged_cells=True 。若要避免向前填充缺少的值,请使用 set_index 读取数据后,而不是 index_col

usecols字符串、类似列表或可调用,默认为无
  • 如果没有,则解析所有列。

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

  • 如果list of int,则指示要解析的列号列表(0-索引)。

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

  • 如果可调用,则针对其计算每个列名,并在可调用返回时解析该列 True

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

squeeze布尔值,默认为False

如果解析的数据只包含一列,则返回一个Series。

1.4.0 版后已移除: 附加 .squeeze("columns") 呼叫到 read_excel 来压缩数据。

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

数据或列的数据类型。例如,{‘a’:np.flat64,‘b’:np.int32}使用 object 保留存储在Excel中的数据,而不解释数据类型。如果指定了转换器,则将应用它们而不是数据类型转换。

engine字符串,默认为无

如果io不是缓冲区或路径,则必须对其进行设置以标识io。支持的引擎:“xlrd”、“Openpyxl”、“odf”、“pyxlsb”。引擎兼容性:

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

  • “Openpyxl”支持较新的Excel文件格式。

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

  • “pyxlsb”支持二进制Excel文件。

在 1.2.0 版更改: 发动机 xlrd 现在仅支持老式 .xls 档案。什么时候 engine=None ,将使用以下逻辑来确定引擎:

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

  • 否则,如果 path_or_buffer 是一种XLS格式, xlrd 将会被使用。

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

    1.3.0 新版功能.

  • 否则 openpyxl 将会被使用。

    在 1.3.0 版更改.

convertersDict,默认无

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

true_values列表,默认为无

要视为True的值。

false_values列表,默认为无

要视为False的值。

skiprowsList-like、int或Callable、可选

文件开始处要跳过的行数(0-索引)或要跳过的行数(Int)。如果可调用,则将根据行索引计算可调用函数,如果应该跳过该行,则返回True,否则返回False。有效的可调用参数的示例如下 lambda x: x in [0, 2]

nrowsInt,默认为无

要分析的行数。

na_values标量、字符串、类似列表或DICT,默认为无

要识别为NA/NaN的其他字符串。如果DCT通过,则为特定的每列NA值。默认情况下,下列值被解释为NaN:‘’、‘#N/A’、‘#N/A N/A’、‘#NA’、‘-1.#IND’、‘-1.#QNAN’、‘-NaN’、‘-NaN’、‘1.#IND’、‘1.#QNAN’、‘<NA>’、‘N/A’、‘NA’、‘NULL’、‘NaN’、‘n/a’、‘NaN’、‘NULL’。

keep_default_na布尔值,默认为True

在解析数据时是否包括默认的NaN值。取决于是否 na_values 传入时,行为如下:

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

  • 如果 keep_default_na 为真,并且 na_values 未指定,则只使用默认的NaN值进行解析。

  • 如果 keep_default_na 为假,并且 na_values ,则仅指定NaN值。 na_values 用于解析。

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

请注意,如果 na_filter 作为FALSE传递,则 keep_default_nana_values 参数将被忽略。

na_filter布尔值,默认为True

检测缺少的值标记(空字符串和NA_VALUES的值)。在没有任何NAS的数据中,传递NA_FILTER=FALSE可以提高读取大文件的性能。

verbose布尔值,默认为False

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

parse_datesBool、List-Like或Dict,默认为False

其行为如下:

  • 布尔。如果为True->尝试解析索引。

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

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

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

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

注意:对于ISO 8601格式的日期,有一条快速路径。

date_parser函数,可选

用于将字符串列序列转换为DateTime实例数组的函数。默认情况下使用 dateutil.parser.parser 来进行转换。Pandas会试着呼唤 date_parser 如果发生异常,则以三种不同的方式前进到下一个:1)传递一个或多个数组(由 parse_dates )作为参数;2)连接(按行)由定义的列的字符串值 parse_dates 放入单个数组并传递该函数;以及3)调用 date_parser 使用一个或多个字符串(对应于由 parse_dates )作为参数。

thousands字符串,默认为无

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

decimal字符串,默认为‘.’

要识别为小数点的字符,用于将字符串列分析为数字。请注意,此参数仅对于在Excel中存储为文本的列是必需的,任何数字列都将被自动解析,而不考虑显示格式。(例如,使用‘,’表示欧洲数据)。

1.4.0 新版功能.

comment字符串,默认为无

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

skipfooter整型,默认为0

末尾要跳过的行(0-已编制索引)。

convert_float布尔值,默认为True

将整型浮点数转换为整型(即1.0-->1)。如果为False,则所有数字数据都将作为浮点型读入:Excel在内部将所有数字存储为浮点型。

1.3.0 版后已移除: Convert_Float将在未来版本中删除

mangle_dupe_cols布尔值,默认为True

重复的列将指定为‘X’、‘X.1’、...‘X.N’,而不是‘X’...‘X’。如果列中有重复的名称,则传入False将导致数据被覆盖。

storage_optionsDICT,可选

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

1.2.0 新版功能.

退货
DataFrame或DataFrame的字典

传入的Excel文件中的DataFrame。有关何时返回DataFrames的判定的更多信息,请参见Sheet_NAME参数中的注释。

参见

DataFrame.to_excel

将DataFrame写入Excel文件。

DataFrame.to_csv

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

read_csv

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

read_fwf

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

示例

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

>>> 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_colheader 论据

>>> 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

可以跳过EXCEL输入文件中的注释行 comment 科瓦格

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