用 NumPy 读取 CSV 文件是一项非常基础的任务,可以采用 genfromtxt()
或 loadtxt()
函数来完成。下面是使用 NumPy 读取 CSV 文件的步骤:
步骤1:导入 NumPy 模块
首先需要在代码中导入 NumPy 模块,以便使用 NumPy 库中的各种函数和方法来操作 CSV 文件。可以使用以下代码导入 NumPy 模块:
import numpy as np
步骤2:使用 genfromtxt()
或 loadtxt()
函数加载 CSV 文件
接下来可以使用 genfromtxt()
或 loadtxt()
函数来加载 CSV 文件。它们两个的主要区别在于如何处理缺失值。
genfromtxt()
genfromtxt()
函数可以处理含有缺失值的 CSV 文件,默认情况下将缺失值替换为 nan
(NumPy 中的特殊值),具有更好的灵活性。以下是使用 genfromtxt()
函数加载 CSV 文件的示例代码:
my_data = np.genfromtxt('my_file.csv', delimiter=',', skip_header=1)
在这个示例中,genfromtxt()
函数从名为 my_file.csv
的文件读取数据,使用逗号作为分隔符,跳过第一行(即标题行),并将结果保存到 my_data
变量中。
loadtxt()
loadtxt()
函数不能处理含有缺失值的 CSV 文件,但是在处理简单文件时比 genfromtxt()
更快,并且使用更少内存。以下是使用 loadtxt()
函数加载 CSV 文件的示例代码:
my_data = np.loadtxt('my_file.csv', delimiter=',', skiprows=1)
在这个示例中,loadtxt()
函数从名为 my_file.csv
的文件读取数据,使用逗号作为分隔符,跳过第一行(即标题行),并将结果保存到 my_data
变量中。
示例
以下是两个示例,展示了使用 NumPy 读取 CSV 文件的不同用法:
示例1:简单情况
假设有一个名为 grades.csv
的文件,其中包含学生的成绩记录,如下所示:
Name, Age, Gender, Grade
Tom, 25, M, 70
Lisa, 20, F, 85
John, 26, M, 60
通过使用以下代码可以读取这个文件:
my_data = np.genfromtxt('grades.csv', delimiter=',', skip_header=1, dtype=None)
在结果中,每一列的名称对应原始 CSV 文件中的列名,如下所示:
array([('Tom', 25, 'M', 70), ('Lisa', 20, 'F', 85), ('John', 26, 'M', 60)],
dtype=[('Name', '<U4'), ('Age', '<i4'), ('Gender', '<U1'), ('Grade', '<i4')])
示例 2:处理缺失值的情况
假设有一个名为 grades2.csv
的文件,其中包含学生的成绩记录,但其中一行是空白的:
Name, Age, Gender, Grade
Tom, 25, M, 70
, , ,
Lisa, 20, F, 85
John, 26, M, 60
通过使用以下代码可以读取这个文件,同时将空白行替换为 nan
:
my_data = np.genfromtxt('grades2.csv', delimiter=',', skip_header=1, missing_values='', filling_values=np.nan, dtype=None)
在结果中,nan
值表示原始 CSV 文件中该位置的空白行:
array([('Tom', 25., 'M', 70.), (nan, nan, nan, nan),
('Lisa', 20., 'F', 85.), ('John', 26., 'M', 60.)],
dtype=[('Name', '<U4'), ('Age', '<f8'), ('Gender', '<U1'), ('Grade', '<f8')])
以上是使用 NumPy 读取 CSV 文件的详细介绍,包括了导入 NumPy 模块、使用 genfromtxt()
或 loadtxt()
函数加载 CSV 文件以及两个使用示例。