从零开始学SQL数据分析,SQL数据清洗

从零开始学SQL数据分析,SQL数据清洗
最新回答
张秋沁

2026-07-03 02:54:55

从零开始学习SQL数据分析与数据清洗,需掌握以下核心内容:

一、SQL数据清洗基础

数据清洗是数据分析的前提,直接影响结果准确性。常用方法包括缺失值填充、空格清理、数值替换、大小写转换、数据类型转换、数据分列及重复值处理。

二、核心清洗方法与SQL实现
  1. 缺失值填充

    方法:用均值、中位数或线性插值填充缺失值。

    示例:计算score列均值并填充空值。

# 计算score列的均值SELECT AVG(score) AS avg_score FROM score;# 使用均值填充空值(假设均值为74)UPDATE score SET score = 74 WHERE score IS NULL;SELECT * FROM score;

  1. 清理空格

    方法:用TRIM()函数去除字符首尾空格。

    示例:清理course表的Cname字段空格。

UPDATE course SET Cname = TRIM(Cname);SELECT * FROM course;

  1. 数值替换

    方法:用REPLACE()函数替换字符内容。

    示例:将course表的Cname中“语文”替换为“语文-A”。

UPDATE course SET Cname = REPLACE(Cname, '语文', '语文-A');SELECT * FROM course;

  1. 大小写转换

    方法:用LOWER()(小写)或UPPER()(大写)函数转换字符。

    示例:将course表的Cname转为小写。

UPDATE course SET Cname = LOWER(Cname);SELECT * FROM course;

  1. 数据类型转换

    方法:用CONVERT()函数转换数据类型。

    示例:将student表的Sage字段转为日期类型。

SELECT Sname, CONVERT(Sage, DATE) AS '出生日期' FROM student;

  1. 数据分列

    方法:用SUBSTRING_INDEX()函数按分隔符拆分字段。

    示例:将course表的Cname字段按“-”拆分为科目和评级。

# 分列查询SELECT SUBSTRING_INDEX(cname, '-', 1) AS '科目', SUBSTRING_INDEX(cname, '-', -1) AS '评级'FROM course;# 分列并更新原表(需先添加字段)ALTER TABLE course ADD (col1 VARCHAR(255), col2 VARCHAR(255));UPDATE course SET col1 = SUBSTRING_INDEX(cname, '-', 1), col2 = SUBSTRING_INDEX(cname, '-', -1);SELECT * FROM course;

  1. 重复值处理

    方法:用DISTINCT或GROUP BY去重。

    示例:查询course表中不重复的CId和Cname组合。

SELECT DISTINCT CId, Cname FROM course;

三、MySQL常用数据类型

掌握数据类型可避免转换错误,常见类型包括:

  • 数值类型:INT, FLOAT, DECIMAL
  • 字符串类型:CHAR, VARCHAR, TEXT
  • 日期类型:DATE, TIME, DATETIME
  • 布尔类型:BOOLEAN(MySQL中用TINYINT(1)表示)

四、学习建议
  1. 实践优先:通过实际数据集练习清洗操作。
  2. 分步验证:每步清洗后检查数据变化(如用SELECT查询)。
  3. 文档记录:记录清洗规则,便于复用和复盘。
  4. 进阶学习:掌握窗口函数、正则表达式等高级清洗技巧。

通过系统学习上述方法,可高效完成数据清洗任务,为后续分析奠定基础。