数据分析--数据清洗

一、数据清洗的重要性:数据质量决定分析成败

1.1 真实案例警示

  • 电商平台事故:2019年某电商大促期间,因价格数据未清洗导致错误标价,产生3000万元损失
  • 医疗数据分析:未清洗的异常血压值(如300mmHg)导致疾病预测模型准确率下降27%
  • 金融风控失效:重复借贷申请未去重,造成1.2亿元坏账

1.2 数据质量问题

在这里插入图片描述

二、数据分析全流程与清洗定位

2.1 六步分析法(清洗为核心)

  1. 需求定义:明确业务目标(如用户流失分析)
  2. 数据采集:数据库查询/API获取/日志收集
  3. 数据清洗:本阶段耗时占比达60-70%
  4. 探索分析:统计描述与可视化
  5. 建模分析:构建预测模型
  6. 报告输出:制作可视化看板

2.2 清洗流程标准化

企业级处理流程

在这里插入图片描述

三、Python数据清洗核心函数详解

3.1 Pandas清洗工具箱

# 缺失值处理
df.dropna(subset=['关键字段'])  # 删除关键字段缺失行
df['年龄'].fillna(df['年龄'].median(), inplace=True)  # 中位数填充

# 重复值处理
df.drop_duplicates(subset=['订单ID'], keep='last')  # 保留最新记录

# 异常值处理
df = df[(df['销售额'] > 0) & (df['销售额'] < 1e6)]  # 合理范围过滤

# 格式转换
df['日期'] = pd.to_datetime(df['日期'], errors='coerce')  # 强制日期格式

3.2 高级清洗技巧

# 跨字段逻辑校验
df = df[~(df['会员等级'] == '黄金会员') & (df['累计消费'] < 5000)]  # 剔除矛盾数据

# 文本清洗
df['地址'] = df['地址'].str.replace(r'\s+', '')  # 去除空白字符
df['手机号'] = df['手机号'].str.extract(r'(\d{11})')[0]  # 提取有效号码

# 分类型数据处理
df['年龄段'] = pd.cut(df['年龄'], 
                     bins=[0,18,30,50,100],
                     labels=['未成年','青年','中年','老年'])

四、电商数据清洗实战案例

4.1 原始数据样例

id: raw_data_sample
name: 原始数据示例
type: code.python
content: |-
  raw_data = [
      {"order_id": "A1001", "user_id": 101, "amount": 150.0, "date": "2023-02-30"},
      {"order_id": "A1001", "user_id": 101, "amount": -150.0, "date": "2023/02/28"},
      {"order_id": "A1002", "user_id": None, "amount": 300.0, "date": "2023-03-01"},
      {"order_id": "A1003", "user_id": 103, "amount": "二百元", "date": "2023-03-02"}
  ]

4.2 分步清洗演示

# 步骤1:加载数据
import pandas as pd
df = pd.DataFrame(raw_data)

# 步骤2:处理重复订单
print(f"清洗前数据量:{len(df)}")
df = df.drop_duplicates(subset=['order_id'], keep='last')

# 步骤3:修复日期格式
df['date'] = pd.to_datetime(df['date'], errors='coerce')
df = df[df['date'].notnull()]

# 步骤4:校验金额字段
df['amount'] = pd.to_numeric(df['amount'], errors='coerce')
df = df[(df['amount'] > 0) & (df['amount'] < 10000)]

# 步骤5:处理用户缺失
df['user_id'] = df['user_id'].fillna(0).astype(int)

print(f"清洗后有效数据:{len(df)}")
print(df)

4.3 清洗效果对比

在这里插入图片描述

五、数据清洗最佳实践

5.1 标准化检查清单

  1. 完整性检查:关键字段缺失率<5%
  2. 一致性验证:时间顺序逻辑正确
  3. 格式标准化:统一日期/数值格式
  4. 业务规则校验:符合业务逻辑约束

5.2 常见错误预防

  • 不要直接修改原始数据:始终保留原始副本
  • 建立数据血缘追踪:记录每次清洗操作
  • 自动化测试案例:验证清洗规则的准确性
