TT's Learning
← 返回首页

多数据集合并

掌握Pandas数据清洗的核心技能,包括处理缺失值、重复值、异常值等关键步骤,为后续分析打下坚实基础。

入门 30分钟 📁 retail_orders.csv
学习进度
0%
0/4
已学习
0/5
练习
0
得分
第一章 数据清洗基础

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 中每列有多少缺失值,应该使用哪个方法?

练习 2:删除重复值

下列哪个方法可以删除 DataFrame 中的重复行?

练习 3:填充缺失值

用均值填充缺失值时,使用哪个方法?

练习 4:数据类型转换

将字符串列转换为日期类型应该使用哪个方法?

练习 5:异常值检测

IQR 方法中,异常值的判断标准是什么?

测试题(共 5 题,满分 100 分)

问题 1 / 5

数据清洗通常占数据分析总时间的比例约为?

问题 2 / 5

下列哪个方法可以删除含有缺失值的行?

问题 3 / 5

IQR 是什么的缩写?

问题 4 / 5

计算 IQR 时,Q1 和 Q3 分别代表什么?

问题 5 / 5

用众数填充缺失值最适合什么类型的数据?

作业提交

📝 多数据集合并作业

请完成以下数据清洗任务:

  • 1. 创建一个包含缺失值和重复值的 DataFrame
  • 2. 使用至少两种方法处理缺失值
  • 3. 删除重复行
  • 4. 输出处理后的数据
💻 作业代码提交