利用 MySQL 进行数据清洗

        利用 MySQL 进行数据清洗是数据预处理的重要环节,以下是常见的数据清洗操作及对应 SQL 示例:

1. 去除重复数据

使用 ROW_NUMBER() 或 GROUP BY 识别并删除重复记录。

-- 查找重复记录(以 user_id 和 email 为例)
WITH Duplicates AS (SELECT user_id, email, ROW_NUMBER() OVER (PARTITION BY email ORDER BY user_id) AS rnFROM users
)
SELECT * FROM Duplicates WHERE rn > 1;-- 删除重复记录(保留最新的一条)
DELETE FROM users
WHERE user_id NOT IN (SELECT MAX(user_id) FROM users GROUP BY email
);

2. 处理缺失值

  • 填充默认值:使用 COALESCE() 或 IFNULL()
  • 删除缺失值:使用 WHERE 过滤。
-- 填充缺失值(将 NULL 替换为默认值)
UPDATE products
SET price = COALESCE(price, 0),  -- 价格为 NULL 时填充 0category = IFNULL(category, '未知')  -- 分类为 NULL 时填充 '未知'
WHERE price IS NULL OR category IS NULL;-- 删除包含缺失值的记录
DELETE FROM orders
WHERE customer_id IS NULL;

3. 数据标准化(大小写、格式统一)

  • 转换大小写:使用 UPPER() 或 LOWER()
  • 去除空格:使用 TRIM()
  • 日期格式化:使用 STR_TO_DATE() 或 DATE_FORMAT()
-- 统一邮箱为小写
UPDATE users
SET email = LOWER(TRIM(email));-- 标准化日期格式(将 '2023-12-31' 转为 '31-12-2023')
UPDATE orders
SET order_date = DATE_FORMAT(STR_TO_DATE(order_date, '%Y-%m-%d'), '%d-%m-%Y');

4. 处理无效数据

  • 范围过滤:检查数值是否在合理区间。
  • 正则匹配:验证格式(如邮箱、手机号)。
-- 删除年龄小于 0 或大于 120 的记录
DELETE FROM users
WHERE age < 0 OR age > 120;-- 查找不符合邮箱格式的记录
SELECT * FROM users
WHERE email NOT REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$';

5. 数据类型转换

使用 CAST() 或 CONVERT() 转换字段类型。

-- 将字符串类型的价格转为数值类型
ALTER TABLE products
MODIFY price DECIMAL(10, 2) AFTER CAST(price AS DECIMAL(10, 2));

6. 合并 / 拆分字段

  • 合并字段:使用 CONCAT()
  • 拆分字段:使用 SUBSTRING() 或 SUBSTRING_INDEX()
-- 合并姓名(first_name 和 last_name)
UPDATE users
SET full_name = CONCAT(first_name, ' ', last_name);-- 拆分地址(以逗号分隔)
ALTER TABLE customers
ADD street VARCHAR(100),
ADD city VARCHAR(50);UPDATE customers
SET street = SUBSTRING_INDEX(address, ',', 1),city = SUBSTRING_INDEX(address, ',', -1);

7. 异常值处理

通过统计方法(如 Z-score)识别并处理异常值。

-- 计算平均价格和标准差
WITH Stats AS (SELECT AVG(price) AS avg_price,STDDEV(price) AS std_priceFROM products
)
-- 删除价格超过 3 个标准差的异常值
DELETE FROM products
WHERE ABS(price - (SELECT avg_price FROM Stats)) > 3 * (SELECT std_price FROM Stats);

执行建议

  1. 备份数据:清洗前先备份,避免误操作。
  2. 测试逻辑先用 SELECT 验证清洗逻辑,再执行 UPDATE 或 DELETE
  3. 分批处理:大数据量时使用 LIMIT 分批更新,避免锁表。
-- 示例:分批删除重复记录
DELETE FROM users
WHERE user_id IN (SELECT user_id FROM (SELECT user_id, ROW_NUMBER() OVER (PARTITION BY email ORDER BY user_id) AS rnFROM users) tWHERE rn > 1
)
LIMIT 1000;  -- 每次处理 1000 条

索引:

索引是数据库中用于提高查询效率的关键工具,它类似书籍的目录,可以快速定位到数据的位置。

