机器学习之数据清洗(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,而不是抛出异常,这是处理脏数据的**好帮手

相关推荐
写bug如流水1 小时前
【LLM】Qwen3.5 35B A3B 单卡 RTX 3090 部署教程
人工智能·llama
浩瀚地学1 小时前
deepagents学习打卡day07
经验分享·笔记·python·学习·agent
泰晶科技1 小时前
【智能手表晶振选型:小尺寸与低功耗如何兼得】
人工智能·笔记
吴佳浩1 小时前
构建企业级 DevOps 排错 Agent:从日志告警到自动化修复 PR
人工智能·agent·ai编程
机核研创社1 小时前
卫衣长袖长裤一套的自动化工序拆解:拉链侧袋、螺纹口、裤腰、卷边各交给谁做
人工智能·自动化
seowmt1 小时前
结构化数据和自然语言描述哪个更管用?答案分场景
人工智能·google·typescript·go语言·schema
海宇数据1 小时前
零信任架构实战:基于海宇车型识别精准构建自动化违章处理网关
运维·人工智能·架构·自动化
XMAIPC_Robot1 小时前
RK3588+CODESYS+RK182X AI 扩展机器人控制器解决方案|硬实时运动控制 + 大算力边缘 AI 融合实战
人工智能·机器人·rk3588+codesys·arm+codesys
霸道流氓气质1 小时前
Mermaid 图表完全指南:从文本语法到LangGraph4j工作流可视化实战
开发语言·python