介绍
在这个项目中,你将学习如何通过去除不完整、不正确和无效的数据来清理和净化 CSV 数据。目标是从原始数据中创建一个干净的数据集,可用于进一步的分析或处理。
🎯 任务
在这个项目中,你将学习:
- 如何设置项目环境并准备必要的文件
- 如何导入数据清理所需的库
- 如何读取和处理原始数据,检查各种类型的脏数据
- 如何将清理后的数据写入新的 CSV 文件
🏆 成果
完成这个项目后,你将能够:
- 使用 Python 及其标准库处理 CSV 数据
- 应用数据验证和清理技术,如检查缺失值、无效格式和不切实际的数据
- 实施数据清理过程以创建高质量的数据集
- 生成包含清理后数据的新 CSV 文件
了解数据格式
在这一步中,你将在数据清理过程之前了解数据情况。
- 导航到
/home/labex/project目录。 - 在项目目录中,你应该会找到一个
raw_data.csv文件。此文件包含需要清理的原始数据。 - 打开
raw_data.csv文件,你可以看到所有列,其正确格式应为:- 姓名列:超过 1 个单词。
- 性别列:预期为'F'或'M'。
- 出生日期列:格式为
%Y-%m-%d。 - 电子邮件列:符合
username@domain.com。
导入必要的库
在这一步中,你将导入数据清理过程所需的库。
在文本编辑器中打开
data_clean.py文件。在文件开头添加以下代码:
import csv
import re
from datetime import datetime
这些库将用于处理 CSV 文件、正则表达式以及日期/时间操作。
初始化清理后的数据列表
在这一步中,你将创建一个空列表来存储清理后的数据。
- 在
data_clean.py文件中,在导入语句下方添加以下代码:
## 初始化一个空列表来存储清理后的数据
clean_data = []
这个列表将用于存储清理后的数据行。
读取并处理原始数据
在这一步中,你将从raw_data.csv文件读取原始数据,处理每一行,并将有效的行添加到clean_data列表中。
- 在
data_clean.py文件中,在clean_data列表初始化下方添加以下代码:
## 打开并读取原始数据 CSV 文件
with open("raw_data.csv", "r") as f:
reader = csv.DictReader(f) ## 使用 DictReader 以便按名称轻松访问列
for row in reader:
## 从每一行中提取相关字段
name = row["name"]
sex = row["gender"]
date = row["birth date"]
mail = row["mail"]
## 检查名字字段是否为空,如果为空则跳过该行
if len(name) < 1:
continue
## 检查性别字段是否有效('M' 或 'F'),如果无效则跳过该行
if sex not in ["M", "F"]:
continue
## 尝试解析出生日期并计算年龄;如果解析失败则跳过该行
try:
date = datetime.strptime(date, "%Y-%m-%d")
except ValueError:
continue
age = datetime.now().year - date.year
## 如果计算出的年龄不切实际(小于 0 或大于 200),则跳过该行
if age < 0 or age > 200:
continue
## 定义用于验证电子邮件地址的正则表达式模式
r = r"^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}$"
## 检查电子邮件字段是否与正则表达式模式匹配,如果不匹配则跳过该行
if not re.match(r, mail):
continue
## 如果所有检查都通过,则将该行追加到清理后的数据列表中
clean_data.append(row)
这段代码从raw_data.csv文件读取原始数据,处理每一行,并将有效的行添加到clean_data列表中。
将清理后的数据写入新的 CSV 文件
在这一步中,你将把clean_data列表中清理后的数据写入一个名为clean_data.csv的新 CSV 文件。
- 在
data_clean.py文件中,在数据处理部分下方添加以下代码:
## 将清理后的数据写入新的 CSV 文件
with open("clean_data.csv", "w", newline="") as f:
writer = csv.DictWriter(
f, fieldnames=row.keys()
) ## 使用 DictWriter 按列名写入
writer.writeheader() ## 写入标题行
writer.writerows(clean_data) ## 写入所有清理后的行
这段代码创建了一个名为clean_data.csv的新 CSV 文件,并将clean_data列表中清理后的数据写入其中。
运行数据清理脚本
在这最后一步中,你将运行data_clean.py脚本来生成clean_data.csv文件。
保存
data_clean.py文件。如果尚未进入,请在终端中导航到
/home/labex/project目录。运行以下命令来执行数据清理脚本:
python data_clean.py
运行脚本后,你应该会在/home/labex/project目录中找到一个新的clean_data.csv文件,其中包含清理后的数据。
恭喜!你已成功完成 CSV 数据净化项目。
总结
恭喜!你已完成此项目。你可以在 LabEx 中练习更多实验以提升你的技能。



