SQL 必知必会
陈旸
清华大学计算机博士
73338 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 50 讲
第一章:SQL语法基础篇 (19讲)
SQL 必知必会
15
15
1.0x
00:00/00:00
登录|注册

45丨数据清洗:如何使用SQL对数据进行清洗?

检查数据唯一性
检查数据合法性
修改字段类型
高频值填充
均值填充
删除
存储过程检查空值
统计空值个数
数据缺失值处理方式
数据清洗工具选择
数据透视表
使用MySQL For Excel插件
检查全面性
处理缺失值
检查完整性
完全合一准则
OLAP
OLTP
总结
对清洗后数据进行可视化
使用SQL进行数据清洗
数据清洗准则
数据处理方式
数据清洗

该思维导图由 AI 生成,仅供参考

SQL 可以帮我们进行数据处理,总的来说可以分成 OLTP 和 OLAP 两种方式。
OLTP 称之为联机事务处理,我们之前讲解的对数据进行增删改查,SQL 查询优化,事务处理等就属于 OLTP 的范畴。它对实时性要求高,需要将用户的数据有效地存储到数据库中,同时有时候针对互联网应用的需求,我们还需要设置数据库的主从架构保证数据库的高并发和高可用性。
OLAP 称之为联机分析处理,它是对已经存储在数据库中的数据进行分析,帮我们得出报表,指导业务。它对数据的实时性要求不高,但数据量往往很大,存储在数据库(数据仓库)中的数据可能还存在数据质量的问题,比如数据重复、数据中有缺失值,或者单位不统一等,因此在进行数据分析之前,首要任务就是对收集的数据进行清洗,从而保证数据质量。
对于数据分析工作来说,好的数据质量才是至关重要的,它决定了后期数据分析和挖掘的结果上限。数据挖掘模型选择得再好,也只能最大化地将数据特征挖掘出来。
高质量的数据清洗,才有高质量的数据。今天我们就来看下,如何用 SQL 对数据进行清洗。
想要进行数据清洗有怎样的准则呢?
如何使用 SQL 对数据进行清洗?
如何对清洗之后的数据进行可视化?

数据清洗的准则

我在《数据分析实战 45 讲》里专门讲到过数据清洗的原则,这里为了方便你理解,我用一个数据集实例讲一遍。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何使用SQL对数据进行清洗,包括数据类型定义修改、数据合法性检查、数据可视化等内容。作者通过实际案例和SQL代码示例,指导读者如何使用SQL进行数据清洗。文章还提到了使用存储过程和后端语言进行数据处理的方法,以及使用Excel自带的数据透视图进行数据可视化的操作。此外,作者还列举了三种填充数据缺失的方式,并提出了对数据缺失问题的思考。总的来说,本文通过详细的实例和技术指导,为读者提供了一份有关数据清洗的实用指南。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《SQL 必知必会》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(16)

  • 最新
  • 精选
  • JustDoDT
    # Mac只能用Python了 import pandas as pd import matplotlib.pyplot as plt # 读入清洗好的数据 df = pd.read_csv('./titanic_train.csv') # 数据透视表用到的数据 df_temp df_temp = df[['Embarked', 'Survived']] # 生成数据透视表 ## 方法1 table = pd.pivot_table(df_temp, index=['Embarked'], columns=['Survived'], aggfunc=len) table = pd.pivot_table(df_temp, index=['Embarked'], columns=['Survived'], aggfunc=len) ## 方法2 数据交叉表 table = pd.crosstab(df.Embarked, df.Survived) # 画图 table.plot(kind='bar') plt.show() ----------------分割线 上面是code------------------ talbe # 输出结果 Survived 0 1 Embarked C 75 93 Q 47 30 S 427 219

    作者回复: Godo Job

    2019-09-23
    12
  • 骑行的掌柜J
    陈老师 我对这一节的操作全部用MySQL进行了一个实操 中间遇到一些问题 我也全部做了一个整理补充 放到了我的博客里面:https://blog.csdn.net/weixin_41013322/article/details/103616783 希望对后面学习的朋友有帮助 谢谢

    作者回复: 感谢总结和分享

    2019-12-19
    3
    9
  • ABC
    WPS同样可以使用,这种方式很方便.所需下载的文件我放到网盘了,地址: 链接: https://pan.baidu.com/s/1Wrq7VcypQiofKp70YaQLBA 提取码: 2avt 看了这一课,忽然想去买数据分析的课学习一下.

    作者回复: 感谢 数据分析也很实用,包括Kaggle比赛的场景

    2019-11-30
    3
  • JustDoDT
    仅对某一列缺失值处理 时序数据:线性插值 频谱数据:重采样 ……

    作者回复: 不错的缺失值处理方式

    2019-09-23
    3
  • 哈66
    老是想问一下收集过来的数据为什么需要清洗啊,能具体举一些使用场景嘛?

    作者回复: 比如Titanic乘客生存预测这个例子,里面有些字段的数值是缺失的,比如Age字段,有些乘客的Age没有,而这个字段对于后续的预测是有影响的,这里就需要通过规则来把这个字段数值进行补齐,比如采用平均值的方式

    2019-12-16
    2
  • Venom
    找不到数据集的人,这里能下,我也是刚找到。https://download.csdn.net/download/qq_44851287/11142360

    作者回复: 感谢Venom的分享

    2019-11-12
    2
    2
  • Elliot
    https://www.kaggle.com/c/titanic/data 这个属于github的吗?

    作者回复: 可以从kaggle上下载,也可以从github上下载 https://github.com/cystanford/Titanic_Data

    2019-10-27
    2
    2
  • JustDoDT
    我的Python代码github地址 https://github.com/LearningChanging/sql_must_konw/tree/master/45-%E6%95%B0%E6%8D%AE%E6%B8%85%E6%B4%97%EF%BC%9A%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8SQL%E5%AF%B9%E6%95%B0%E6%8D%AE%E8%BF%9B%E8%A1%8C%E6%B8%85%E6%B4%97%EF%BC%9F

    作者回复: 加油 感谢分享

    2019-09-23
    2
  • 海洋
    检查全面性修改字段类型时,直接使用Navicat的设计表格功能修改,更快,只不过不利于新手锻炼SQL代码能力,同时可视化这块,一般清洗后,直接导出,然后使用Python或者BI软件进行进一步分析可视化
    2019-09-23
    5
  • 完美坚持
    可以用 LOAD DATA 导入,但是要注意,在默认的严格模式下,如果设置 age 列为 numeric 的类型,将会报错无法读取,原因是空字符段无法读取。 即使调整为非严格模式读取成功,Age 和 cabin 空的部分,本来该是NULL,但是在SQL读取后,分别是 0 和 空字符串,并非NULL。 先创建表格: CREATE TABLE titanic_train( passenger_id INT(3) PRIMARY KEY, survived INT(1), pcalss INT(1), name VARCHAR(255), sex VARCHAR(6), age DECIMAL(4,2), sibsp INT(1), parch INT(1), ticket VARCHAR(20), fare DECIMAL(7,4), cabin VARCHAR(5), embarked CHAR(1) ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; 再导入数据: LOAD DATA INFILE '文件位置/train.csv' INTO TABLE titanic_train FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES (passenger_id, survived, pcalss, name, sex, @age, sibsp, parch, ticket, fare, @cabin, embarked) SET age = NULLIF(@age,''), cabin = NULLIF(@cabin,'');
    2021-06-10
    2
收起评论
显示
设置
留言
16
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部