# 单元测试示例
def test_phone_format():
    test_data = pd.Series(['138-1234-5678', 'abc123'])
    cleaned = test_data.str.replace(r'\D', '')
    assert cleaned[0] == '13812345678'
    assert pd.isna(cleaned[1])

工具推荐

  • 数据质量检测库:Great Expectations
  • 自动化清洗框架:PySpark
  • 可视化工具:Dataiku

通过系统化的数据清洗,可使分析结果可靠性提升40%以上。记住:垃圾数据进,垃圾结论出!清洗是数据价值挖掘的第一道防线。


若教眼底无离恨,不信人间有白头。 —辛弃疾

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/972331.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[算法学习笔记]1. 枚举与暴力

一、枚举算法 定义 枚举是基于已有知识来猜测答案的问题求解策略。即在已知可能答案的范围内&#xff0c;通过逐一尝试寻找符合条件的解。 2. 核心思想 穷举验证&#xff1a;对可能答案集合中的每一个元素进行尝试终止条件&#xff1a;找到满足条件的解&#xff0c;或遍历完…

基于Flask的广西高校舆情分析系统的设计与实现

【Flask】基于Flask的广西高校舆情分析系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统综合运用Python、Flask框架及多种数据处理与可视化工具开发&#xff0c;结合Boot…

还在为AI模型部署发愁?VSCode插件让你轻松拥有DeepSeek和近百种AI模型!

1 还在为AI模型部署发愁&#xff1f;VSCode插件让你轻松拥有DeepSeek和近百种AI模型&#xff01; 1.1 背景 DeepSeek在春节期间突然大行其道&#xff0c;欣喜国力大增的同时&#xff0c;对于普通IT工作者&#xff0c;如何才能享受这一波AI红利&#xff0c;让自己的工作更出彩呢…

sourcetree gitee 详细使用

SSH 公钥设置 | Gitee 帮助中心 先配置公钥&#xff0c;输入gitee密码完成验证 gitee仓库创建完成 打开sourcetree 如果你本地有项目&#xff08;vite &#xff09;需要 git init 在设置中完成远程仓库的添加 &#xff08;ssh ,https) 直接提交推送&#xff0c;完成后&#xf…

ios苹果手机使用AScript应用程序实现UI自动化操作,非常简单的一种方式

现在要想实现ios的ui自动化还是非常简单的&#xff0c;只需要安装AScript这个自动化工具就可以了&#xff0c;而且安卓&#xff0c;iso还有windows都支持&#xff0c;非常好用。 在ios端安装之后&#xff0c;需要使用mac电脑或者windows电脑激活一下 使用Windows电脑激活​ 激…

【触想智能】工业显示器和普通显示器的区别以及工业显示器的主要应用领域分析

在现代工业中&#xff0c;工业显示器被广泛应用于各种场景&#xff0c;从监控系统到生产控制&#xff0c;它们在实时数据显示、操作界面和信息传递方面发挥着重要作用。与普通显示器相比&#xff0c;工业显示器在耐用性、可靠性和适应特殊环境的能力上有着显著的差异。 触想工业…

HarmonyNext上传用户相册图片到服务器

图片选择就不用说了&#xff0c;直接用 无须申请权限 。 上传图片&#xff0c;步骤和android对比稍微有点复杂&#xff0c;可能是为了安全性考虑&#xff0c;需要将图片先拷贝到缓存目录下面&#xff0c;然后再上传&#xff0c;当然你也可以转成Base64&#xff0c;然后和服务…

.NET SixLabors.ImageSharp v1.0 图像实用程序控制台示例

使用 C# 控制台应用程序示例在 Windows、Linux 和 MacOS 机器上处理图像&#xff0c;包括创建散点图和直方图&#xff0c;以及根据需要旋转图像以便正确显示。 这个小型实用程序库需要将 NuGet SixLabors.ImageSharp包&#xff08;版本 1.0.4&#xff09;添加到.NET Core 3.1/ …

第1章大型互联网公司的基础架构——1.2 客户端连接机房的技术1:DNS

