介绍
在数据分析中,第一步通常是将你的数据加载到结构化格式中。Pandas 是一个强大的 Python 库,非常擅长这项任务。从 CSV 等平面文件读取数据的最常用函数是 pandas.read_csv()。这个函数非常灵活,提供了广泛的参数来处理不同的文件格式和潜在问题。
在本实验中,你将学习如何使用 pd.read_csv() 将 CSV 文件中的数据导入到 Pandas DataFrame 中。我们将介绍如何处理注释、指定表头、管理缺失值以及对加载的数据进行初步检查。
使用 read_csv 读取 CSV 文件
在本步骤中,你将学习 pd.read_csv() 函数的基本用法,将数据从 CSV 文件加载到 Pandas DataFrame 中。
我们的项目目录 ~/project 包含一个名为 data.csv 的文件。让我们检查一下它的内容。它在开头包含一些注释行,这些行以 # 符号开头。可以使用 comment 参数指示 read_csv 函数忽略这些行。
首先,从左侧的文件浏览器中打开 main.py 文件。我们将在该文件中编写 Python 代码。
将以下代码添加到 main.py 中,以导入 Pandas 并读取 data.csv 文件。我们将把生成的 DataFrame 赋值给一个名为 df 的变量,然后打印它。
import pandas as pd
## 读取 CSV 文件,将以 '#' 开头的行视为注释
df = pd.read_csv('data.csv', comment='#')
## 打印 DataFrame
print(df)
现在,要运行脚本,请在 WebIDE 中打开一个终端(你可以使用菜单 Terminal > New Terminal),然后执行以下命令:
python3 main.py
你应该会看到以下输出,它显示了 CSV 文件内容已加载到结构化的 DataFrame 中。
id name age city
0 1 Alice 25 New York
1 2 Bob 30 Los Angeles
2 3 Charlie Not Available London
3 4 David 35 NaN
4 5 Eve 22 Paris
在 read_csv 中指定表头行
在本步骤中,我们将探讨 read_csv 函数的 header 参数。
默认情况下,read_csv 假定文件中的第一行(非注释行、非跳过行)是包含列名的表头行。在我们的 data.csv 文件中,在跳过注释行后,id,name,age,city 这一行被正确地推断为表头。
header 参数允许你显式地指定哪一行用作表头。它接受一个整数,表示行索引(从 0 开始)。由于第一行数据(在注释之后)是我们的表头,其索引是 0。
让我们修改 main.py 文件,显式设置 header=0。虽然在我们的情况下这是默认行为,但明确指定可以防止格式异常的文件出现错误。
使用以下代码更新你的 main.py:
import pandas as pd
## 显式指定第一行(索引为 0)在注释之后是表头
df = pd.read_csv('data.csv', comment='#', header=0)
print(df)
再次从终端运行脚本:
python3 main.py
输出将与上一步相同,因为我们只是确认了默认行为。这种做法对于代码的清晰度和健壮性很有用。
id name age city
0 1 Alice 25 New York
1 2 Bob 30 Los Angeles
2 3 Charlie Not Available London
3 4 David 35 N/A
4 5 Eve 22 Paris
使用 na_values 参数处理缺失值
在本步骤中,你将学习如何处理缺失数据的自定义表示。
如果你查看上一步的 DataFrame,你会发现在 age 列中有 "Not Available" 值,在 city 列中有 NaN 值。Pandas 会自动识别一些常见的缺失值指示符,如空字符串、NA 或 N/A,但不会识别自定义的如 "Not Available"。我们可以使用 na_values 参数提供一个字符串列表,这些字符串将被解释为 NaN(Not a Number),这是 Pandas 用于缺失数据的标准标记。
修改你的 main.py 以包含 na_values 参数。
import pandas as pd
## 定义一个将被视为缺失值的字符串列表
missing_values = ["Not Available", "N/A"]
## 读取 CSV,指定自定义缺失值
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)
print(df)
现在,运行脚本:
python3 main.py
观察新的输出。"Not Available" 字符串已被替换为 NaN。
id name age city
0 1 Alice 25.0 New York
1 2 Bob 30.0 Los Angeles
2 3 Charlie NaN London
3 4 David 35.0 NaN
4 5 Eve 22.0 Paris
请注意,age 列的数据类型也已更改为 float64 以容纳 NaN 值。
使用 head 方法显示前几行
在本步骤中,你将学习如何检查 DataFrame 的前几行。
处理大型数据集时,打印整个 DataFrame 是低效的,并且会弄乱你的屏幕。.head() 方法是一种方便的方式来快速预览你的数据。默认情况下,它返回前 5 行。
你也可以向 .head() 传递一个整数来指定你想要查看的行数。让我们只显示 DataFrame 的前 3 行。
按如下方式更新你的 main.py 文件。现在我们将只打印 DataFrame 的头部,而不是整个 DataFrame。
import pandas as pd
missing_values = ["Not Available", "N/A"]
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)
## 显示 DataFrame 的前 3 行
print(df.head(3))
从你的终端执行脚本:
python3 main.py
输出现在会短得多,只显示表头和前三条记录。
id name age city
0 1 Alice 25.0 New York
1 2 Bob 30.0 Los Angeles
2 3 Charlie NaN London
使用 shape 属性检查 DataFrame 的形状
在本步骤中,你将学习如何检查 DataFrame 的维度。
了解行数和列数是数据分析中的一个基本检查。Pandas DataFrame 有一个 .shape 属性,它返回一个包含行数和列数的元组。
请注意,.shape 是一个属性,而不是一个方法,因此在访问它时不需要使用括号 ()。
让我们修改 main.py 来打印 DataFrame 的形状。
import pandas as pd
missing_values = ["Not Available", "N/A"]
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)
## 获取 DataFrame 的维度(行数,列数)
df_shape = df.shape
print(df_shape)
最后一次运行脚本:
python3 main.py
输出将是一个元组,表明我们的 DataFrame 有 5 行和 4 列。
(5, 4)
总结
恭喜你完成了这个实验!你已经掌握了使用 Pandas 读取和检查数据的基本技能。
在本实验中,你已熟练掌握:
- 使用
pd.read_csv()将 CSV 文件读取到 DataFrame 中。 - 使用
comment参数跳过注释行。 - 使用
header参数显式定义表头行。 - 使用
na_values参数处理自定义的缺失值。 - 使用
.head()方法预览 DataFrame。 - 使用
.shape属性检查 DataFrame 的维度。
这些是基础操作,几乎是所有数据分析任务的起点。掌握了这些技能,你将能更好地应对各种数据导入挑战。



