机器学习之数据清洗(Machine Learning about Data Cleaning)

一、数据清洗

1、基础知识

1.1 数据清洗的用途

爬虫获取的原始数据往往存在各种问题:

  • HTML标签残余
  • 空格换行不一致
  • 编码混乱
  • 格式不一致
  • 有缺失值

这些问题如果不解决,将会影响后续的数据分析与挖掘工作。数据清洗是整个爬虫项目不可或缺的一环,其决定了最终数据的质量。

💡数据清洗不是一次性工作,而是需要根据实际需求分析需求反复迭代的过程。

1.2 常见数据问题与解决方案

问题一:多余空格和换行

字符串前后的空白字符是爬虫数据中最常见的问题。使用 str.strip() 能够去除首尾空格:

df'name' = df'name'.str.strip()

问题二:HTML标签残留

从网页直接提取的文本可能包含未解析的HTML标签,使用正则表达式可以清除它们:

df'content' = df'content'.str.replace(r'<\^\>+>', '', regex=True)

问题三:提取数字或特定格式

有时需要从混合文本里提取出特定的信息,比如从"¥666元",里面提取数字:

df'price_num' = df'price'.str.extract(r'(\d+)')0.astype(float)

问题四:文本格式不统一

对于城市名称,有时需要大小写进行区分,因此需要进行 upper、title 或 lower 等操作:

df'city' = df'city'.str.title() # 首字母大写,其余小写
df'city' = df'city'.str.upper() # 全部大写
df'city' = df'city'.str.lower() # 全部小写

1.3 缺失值处理

现实数据里面往往会有缺失值(NaN)的出现,因此需要对其进行相关处理:

|------------------------|-------------|----------|
| 方法 | 说明 | 适用场景 |
| df.fillna(value) | 使用指定值进行填充缺失 | 缺失有明确的含义 |
| df.dropna(value) | 删除包含缺失值的行 | 缺失数据较少时 |
| dfcol.fillna(mean) | 用均值/中位数填充 | 数值型字段 |

python 复制代码
# 查看每列的缺失值数量
df.isnull().sum()

# 用0填充缺失值
df.fillna(0)

# 删除有缺失值的行
df.dropna()

# 用均值填充数据型缺失值
df['score'].fillna(df['score'].mean())

💡实战建议:先使用df.isnull().sum()了解缺失情况,再决定处理策略。如果某列缺失率超过50%,通常考虑删除该列而非填充。

1.4 数据类型转换

有时需要提取数据类型,不符合预期,例如有时需要数字类型,但爬虫数据是字符串类型:

python 复制代码
# 转换为数值型
df['age'] = pd.to_numeric(df['age'], errors='coerce')

# 转换为日期型
df['date'] = pd.to_datetime(df['date'], errors='coerce')

# 转换为字符串
df['phone'] = df['phone'].astype(str)

💡注意:errors='coerce'参数会在转换失败时将值设为NaN,而不是抛出异常,这是处理脏数据的**好帮手

相关推荐
小年糕是糕手14 分钟前
【AI】用 AI 做自己的个人网站(上):选模板、写提示词,做出第一版
人工智能·app·网页开发·codex·index·styles·0基础教程
硅谷秋水17 分钟前
RoboAtom:机器人学习的大规模原子-动作监督
人工智能·机器学习·计算机视觉·机器人
vipxieliang24 分钟前
具身智能2026:从实验室演示到万台级量产
人工智能
lucas_AI27 分钟前
花旗银行教你算 AI 的账:省下的时间要和审查成本、残余风险记在同一本账上
人工智能
lucas_AI40 分钟前
没人教过它化学立体几何,但它悄悄学会了:前沿 LLM 排构象已经超过经典力场
人工智能
kaixin_啊啊40 分钟前
【零基础学AI】第 26 章——注意力机制怎样工作
人工智能
lucas_AI41 分钟前
扩散语言模型之争有了理论裁决: masked 之外的两派突然追平,还各有胜场
机器学习
在猴站学算法42 分钟前
(《统计学习方法》(第2版) 李航)第2章 感知机算法
学习·算法·机器学习·统计学习
硅谷秋水42 分钟前
OpenRUA 方法分析
人工智能·机器学习·语言模型·机器人