数据分析--数据清洗

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

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%以上。记住:垃圾数据进,垃圾结论出!清洗是数据价值挖掘的第一道防线。


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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【进阶】微服务

微服务架构 服务架构演变过程 单体应用架构 所有的功能都在一个项目中&#xff08;现在使用的就是单体架构&#xff09; 集群架构 把一个单体项目部署多个&#xff0c;使用Nginx进行负载均衡&#xff0c;根据负载均衡策略调用后端服务 不好的地方&#xff1a;有的服务访问…

浏览器开发者工具(F12)查看请求的响应体内容显示”无法加载响应数据: No resource with given identifier found“

背景 复习在 SSM&#xff08;Spring Spring MVC MyBatis&#xff09;框架中&#xff0c;点击登录请求后返回 JSON 格式的数据&#xff0c;出现只有登录失败的请求才有响应值&#xff0c;比如&#xff1a; {success: false, message: “没有此用户”, code: 400} 而成功的请求…

Mybatisplus自定义sql

文章目录 引言流程 引言 mybatisplus最擅长的将where里面的语句给简便化&#xff0c;而不用我们自己写标签来实现条件查询 但是很多公司规范我们将sql写在mapper层中&#xff0c;不能写在service中 而且一些语句查询的不同select count(*) xxx from xxx 也难以用mp来实现 如何…

级联选择器多选动态加载

一.级联展示 注&#xff1a;因为级联选择器这里是动态加载&#xff0c;因此如果上来选中一级就需要加载出后面三级的全部数据&#xff0c;依然会很卡&#xff0c;因此&#xff0c;和产品协商把一二级多选框去掉了&#xff0c;这样也避免了你选择一级不能实现子级被全部选中的问…

MySQL-事务隔离级别

事务有四大特性&#xff08;ACID&#xff09;&#xff1a;原子性&#xff0c;一致性&#xff0c;隔离性和持久性。隔离性一般在事务并发的时候需要保证事务的隔离性&#xff0c;事务并发会出现很多问题&#xff0c;包括脏写&#xff0c;脏读&#xff0c;不可重复读&#xff0c;…

【带你 langchain 双排系列教程】2. langchain 提示词工程应用实践

一、简介 提示词工程在利用 LangChain 与大型语言模型交互中起着关键作用&#xff0c;通过精心设计提示词&#xff0c;可以引导模型生成更准确、更符合预期的输出&#xff0c;从而提升应用的效果和用户体验。 二、基本提示词调用 可以使用 LangChain 提供的 PromptTemplate 来…

git删除本地分支

一、命令方式 1、查看本地分支 git branch 2、切换到一个不删除的分支 git checkout branch_name 3、强制删除分支 git branch -D local_branch_name 二、工具方式 1、选择"Browse references"&#xff0c;右键"Delete branch"

[Computer Vision]实验四:相机标定

目录 一、实验内容 二、实验过程及结果 2.1 实验代码 2.2 实验结果及分析 一、实验内容 了解针孔照相机的相关知识&#xff0c;实现相机标定。&#xff08;可使用提供的棋盘格或自行打印&#xff09; 可视化棋盘格关键点、匹配点数&#xff08;可加ransac&#xff09;输出…

C++笔记之标准库中用于处理迭代器的`std::advance`和`std::distance`

