Pandas read_excel:读取一个 sheet 中的多个表格

Pandas read_excel:读取一个 sheet 中的多个表格

在本文中,我们将介绍如何使用 Pandas 的 read_excel 方法来读取一个 Excel 文件中一个 sheet 里的多个表格。

在很多实际场景中,我们经常需要将同一个主题下的不同数据都记录在同一个 Excel 文件的同一个 sheet 中。比如一个销售报告,可能包含不同时间段的销售数据,我们可以将这些数据拆分成多个表格,然后分别记录在一个 sheet 中,这样方便数据的统计与比较。

阅读更多:Pandas 教程

Excel 文件和 sheet 的基本信息

在实际操作中,我们需要使用 Pandas 模块中的 read_excel 方法来读取 Excel 文件中的数据。在读取 data sheet 时,我们常常需要注意以下几个参数:

  • io:文件路径、ExcelFile 对象或者 Pandas 中提供的远程地址等。

  • sheet_name(默认为 0):可以是 sheet 名,也可以是 sheet 的索引号,也可以为 None。如果为 None,则返回所有 sheet 的数据。

  • header:用作列名的行号(索引),默认为 0(第一行)。如果设置为 None,则第一行也作为数据行。

  • skiprows:需要忽略的行数(从开始处算起),默认为 0。

这篇文章主要介绍如何在一个 sheet 中读取多个表格,所以我们不仅需要设置好读取表格的参数,同时也要获取 Excel 文件和 sheet 的基本信息。

假设有一个 sales_report.xlsx 文件,里面有三个 sheet,数据分别为 2018 年、2019 年和 2020 年的销售数据,我们要分别读取每个表格的数据。下面是代码示例:

import pandas as pd

# 定义 Excel 文件名,sheet 名
filename = 'sales_report.xlsx'
sheetname = 'Sheet1'

# 获取 ExcelFile 对象
xls = pd.ExcelFile(filename)

# 获取 sheet 中的表格名称列表
sheets = xls.sheet_names

# 遍历表格名称列表,读取数据
for table_name in sheets:
    table = pd.read_excel(xls, sheet_name=sheetname, header=0, skiprows=None)
    print(f'Table {table_name}:\n{table.head()}')
Python

在上面的代码中,我们首先定义了文件名和 sheet 名,接着使用 pd.ExcelFile 方法获取 Excel 文件对象,然后通过 .sheet_names 属性获取 Excel 文件中所有 sheet 的名称,并将这些名称储存在 sheets 变量中。接下来使用 for 循环遍历 sheets 列表,读取每个 sheet 中的表格,并输出前五行数据。

将多个表格全部读入

当我们需要读取一个 sheet 中所有表格的数据时,可以将 sheet_name 设置为 None,这样 Pandas 会将 sheet 中所有表格读入,并返回一个字典。其中字典的 key 为表格名称,value 为表格中的数据。代码如下:

import pandas as pd

# 定义 Excel 文件名和 sheet 名
filename = 'sales_report.xlsx'
sheetname = 'Sheet1'

# 读取数据
data = pd.read_excel(filename, sheet_name=None, header=0, skiprows=None)

# 获取字典中表格名称和数据
for table_name, table in data.items():
    print(f'Table {table_name}:\n{table.head()}\n')
Python

在上面的代码中,我们首先定义了文件名和 sheet 名,接着使用 pd.read_excel 方法获取 Excel 文件对象,并将 sheet_name 参数设置为 None。这样 Pandas 会将 Excel 文件中的所有数据读入并放进一个字典中,字典的 key 为表格名称,value 为表格数据。

接下来使用 for 循环遍历字典中所有条目,获取每个表格的名称和表格的数据,然后输出前五行数据。

如果我们想要将多个表格的数据合并成一个数据表,可以使用 Pandas 的 concat 方法将多个表格合并

如果我们想要将多个表格合并成一个数据表,可以使用 Pandas 的 concat 方法:

import pandas as pd

# 定义 Excel 文件名和 sheet 名
filename = 'sales_report.xlsx'
sheetname = 'Sheet1'

# 读取数据
data = pd.read_excel(filename, sheet_name=None, header=0, skiprows=None)

# 如果不同表格中的列名相同,可以使用 pd.concat 方法将多个表格合并为一个数据表
merged_data = pd.concat(data, axis=0, sort=False)

print(merged_data.head())
Python

上面的代码中,我们先读取出所有的表格数据,并将它们合并成一个新的数据表 merged_data。pd.concat 方法的第一个参数是一个字典(即读取 Excel 文件的结果),表示需要合并的数据表;axis 表示合并的方向,0 表示纵向合并,即在行方向上将两个数据表连接起来;sort=False 表示不进行排序。

输出结果如下:

              日期    销售额
0     2018-01-01  100.0
1     2018-01-02   80.0
2     2018-01-03    NaN
3     2018-01-04    NaN
4     2018-01-05  120.0
...          ...    ...
1090  2020-12-26  200.0
1091  2020-12-27    NaN
1092  2020-12-28   70.0
1093  2020-12-29  150.0
1094  2020-12-30   90.0
Python

总结

通过本文,我们介绍了如何使用 Pandas 的 read_excel 方法读取一个 Excel 文件中一个 sheet 中的多个表格,包括获取 Excel 文件和 sheet 的基本信息、将多个表格全部读入和将多个表格合并成一个数据表。这些方法可以帮助我们更方便地进行数据处理与分析,提高工作效率。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程