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

二、数据分析全流程与清洗定位
2.1 六步分析法(清洗为核心)
- 需求定义:明确业务目标(如用户流失分析)
- 数据采集:数据库查询/API获取/日志收集
- 数据清洗:本阶段耗时占比达60-70%
- 探索分析:统计描述与可视化
- 建模分析:构建预测模型
- 报告输出:制作可视化看板
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 标准化检查清单
- 完整性检查:关键字段缺失率<5%
- 一致性验证:时间顺序逻辑正确
- 格式标准化:统一日期/数值格式
- 业务规则校验:符合业务逻辑约束
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%以上。记住:垃圾数据进,垃圾结论出!清洗是数据价值挖掘的第一道防线。
若教眼底无离恨,不信人间有白头。 —辛弃疾
相关文章:
数据分析--数据清洗
一、数据清洗的重要性:数据质量决定分析成败 1.1 真实案例警示 电商平台事故:2019年某电商大促期间,因价格数据未清洗导致错误标价,产生3000万元损失医疗数据分析:未清洗的异常血压值(如300mmHgÿ…...
✨1.HTML、CSS 和 JavaScript 是什么?
✨✨ HTML、CSS 和 JavaScript 是构建网页的三大核心技术,它们相互协作,让网页呈现出丰富的内容、精美的样式和交互功能。以下为你详细介绍: 🦋1. HTML(超文本标记语言) 定义:HTML 是一种用于描…...
QT--常用对话框
文章目录 前言一、颜色对话框颜色对话框代码解析 二、文本对话框文本对话框代码解析 三、输入对话框1.整型输入对话框2.浮点数输入对话框3.条目对话框 四、提示对话框1.提问对话框2.消息对话框3.警告对话框4.关键对话框 五、进度对话框六、向导对话框总结 前言 今天介绍几种标…...
基于 Ollama 工具的 LLM 大语言模型如何部署,以 DeepSeek 14B 本地部署为例
简简单单 Online zuozuo :本心、输入输出、结果 文章目录 基于 Ollama 工具的 LLM 大语言模型如何部署,以 DeepSeek 14B 本地部署为例前言下载 Ollama实际部署所需的硬件要求设置 LLM 使用 GPU ,发挥 100% GPU 性能Ollama 大模型管理命令大模型的实际运行资源消耗基于 Ollam…...
图的最小生成树算法: Prim算法和Kruskal算法(C++)
上一节我们学习了最短路径算法, 这一节来学习最小生成树. 最小生成树(Minimum Spanning Tree, MST)算法是图论中的一种重要算法, 主要用于在加权无向图中找到一棵生成树, 使得这棵树包含图中的所有顶点, 并且所有边的权重之和最小. 这样的树被称为最小生成树. 最小生成树广泛应…...
WPS的AI助手进化跟踪(灵犀+插件)
Ver V0.0 250216: 如何给WPS安装插件用以支持其他大模型LLM V0.1 250217: WPS的灵犀AI现在是DeepSeek R1(可能是全参数671B) 前言 WPS也有内置的AI,叫灵犀,之前应是自已的LLM模型,只能说是属于“能用,有好过无”,所…...
我用AI做数据分析之数据清洗
我用AI做数据分析之数据清洗 AI与数据分析的融合效果怎样? 这里描述自己在使用AI进行数据分析(数据清洗)过程中的几个小故事: 1. 变量名的翻译 有一个项目是某医生自己收集的数据,变量名使用的是中文,分…...
一周学会Flask3 Python Web开发-request请求对象与url传参
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili request请求对象封装了从客户端发来的请求报文信息,我们可以从中获取所有数据。 request对象包含的常用属性&…...
【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析④】
ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase04 作者:车端域控测试工程师 更新日期:2025年02月17日 关键词:UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-004测试用例 用例ID测试场景验证要点参考条款预期结果TC…...
网络技术变迁:从IPv4走向IPv6
目录 前言 旧时代产物:IPv4 什么是IPv4? IPv4的工作方式 IPv4的缺点 为什么要从IPv4过渡到IPv6? 走向IPv6:新一代互联网协议 IPv6的技术特性 我们需要过渡技术 双栈(Dual Stack) 隧道技术&#…...
DeepSeek教unity------事件管理
1. 定义事件类型 定义一个枚举来表示不同类型的事件。组织和识别不同的事件。 2. 创建事件参数类 为了让事件携带数据,创建一个通用的事件参数类或者为每个事件类型创建特定的参数类。 3. 实现事件管理器 创建一个EventManager类,用于管理事件的注册…...
确保设备始终处于最佳运行状态,延长设备的使用寿命,保障系统的稳定运行的智慧地产开源了
智慧地产视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。通过计算机视觉和…...
RedisTemplate存储含有特殊字符解决
ERROR信息: 案发时间: 2025-02-18 01:01 案发现场: UserServiceImpl.java 嫌疑人: stringRedisTemplate.opsForValue().set(SystemConstants.LOGIN_CODE_PREFIX phone, code, Duration.ofMinutes(3L)); // 3分钟过期作案动机: stringRedisTemplate继承了Redistemplate 使用的…...
28、深度学习-自学之路-NLP自然语言处理-做一个完形填空,让机器学习更多的内容程序展示
import sys,random,math from collections import Counter import numpy as npnp.random.seed(1) random.seed(1) f open(reviews.txt) raw_reviews f.readlines() f.close()tokens list(map(lambda x:(x.split(" ")),raw_reviews))#wordcnt Counter() 这行代码的…...
【NLP 22、语言模型 language model】
有时候我也想听听,我在你心里,是什么样子 —— 25.1.12 一、什么是语言模型 语言是灵活的,也是有规律的 了解一门语言的人可以判断一句话是否“合理” 通俗来讲,语言模型用来评价一句话(句子可以看作是字的组合)是否“合理”或…...
刚性平衡机建模
这两个公式是动平衡机中用于描述旋转部件振动行为的动力学方程。它们分别描述了旋转部件在平移振动和扭转振动中的运动规律,用于分析不平衡量对系统的影响。以下是详细解释: 1. 第一个公式:平移振动的动力学方程 M d 2 y d t 2 2 K y 0 m 1…...
【算法】双指针(上)
目录 双指针 左右指针(对撞指针) 快慢指针 移动零 双指针解题 复写零 暴力解题 双指针解题(快慢指针) 快乐数 双指针解题(快慢指针) 盛最多水的容器 暴力解题(会超时) 双指针解题(左右指针) 有效三角形的个数 暴力解题 双指针解题(左右指针) 双指针 常见的双指…...
【Linux Redis】关于用docker拉取Redis后,让虚拟机运行起来redis,并使得其可以连接到虚拟机外的navicat。
步骤一:拉取Redis镜像 docker pull redis 这个命令会下载最新版本的Redis镜像到你的本地Docker仓库中。你也可以指定一个具体的版本号,例如docker pull redis:6.2.6,来拉取特定版本的Redis镜像。 如果拉取遇到问题请参考【Linux AnolisOS】关…...
用deepseek学大模型04-模型可视化与数据可视化
deepseek.com: pytorch可视化工具 生成神经网络图 在 PyTorch 中,可视化神经网络结构的常用工具和方法有以下几种,以下将详细介绍它们的用法: 1. TensorBoard (PyTorch 官方集成) PyTorch 通过 torch.utils.tensorboard 支持 TensorBoard&a…...
一周学会Flask3 Python Web开发-post请求与参数获取
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili app.route 装饰器默认只支持get请求。假如我们要让绑定的视图函数支持其他请求方式,我们可以在methods属性里配置…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
