从零开始学习SQL数据分析与数据清洗,需掌握以下核心内容:
一、SQL数据清洗基础数据清洗是数据分析的前提,直接影响结果准确性。常用方法包括缺失值填充、空格清理、数值替换、大小写转换、数据类型转换、数据分列及重复值处理。
二、核心清洗方法与SQL实现- 缺失值填充
方法:用均值、中位数或线性插值填充缺失值。
示例:计算score列均值并填充空值。
# 计算score列的均值SELECT AVG(score) AS avg_score FROM score;# 使用均值填充空值(假设均值为74)UPDATE score SET score = 74 WHERE score IS NULL;SELECT * FROM score;- 清理空格
方法:用TRIM()函数去除字符首尾空格。
示例:清理course表的Cname字段空格。
UPDATE course SET Cname = TRIM(Cname);SELECT * FROM course;- 数值替换
方法:用REPLACE()函数替换字符内容。
示例:将course表的Cname中“语文”替换为“语文-A”。
UPDATE course SET Cname = REPLACE(Cname, '语文', '语文-A');SELECT * FROM course;- 大小写转换
方法:用LOWER()(小写)或UPPER()(大写)函数转换字符。
示例:将course表的Cname转为小写。
UPDATE course SET Cname = LOWER(Cname);SELECT * FROM course;- 数据类型转换
方法:用CONVERT()函数转换数据类型。
示例:将student表的Sage字段转为日期类型。
SELECT Sname, CONVERT(Sage, DATE) AS '出生日期' FROM student;- 数据分列
方法:用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;- 重复值处理
方法:用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)表示)
四、学习建议- 实践优先:通过实际数据集练习清洗操作。
- 分步验证:每步清洗后检查数据变化(如用SELECT查询)。
- 文档记录:记录清洗规则,便于复用和复盘。
- 进阶学习:掌握窗口函数、正则表达式等高级清洗技巧。
通过系统学习上述方法,可高效完成数据清洗任务,为后续分析奠定基础。