客户端启动时要做的第一件事情就是通过互联网与机房建立连接&#xff0c;然后用户才可以在客户端与后台服务器进行网络通信。目前在计算机网络中应用较为广泛的网络通信协议是TCP/IP&#xff0c;它的通信基础是IP地址&#xff0c;因为IP地址有如下两个主要功能。 标识设备&…

【旋转框目标检测】基于YOLO11/v8深度学习的遥感视角船只智能检测系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

Python|Windows 安装 DeepSpeed 安装方法及报错 Unable to pre-compile async_io 处理

前置文档&#xff1a;Python&#xff5c;Windows 安装 DeepSpeed 报错 Unable to pre-compile async_io 处理 直接 pip 安装 deepspeed 的报错信息 如果直接使用 pip install DeepSpeed 安装&#xff0c;会触发如下报错信息。出现后&#xff0c;需使用如下方法完成安装。 Co…

PHP支付宝--转账到支付宝账户

官方参考文档&#xff1a; ​https://opendocs.alipay.com/open/62987723_alipay.fund.trans.uni.transfer?sceneca56bca529e64125a2786703c6192d41&pathHash66064890​ 可以使用默认应用&#xff0c;也可以自建新应用&#xff0c;此处以默认应用来讲解【默认应用默认支持…

百度搜索融合 DeepSeek 满血版,开启智能搜索新篇

百度搜索融合 DeepSeek 满血版&#xff0c;开启智能搜索新篇 &#x1f680; &#x1f539; 一、百度搜索全量接入 DeepSeek &#x1f539; 百度搜索迎来重要升级&#xff0c;DeepSeek 满血版全面上线&#xff01;&#x1f389; 用户在百度 APP 搜索后&#xff0c;点击「AI」即…

【Prometheus】prometheus结合pushgateway实现脚本运行状态监控

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

【R语言】回归分析与判别分析

一、线性回归分析 1、lm()函数 lm()函数是用于拟合线性模型&#xff08;Linear Models&#xff09;的主要函数。线性模型是一种统计方法&#xff0c;用于描述一个或多个自变量&#xff08;预测变量、解释变量&#xff09;与因变量&#xff08;响应变量&#xff09;之间的关系…

黑马JS教程笔记(JavaScript教程)——JS基础

黑马pink老师-JavaScript基础语法 黑马程序员前端JavaScript入门到精通全套视频教程&#xff0c;javascript核心进阶ES6语法、API、js高级等基础知识和实战教程 文章目录 ~~黑马pink老师-JavaScript基础语法~~001-计算机编程基础002-计算机编程基础编程语言和标记语言区别 00…

CHARMM-GUI EnzyDocker: 一个基于网络的用于酶中多个反应状态的蛋白质 - 配体对接的计算平台

❝ "CHARMM-GUI EnzyDocker for Protein−Ligand Docking of Multiple Reactive States along a Reaction Coordinate in Enzymes"介绍了 CHARMM-GUI EnzyDocker&#xff0c;这是一个基于网络的计算平台&#xff0c;旨在简化和加速 EnzyDock 对接模拟的设置过程&…

《RCooper: 一个真实世界的大规模道路边协同感知数据集》学习笔记

paper&#xff1a;2403.10145 GitHub&#xff1a;AIR-THU/DAIR-RCooper: [CVPR2024] Official implementation of "RCooper: A Real-world Large-scale Dataset for Roadside Cooperative Perception" 目录 摘要 1、介绍 2、相关工作 2.1 道路边感知 2.2 协同…

【STM32】DRV8833驱动电机

1.电机如何转动 只需要给电机两个端子加一正一负的极性就会转起来了&#xff0c;但是要注意的是不要将电机两端直接接在5v和gnd之间&#xff0c;这种电机一般要提供几百毫安的电流&#xff0c;而GPIO口只能提供几毫安&#xff0c;所以我们使用一个DRV8833来驱动 DRV8833输入口…

id生成系统和mp条件简化

目录 场景引入: 有哪些生成id的方式&#xff1f; 1.UUID 2.雪花算法方案 3.数据库生成 4.美团Leaf方案 Leaf-segment数据库方案 使用场景&#xff1a; 美团leaf的docker镜像安装 在leaf.properties中配置数据库的信息 创建sl_leaf数据库脚本&#xff1a; 测试&#x…