如何在使用 Pandas 读取 CSV 文件时跳过行

2024年8月29日 | 阅读 7 分钟

Pandas 是一个强大的 Python 库,它提供了易于使用的数据操作工具来处理表格数据。它构建在 NumPy 包之上,并为数据分析提供了一个高级接口。数据分析中最常见的任务之一是从 CSV 文件中读取数据。本文将探讨如何使用 Pandas 在读取 CSV 文件时跳过行。

什么是 CSV 文件?

CSV 是逗号分隔值的缩写。它是一种用于将表格数据存储为纯文本的文件格式。CSV 文件的每一行代表一个记录,每一列代表记录中的一个字段。每列中的值由逗号分隔。CSV 文件易于创建,并且可以被许多应用程序读取,因此它们在存储数据方面很受欢迎。

使用 Pandas 读取 CSV 文件

Pandas 提供 read_csv() 函数来从 CSV 文件读取数据。此函数返回一个 DataFrame,即带有标签轴的二维数据表。CSV 文件的第一行被假定为标题行,并且列名是从该行推断出来的。

如果 CSV 文件没有标题行,我们可以使用 read_csv() 函数的 names 参数来指定列名。

默认情况下,read_csv() 函数读取 CSV 文件的所有行。但是,在某些情况下,我们可能想要跳过一些行。例如,如果 CSV 文件包含一些标题行或注释,我们可能想要跳过这些行。

读取 CSV 文件时跳过行

要在读取 CSV 文件时跳过行,我们可以使用 read_csv() 函数的 skip rows 参数。skip rows 参数接受一个整数列表,表示要跳过的行。例如,要跳过 CSV 文件的第一行,我们可以设置 skip rows=[0]。类似地,我们可以设置 skiprows=[0, 1] 来跳过前两行。

让我们看一个例子。假设我们有一个名为 data.csv 的 CSV 文件,其内容如下:

此 CSV 文件包含以 # 符号开头的两行标题,我们想在读取文件时跳过这些行。我们可以使用 skip rows 参数跳过这些行。

输出

   Name   Age          City
0  John    25      New York
1  Mary    30  Los Angeles

如我们所见,CSV 文件的前两行已被跳过,生成的 DataFrame 仅包含数据行。

基于条件的跳过行

有时,我们可能想根据条件跳过行。例如,我们可能想跳过具有缺失值的行或不满足特定标准的行。我们可以将 skip rows 参数与其他参数结合使用来实现此目的。

让我们考虑一个例子。假设我们有一个名为 data.csv 的 CSV 文件,其中包含学生的信息,包括他们的姓名、年龄和成绩。

此 CSV 文件中的某些行包含缺失值。我们想在读取文件时跳过包含缺失值的行。我们可以使用 read_csv() 函数的 na_values 参数来指定应被视为缺失值的值,然后使用 skip 参数跳过包含缺失值的行。例如:

输出

   Name   Age Grade
0  John  25.0     A
1  Mary  30.0     B

读取大型 CSV 文件时跳过行

在处理大型 CSV 文件时,读取所有行可能需要很长时间并消耗大量内存。在这种情况下,分块读取文件可能比单独处理每个块更有效。我们可以使用 read_csv() 函数的 chunk_size 参数以指定的大小读取文件。

让我们考虑一个例子。假设我们有一个名为 data.csv 的大型 CSV 文件,其中包含数百万行数据。

我们想在读取文件时跳过文件的前 100,000 行。我们可以使用 chunk_size 参数以每个 100,000 行的块读取文件,然后连接生成的 DataFrame。例如:

这将输出完整的 DataFrame,其中包含除前 100,000 行之外的所有行。

Pandas 是 Python 中强大的数据分析工具,它提供了许多其他数据操作功能,如过滤、排序、分组和聚合数据。学习 Pandas 对于任何使用 Python 进行数据工作的人来说都非常有价值,从数据分析师到数据科学家和机器学习工程师。凭借其直观的语法和强大的工具,Pandas 可以轻松地处理表格数据并执行复杂的数据分析任务。

除了在读取 CSV 文件时跳过行之外,Pandas 还提供了许多其他数据预处理、清理和转换函数。例如,我们可以使用 drop duplicates()、drop() 和 fillna() 等函数来删除重复项、删除列或行以及填充 DataFrame 中的缺失值。

让我们看一些例子。假设我们有一个名为 data.csv 的 CSV 文件,其中包含有关学生的数据,包括他们的姓名、年龄、成绩和性别。

我们想跳过包含缺失数据的所有行,删除重复项,并删除 Gender 列。我们可以这样做:

输出

   Name   Age Grade
0  John  25.0     A
1  Mary  30.0     B

如我们所见,DataFrame 现在仅包含具有完整数据、没有重复项且不包含 Gender 列的行。

另一个有用的数据预处理函数是 apply()。此函数允许我们将一个函数应用于 DataFrame 的每个元素或列元素。例如,我们可以使用 apply() 将 Age 列转换为整数。

输出

   Name  Age Grade
0  John   25     A
1  Mary   30     B

如我们所见,Age 列已转换为整数。

另一件需要注意的是,Pandas 还提供了 CSV 文件读取的多个选项,包括指定列名和数据类型,以及设置处理缺失值、分隔符和引用字符的选项。这些选项可以使用 read_csv() 函数的参数来指定。

例如,如果 CSV 文件没有标题行,我们可以使用 names 参数指定列名。

输出:此输出与之前的 DataFrame 相同。

   Name  Age Grade
0  John   25     A
1  Mary   30     B

如我们所见,DataFrame 现在具有由 names 参数指定的列名。

我们还可以使用 dtype 参数指定列的数据类型。

输出

这将输出与之前相同的 DataFrame,但 Age 列将为整数。

   Name  Age Grade
0  John   25     A
1  Mary   30     B

如我们所见,dtype 参数允许我们指定列的数据类型,这有助于避免数据类型错误和优化内存使用。

Pandas 还提供了处理缺失值的多个选项,例如使用 na_values 参数指定要视为缺失的值,或使用 fillna() 函数处理缺失值。

结论

在本文中,我们探讨了如何使用 Pandas 在读取 CSV 文件时跳过行。我们已经看到,我们可以使用 read_csv() 函数的 skip rows 参数根据行的索引跳过行,或者使用 na_values 和 skip 等其他参数根据条件跳过行。我们还看到了如何分块读取大型 CSV 文件并连接生成的 DataFrame。

在读取 CSV 文件时跳过行在许多数据分析任务中可能很有用,例如跳过标题行或注释,跳过具有缺失数据的行,或跳过文件开头的一定数量的行。通过使用 Pandas,我们可以轻松地在读取 CSV 文件时跳过行,并根据需要操作生成的 DataFrame。

数据预处理和清理是数据分析和机器学习中的基本步骤,因为它们会影响结果的质量和准确性。我们可以使用 Pandas 及其函数轻松地预处理和清理数据,并将其转换为适合分析或建模的格式。Pandas 是 Python 中强大的数据分析工具,它提供了许多其他数据操作功能,如过滤、排序、分组和聚合数据。学习 Pandas 对于任何使用 Python 进行数据工作的人来说都非常有价值,从数据分析师到数据科学家和机器学习工程师。凭借其直观的语法和强大的工具,Pandas 可以轻松地处理表格数据并执行复杂的数据分析任务。