1. 索引的作用

  • 加速查询:通过索引,数据库无需扫描全量数据,直接定位到符合条件的记录。

  • 优化排序:索引通常已排序,可避免额外的排序操作。

  • 强制唯一性:唯一索引(如主键)可防止重复数据。

2. 索引的原理

  • 数据结构:常见的索引使用 B-Tree(MySQL InnoDB)或哈希表(Memory 引擎)。

  • 存储方式:索引单独存储,包含键值和指向数据行的物理地址。

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

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

相关文章

【MySQL笔记】事务的ACID特性与隔离级别

目录1. 什么是事务&#xff1f;2. 事务的ACID特性&#xff08;重要&#xff09;3. 事务控制语法4. 隔离级别与并发问题1. 什么是事务&#xff1f; 事务&#xff08;Transaction&#xff09;是由一组SQL语句组成的逻辑单元&#xff0c;这些操作要么全部成功&#xff0c;要么全部…

Mock 数据的生成与使用全景详解

Mock 数据的生成与使用全景详解 在后端开发过程中,真实数据往往受限于业务进度、隐私保护或接口未完成等因素,无法及时获取。这时,Mock数据(模拟数据)就成为开发、测试、联调不可或缺的利器。本文将从Mock数据的意义、常用场景、主流工具、实战案例到最佳实践,带你全面掌…

HTML 标题标签

需求&#xff1a;在网页显示六级标题标签。代码&#xff1a;//需求&#xff1a;在网页显示六级标题标签。 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title></head><body><h1>一级标题&l…

(限免!!!)全国青少年信息素养大赛-算法创意实践挑战赛小学组复赛(代码版)

选择题部分在 C 中&#xff0c;以下代表布尔类型的是&#xff08;  &#xff09;选项&#xff1a;A. double B. bool C. int D. char答案&#xff1a;B解析&#xff1a;C 中布尔类型的关键字为bool&#xff0c;用于存储逻辑值true或false。执行以下程序&#xff0c;输出的…

编译器优化——LLVM IR,零基础入门

编译器优化——LLVM IR&#xff0c;零基础入门 对于大多数C开发者而言&#xff0c;我们的代码从人类可读的文本到机器可执行的二进制文件&#xff0c;中间经历的过程如同一个黑箱。我们依赖编译器&#xff08;如GCC, Clang, MSVC&#xff09;来完成这项复杂的转换。然而&#x…

react中为啥使用剪头函数

在 React 中使用箭头函数&#xff08;>&#xff09;主要有以下几个原因&#xff1a;1. 自动绑定 this传统函数的问题&#xff1a;在类组件中&#xff0c;普通函数的this指向会根据调用方式变化&#xff0c;导致在事件处理函数中无法正确访问组件实例&#xff08;this为undef…

JavaSE-多态

多态的概念在完成某个行为时&#xff0c;不同的对象在完成时会呈现出不同的状态。比如&#xff1a;动物都会吃饭&#xff0c;而猫和狗都是动物&#xff0c;猫在完成吃饭行为时吃猫粮&#xff0c;狗在完成吃饭行为时吃狗粮&#xff0c;猫和狗都会叫&#xff0c;狗在完成这个行为…

TDengine 使用最佳实践(2)

TDengine 使用最佳实践&#xff08;1&#xff09; 安装部署 目录规划 软件安装 参数配置 时钟同步 验证环境 集群部署 写入查询 连接方式 数据写入 数据查询 运维巡检 运维规范 数据库启停 状态检查 运维技巧 日常巡检 数据库升级 故障排查 故障定位 日志调试 故障反馈 关于 T…

如何通过公网IP访问部署在kubernetes中的服务?

背景说明我们有些私有化部署的项目&#xff0c;使用k8s来承载服务&#xff0c;通过ingress-nginx转发外部的请求到集群。有时候业主的域名没有申请下来&#xff0c;我们会配置临时的域名&#xff0c;测试同事配置主机hosts来完成功能验证&#xff0c;等功能验证完毕后&#xff…

Datawhale AI 夏令营2025科大讯飞AI大赛<夏令营:用AI做带货视频评论分析>

赛题题目 任务一&#xff1a;商品识别 基于视频内容识别对应的商品 【情感分析】对评论文本进行多维度情感分析&#xff0c;涵盖维度见数据说明&#xff1b; 任务二&#xff08;文本分类&#xff09;&#xff1a;从非结构化评论中提取情感倾向 评论聚类】按商品对归属指定维度的…

