如何使用 NumPy 读取 CSV 文件?

2025年1月5日 | 阅读 4 分钟

引言

在数据科学和分析领域,高效的数据处理至关重要。逗号分隔值 (CSV) 文件是最常见的数据格式之一,它作为存储表格数据的标准。为了利用 Python 进行数据操作,NumPy 库是强大的工具。在本文中,我们将深入探讨使用 NumPy 读取 CSV 文件的细节,释放其高效加载和操作结构化数据的能力。

了解 NumPy 的基础知识

NumPy(Numerical Python 的缩写)是一个强大的库,它支持大型、多维数组和矩阵,以及一组高级数学函数。它的数组对象 ndarray 是许多科学和数据分析应用的核心。NumPy 在高效处理数值数据方面表现出色,使其成为数据科学家和分析师的首选。

CSV 文件:简要概述

在深入研究使用 NumPy 读取 CSV 文件的细节之前,了解 CSV 文件的结构至关重要。CSV 文件由行和列组成,其中每行代表一条记录,每列代表一个字段或属性。CSV 文件中的值由分隔符(通常是逗号)分隔,因此得名“逗号分隔值”。

现在,让我们探讨如何利用 NumPy 无缝读取和操作 CSV 文件。

步骤 1:导入 NumPy

使用 NumPy 的第一步是将该库导入到您的 Python 环境中。这可以通过以下简单的代码行来实现:

步骤 2:使用 NumPy 加载 CSV 文件

NumPy 提供了一个专用函数 `numpy.genfromtxt()` 来从文本文件(包括 CSV 文件)读取数据。该函数用途广泛,能够处理各种文件格式和配置。让我们探讨其读取 CSV 文件的基本用法:

步骤 3:处理缺失数据

实际数据集中经常包含缺失或不完整的信息。NumPy 在文件读取过程中提供了处理缺失数据的选项。例如,您可以使用 `filling_values` 参数为缺失数据指定一个占位符值:

在此示例中,CSV 文件中的任何缺失值都将用 -1 填充。

步骤 4:自定义数据加载

`numpy.genfromtxt()` 函数提供了大量选项来自定义数据加载过程。您可以指定要加载的行和列,跳过标题行,处理注释,等等。例如:

在这种情况下,将跳过第一行(标题),并且仅加载第 0、2 和 3 列。

步骤 5:使用 dtype 实现高效内存使用

NumPy 允许您使用 `dtype` 参数显式指定结果数组的数据类型。这对于内存优化至关重要的超大型数据集特别有用:

通过将数据类型设置为“float32”,与默认的“float64”数据类型相比,可以减少内存占用。

步骤 6:使用 np.loadtxt() 进行高级加载

虽然 `numpy.genfromtxt()` 是一个功能强大的工具,但如果您处理的是没有缺失值或复杂配置的简单 CSV 文件,`numpy.loadtxt()` 函数可以是一个更简洁的选择:

该函数在基本场景中特别高效,其简洁性可以提高代码的可读性。

步骤 7:NumPy 和数据操作

一旦 CSV 数据加载到 NumPy 数组中,就可以进行各种数据操作。NumPy 的数组操作使得对数据集执行计算、过滤和统计分析变得容易。

例如,假设您想计算特定列的平均值和标准差:

实施

假设您有一个名为 sample_data.csv 的 CSV 文件,其内容如下:

代码

输出

Loaded Data:
[[nan nan nan nan]
 [nan 25. 180.  75.]
 [nan 30. 165.  62.]
 [nan 28. 175.  80.]
 [nan 22. 160.  55.]]

Mean Age: 26.25
Standard Deviation of Age: 3.5

结论

总之,掌握使用 NumPy 读取 CSV 文件的艺术对于任何数据科学家或分析师来说都是一项宝贵的技能。NumPy 的高效数组操作和其文件读取函数的通用性相结合,使其成为数据处理任务的强大工具。通过了解 NumPy 的基础知识和读取 CSV 文件的细微差别,您可以释放 Python 在数据分析中的全部潜力,为富有洞察力的发现和明智的决策铺平道路。