您的位置:

pd.read_excel: Excel 数据处理的得力工具

pd.read_excel 是 Python 中 Pandas 库提供的一个非常好用的函数,它可以方便地读取 Excel 文件,并将其转化成 Pandas DataFrame 格式,让我们可以用 Python 语言处理 Excel 数据。在本文中,我们将从多个方面来详细阐述 pd.read_excel 的用法和特性。

一、读取 Excel 文件

pd.read_excel 在最基本的情况下,可以用来读取 Excel 文件并返回一个 Pandas DataFrame。下面是一个简单的例子,演示了如何读取一个名为 "example.xlsx" 的 Excel 文件:

import pandas as pd

df = pd.read_excel("example.xlsx")
print(df.head())

这里我们使用了 Pandas 的 import 语句导入了库,然后使用 read_excel 函数读取了 Excel 文件,并将读取的结果赋值给一个名为 df 的 Pandas DataFrame。最后我们用 print 函数输出了 DataFrame 的前 5 行数据。

二、读取指定的 Excel 表格和工作表

有时候,一个 Excel 文件中会有多个工作表(sheet),我们可以使用 read_excel 函数的 sheet_name 参数来指定要读取的工作表名称或编号(从 0 开始)。下面是一个演示读取一个 Excel 文件中指定工作表和指定列的例子:

df = pd.read_excel("example.xlsx", sheet_name="Sheet1", usecols=["A", "B"])
print(df.head())

使用参数 sheet_name 指定要读取的工作表名称 "Sheet1",使用参数 usecols 指定要读取的列标题(A、B)。最后同样使用 print 函数输出 DataFrame 的前 5 行数据。

三、读取 Excel 文件中的非表头数据

有时候,Excel 文件中的数据并不是从第一行开始保存的,而是在表头之下的某一行之后。如果我们要读取文件中这个位置的数据该怎么办呢?这时候我们可以使用 read_excel 函数中的 header 参数和 skiprows 参数。header 参数用来设置指定行数作为表头,skiprows 参数用来跳过指定行数。

df = pd.read_excel("example.xlsx", header=3, skiprows=2)
print(df.head())

上面的例子中,我们使用了 header=3,跳过了前三行的表头,再使用 skiprows=2,跳过了两行,最后读取了非表头数据的内容所在的行。可以看到,通过这种方法,我们可以准确地读取数据。

四、更改 Excel 中时间格式

在 Excel 中,时间日期数据可以使用不同的格式进行保存。有时候,我们读取到的时间日期数据在 Pandas DataFrame 中可能不是我们期望的格式,这时候我们需要处理一下。Pandas 的 read_excel 函数提供了一个 parse_dates 参数,可以自动解析包含日期时间的列。

df = pd.read_excel("example.xlsx", parse_dates=["Date"])
print(df.head())

在上面的例子中,我们使用 parse_dates=["Date"] 参数,让 Pandas 自动解析包含日期时间的 "Date" 列,并以正确的格式进行显示。

五、更改数据类型

有时候,读取的数据在 Pandas 中的数据类型可能不是我们期望的类型。这时候,我们可以使用 converters 参数,将读取的数据类型进行转换。

def to_int(val):
    return int(val)

df = pd.read_excel("example.xlsx", converters={"A": to_int})
print(df.head())

上面的例子中,我们定义了一个函数 to_int,将读取的字符串转换成整数。然后在 read_excel 函数中,指定 converters={"A": to_int},将 "A" 列的数据类型转换成整数。

六、从 Excel 中筛选特定数据

在处理 Excel 数据时,有些时候我们只需要特定的一些数据,这时候可以使用 Pandas DataFrame 中的查询(query)功能。

df = pd.read_excel("example.xlsx")
subset = df.query('Name == "John"')
print(subset)

上面的例子中,我们使用 read_excel 函数读取了整个 Excel 文件。然后使用 query 函数,选择了所有 "Name" 列为 John 的数据,并将结果输出。这里的 query 条件可以是任何有效的 Python 表达式。

七、使用数据库连接读取 Excel 文件

如果我们的 Excel 文件非常大,一次性读取可能会导致内存不足,这时候可以考虑使用 Pandas 的 read_sql 函数,通过数据库连接一行一行地读取 Excel 数据。

import sqlite3

conn = sqlite3.connect("example.db")
c = conn.cursor()
c.execute(
    """
    CREATE TABLE example (Name text, Age integer, City text);
    """
)
df = pd.read_excel("example.xlsx")
df.to_sql("example", conn, if_exists="append", index=False)

subset = pd.read_sql(
    """
    SELECT * FROM example WHERE Name = 'John'
    """,
    conn,
)
print(subset)

上面的例子中,我们使用了 SQLite 数据库作为例子数据库,并在数据库中创建了一个名为 "example" 的表格。然后使用 read_excel 函数读取了 Excel 文件,并将其内容写入了数据库的 "example" 表格中。其中的 to_sql 函数用于将 DataFrame 写入数据库中。最后我们使用 read_sql 函数,从 SQLite 数据库中选择 "Name" 列为 John 的数据,并将其输出。

通过上面的例子,我们可以看出,pd.read_excel 可以拓展出非常多有用的功能,让我们可以高效地处理 Excel 数据。在实际开发中,我们可以结合以上方法,灵活地处理 Excel 数据,高效地把数据转化成有用的信息。