利用 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
英文地址,請注明出處:http://en.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 …