AI 时代的分布式多模态数据处理实践:我的 ODPS 实践之旅、思考与展望

AI 时代的分布式多模态数据处理实践&#xff1a;我的 ODPS 实践之旅、思考与展望 &#x1f31f;嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 目录 1. 什…

硬件工程师笔试面试高频考点汇总——(2025版)

目录 1 电子器件部分 1.1 电阻 1.1.1 电阻选型时一般从哪几个方面进行考虑? 1.1.2 上拉下拉电阻的作用 1.1.3 PTC热敏电阻作为电源电路保险丝的工作原理 1.1.4 如果阻抗不匹配&#xff0c;有哪些后果 1.1.5 电阻、电容和电感0402、0603和0805封装的含义 1.1.6 电阻、电…

华为HarmonyOS 5.0深度解析:跨设备算力池技术白皮书(2025全场景智慧中枢)

​​摘要​​HarmonyOS 5.0的​​跨设备算力池技术​​正在重构终端计算范式。本文首次系统性拆解其技术内核&#xff1a;通过​​异构硬件资源虚拟化​​、​​任务流图调度引擎​​、​​确定性时延网络​​三大支柱&#xff0c;实现手机、汽车、智慧屏等设备的算力动态聚合与…

ASP.NET Core 中的延迟注入:原理与实践

在软件开发中&#xff0c;依赖注入已成为构建可维护、可测试和可扩展应用程序的核心模式。ASP.NET Core 内置的依赖注入容器为我们管理服务生命周期提供了极大的便利。然而在某些特定场景下&#xff0c;我们可能不希望某个依赖项在宿主对象被创建时立即实例化&#xff0c;而是希…

PHP内存溢出问题的深度分析与系统解决方案

文章目录一、问题本质&#xff1a;什么是PHP内存溢出&#xff1f;内存管理核心原理二、高频内存溢出场景深度解析场景1&#xff1a;大数据集不当处理场景2&#xff1a;无限递归陷阱场景3&#xff1a;实体关系映射&#xff08;ORM&#xff09;的N1问题场景4&#xff1a;未及时释…

常见 HTTP 方法的成功状态码200,204,202,201

HTTP 协议中&#xff0c;操作成功后的状态码选择取决于操作类型和响应内容&#xff0c;并非所有非 GET/POST 请求都返回 204。以下是常见 HTTP 方法的成功状态码规范&#xff1a;1. GET200 OK&#xff1a;默认成功状态码&#xff0c;表示请求成功且返回了资源内容。206 Partial…

【论文阅读】Think Only When You Need with Large Hybrid-Reasoning Models

Think Only When You Need with Large Hybrid-Reasoning Models2 Large Hybrid-Reasoning Models2.1 Problem Formulation关键定义与目标核心挑战与解决方案2.2 第一阶段&#xff1a;混合微调&#xff08;Hybrid Fine-Tuning, HFT&#xff09;核心设计数据构建数据集统计优化目…

洛谷 P13014:[GESP202506 五级] 最大公因数

【题目来源】 https://www.luogu.com.cn/problem/P13014 【题目描述】 对于两个正整数 &#xff0c;他们的最大公因数记为 。对于 个正整数 &#xff0c;他们的最大公因数为&#xff1a; 给定 个正整数 以及 组询问。对于第 组询问&#xff0c;请求出 的最大公因数&…

构建应用内智能:衡石嵌入式BI如何打造“指标中台”驱动的场景化分析

在当今数据驱动的业务环境中&#xff0c;将智能分析能力深度嵌入业务应用&#xff08;如CRM、ERP、SCM、自研SaaS&#xff09;已成为刚需。然而&#xff0c;实现高性能、一致性、可治理的嵌入式分析面临巨大技术挑战。衡石科技通过其核心的指标中台&#xff08;Metric Platform…

带货视频评论洞察 Baseline 学习笔记 (Datawhale Al夏令营)

一、 项目认识背景&#xff1a;电商直播/短视频已积累大量「视频 评论」数据&#xff0c;蕴含了消费者的真实反馈。目标&#xff1a;通过「商品识别 → 情感分析 → 评论聚类」三步&#xff0c;辅助品牌洞察、网红投放评估。二、 Baseline 代码流程1. 读取和预处理video_data …