C++笔记之标准库中用于处理迭代器的std::advance和std::distance code review! 文章目录 C++笔记之标准库中用于处理迭代器的`std::advance`和`std::distance`一.`std::advance`函数原型参数说明使用场景示例代码示例 1:移动 `std::vector` 的随机访问迭代器示例 2:移动 `st…

【C++】36.C++IO流

文章目录 1. C语言的输入与输出2. 流是什么3. CIO流3.1 C标准IO流3.2 C文件IO流 4. stringstream的简单介绍 1. C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据&#xff0c;并将值存放在变量中。pri…

【抽象代数】1.2. 半群与群

群的定义 群非空集合二元运算性质 定义1. 设 为一个非空集合&#xff0c;上有二元运算&#xff0c;满足结合律&#xff0c;则称或为一个半群。 定义2. 设 为半群&#xff0c;若元素 满足 &#xff0c;则称 为 的左幺元&#xff08;右幺元&#xff1a;&#xff09;&#…

基于ollama+deepseek R1 1.5B本地部署语音交互助手(原创、附代码)

目录 现有的一些功能记录一些过程中遇到的问题安装llama_cpp 1、安装ollama和部署deepseek R12、使用本地部署的deepseek R1模型3、语音识别4、代码实现运行演示 现有的一些功能 1、正常与人沟通&#xff0c;但受限于电脑性能&#xff0c;还存在一定延迟&#xff1b; 2、可以根…

惠普HP Color LaserJet CP1215彩色激光打印机套色不准及套色错位的解决方法

一台惠普HP Color LaserJet CP1215彩色激光打印机出现故障&#xff0c;转印带断裂&#xff0c;于是更换了转印地&#xff0c;当更换完成测试的时候发现这台惠普HP Color LaserJet CP1215彩色激光打印机打印的颜色比较淡且颜色有错位的问题&#xff0c;继续检查机器之后&#xf…

开放签电子签章工具版 2.0 正式发布,构建全场景电子签约能力、满足复杂的签章管理场景

根据近半年开源用户和市场需求反馈&#xff0c;开放签团队推出电子签章工具版2.0版本&#xff0c;主要解决复杂的签约流程集成和电子印章授权管理场景。以API接口对外提供服务和配置一套可视化后台管理系统&#xff0c;可与业务系统无缝集成&#xff0c;用户使用起来毫无“违和…

docker 安装 Rabbitmq 详解

在平常的开发工作中&#xff0c;我们经常会使用到 rabbitmq&#xff0c;rabbitmq 主要可以进行应用解耦、异步通信、流量削峰、负载均衡、消息持久化、死信队列等。比如商城系统&#xff0c;下单后&#xff0c;通过消息队列通知库存系统、积分系统、物流系统等。发送短信时通过…

零基础学yolo系列

1.目标检测算法分类 基于深度学习的主流目标检测算法根据有无候选框生成阶段&#xff0c;分为双阶段目标检 测算法和单阶段目标检测算法两类 双阶段检测模型 将检测问题划分为两个阶段&#xff0c;首先产生候选区域&#xff0c;然后对候选区域分类并对目标位置进行精修&#x…

本智慧监考系统

本智慧监考系统共分为4个部分&#xff0c;分别为&#xff1a;展示层、业务层、算法层和数据库。 本系统的展示层基于Vue.js框架和Ant Design Vue UI框架编写。用户通过浏览器访问前端界面来实现与系统的交互。 业务层是基于SpringBoot框架编写的Java后台服务器。该层负责本系…

从开发到部署:EasyRTC嵌入式视频通话SDK如何简化实时音视频通信的集成与应用

嵌入式设备和视频综合管理平台均支持B/S架构。在B/S架构下&#xff0c;传统的视频观看方式依赖于微软的OCX控件&#xff0c;然而OCX控件的使用正面临越来越多的挑战&#xff1a; 首先&#xff0c;用户需要安装浏览器插件、调整浏览器安全级别&#xff0c;并允许ActiveX控件弹出…

如何查看 Linux 服务器的 MAC 地址:深入解析与实践指南

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

RabbitMQ 3.12.2:单节点与集群部署实战指南

前言&#xff1a;在当今的分布式系统架构中&#xff0c;消息队列已经成为不可或缺的组件之一。它不仅能够实现服务之间的解耦&#xff0c;还能有效提升系统的可扩展性和可靠性。RabbitMQ 作为一款功能强大且广泛使用的开源消息中间件&#xff0c;凭借其高可用性、灵活的路由策略…