第一章 数据清洗基础
1.1 什么是数据清洗
数据清洗是数据分析过程中非常重要的一步。在实际工作中,我们获取到的原始数据往往存在各种问题:
- 缺失值 - 某些字段没有记录数据
- 重复值 - 相同的数据被记录了多次
- 异常值 - 明显不符合常理的数据
- 格式不一致 - 同一类型数据格式不统一
💡 数据清洗通常占数据分析总时间的 60% - 80%,是数据科学工作中不可或缺的环节。
1.2 Pandas 读取数据
首先,让我们学习如何用 Pandas 读取 CSV 数据文件:
import pandas as pd
# 读取 CSV 文件
df = pd.read_csv('retail_orders.csv')
# 查看前 5 行数据
print(df.head())
💻 在线代码编辑器
输入 Python 代码后点击运行按钮执行
第二章 缺失值处理
2.1 查找缺失值
我们可以使用 isnull() 或 isna() 方法来检测缺失值:
# 查看每列缺失值数量 print(df.isnull().sum()) # 查看包含缺失值的行 missing_rows = df[df.isnull().any(axis=1)]
2.2 处理缺失值
常见的处理方式有两种:删除和填充:
# 方式 1:删除含有缺失值的行 df_clean = df.dropna() # 方式 2:用均值填充数值型列 df['price'] = df['price'].fillna(df['price'].mean()) # 方式 3:用众数填充类别型列 df['category'] = df['category'].fillna(df['category'].mode()[0]) # 方式 4:用前向填充 df['sales'] = df['sales'].fillna(method='ffill')
第三章 重复值与异常值
3.1 处理重复值
# 检查重复值
print("重复行数:", df.duplicated().sum())
# 删除重复值
df = df.drop_duplicates()
# 基于特定列检查重复
df = df.drop_duplicates(subset=['name', 'email'])
3.2 检测异常值
常用方法是使用 IQR (四分位距) 来检测异常值:
# 计算四分位数 Q1 = df['amount'].quantile(0.25) Q3 = df['amount'].quantile(0.75) IQR = Q3 - Q1 # 计算边界 lower_bound = Q1 - 1.5 * IQR upper_bound = Q3 + 1.5 * IQR # 筛选出正常范围的数据 df_clean = df[(df['amount'] >= lower_bound) & (df['amount'] <= upper_bound)]
第四章 数据类型转换与格式统一
4.1 数据类型转换
# 查看数据类型 print(df.dtypes) # 转换数据类型 df['price'] = df['price'].astype(float) df['date'] = pd.to_datetime(df['date']) df['is_active'] = df['is_active'].astype(bool)
4.2 字符串处理
# 字符串操作
df['name'] = df['name'].str.strip()
df['name'] = df['name'].str.lower()
df['name'] = df['name'].str.replace('_', ' ')
# 提取子字符串
df['category'] = df['product_code'].str[:2]
练习题(共5题)
练习 1:检测缺失值
如果你想查看 DataFrame 中每列有多少缺失值,应该使用哪个方法?
正确! df.isnull() 返回一个布尔矩阵,然后用 sum() 就可以统计每列的缺失值数量。
练习 2:删除重复值
下列哪个方法可以删除 DataFrame 中的重复行?
正确! drop_duplicates() 是 Pandas 专门用来删除重复行的方法。
练习 3:填充缺失值
用均值填充缺失值时,使用哪个方法?
正确! fillna() 方法用于填充缺失值,可以接受均值、中位数等统计值作为参数。
练习 4:数据类型转换
将字符串列转换为日期类型应该使用哪个方法?
正确! pd.to_datetime() 是 Pandas 中专门用于日期转换的函数。
练习 5:异常值检测
IQR 方法中,异常值的判断标准是什么?
正确! IQR方法使用 1.5 倍的四分位距作为异常值判断标准。
测试题(共 5 题,满分 100 分)
问题 1 / 5
数据清洗通常占数据分析总时间的比例约为?
问题 2 / 5
下列哪个方法可以删除含有缺失值的行?
问题 3 / 5
IQR 是什么的缩写?
问题 4 / 5
计算 IQR 时,Q1 和 Q3 分别代表什么?
问题 5 / 5
用众数填充缺失值最适合什么类型的数据?
作业提交
📝 数据可视化作业
请完成以下数据清洗任务:
- 1. 创建一个包含缺失值和重复值的 DataFrame
- 2. 使用至少两种方法处理缺失值
- 3. 删除重复行
- 4. 输出处理后的数据
💻 作业代码提交