45丨数据清洗:如何使用SQL对数据进行清洗?
陈旸
该思维导图由 AI 生成,仅供参考
SQL 可以帮我们进行数据处理,总的来说可以分成 OLTP 和 OLAP 两种方式。
OLTP 称之为联机事务处理,我们之前讲解的对数据进行增删改查,SQL 查询优化,事务处理等就属于 OLTP 的范畴。它对实时性要求高,需要将用户的数据有效地存储到数据库中,同时有时候针对互联网应用的需求,我们还需要设置数据库的主从架构保证数据库的高并发和高可用性。
OLAP 称之为联机分析处理,它是对已经存储在数据库中的数据进行分析,帮我们得出报表,指导业务。它对数据的实时性要求不高,但数据量往往很大,存储在数据库(数据仓库)中的数据可能还存在数据质量的问题,比如数据重复、数据中有缺失值,或者单位不统一等,因此在进行数据分析之前,首要任务就是对收集的数据进行清洗,从而保证数据质量。
对于数据分析工作来说,好的数据质量才是至关重要的,它决定了后期数据分析和挖掘的结果上限。数据挖掘模型选择得再好,也只能最大化地将数据特征挖掘出来。
高质量的数据清洗,才有高质量的数据。今天我们就来看下,如何用 SQL 对数据进行清洗。
想要进行数据清洗有怎样的准则呢?
如何使用 SQL 对数据进行清洗?
如何对清洗之后的数据进行可视化?
数据清洗的准则
我在《数据分析实战 45 讲》里专门讲到过数据清洗的原则,这里为了方便你理解,我用一个数据集实例讲一遍。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了如何使用SQL对数据进行清洗,包括数据类型定义修改、数据合法性检查、数据可视化等内容。作者通过实际案例和SQL代码示例,指导读者如何使用SQL进行数据清洗。文章还提到了使用存储过程和后端语言进行数据处理的方法,以及使用Excel自带的数据透视图进行数据可视化的操作。此外,作者还列举了三种填充数据缺失的方式,并提出了对数据缺失问题的思考。总的来说,本文通过详细的实例和技术指导,为读者提供了一份有关数据清洗的实用指南。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《SQL 必知必会》,新⼈⾸单¥68
《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-2312 - 骑行的掌柜J陈老师 我对这一节的操作全部用MySQL进行了一个实操 中间遇到一些问题 我也全部做了一个整理补充 放到了我的博客里面:https://blog.csdn.net/weixin_41013322/article/details/103616783 希望对后面学习的朋友有帮助 谢谢
作者回复: 感谢总结和分享
2019-12-1939 - ABCWPS同样可以使用,这种方式很方便.所需下载的文件我放到网盘了,地址: 链接: https://pan.baidu.com/s/1Wrq7VcypQiofKp70YaQLBA 提取码: 2avt 看了这一课,忽然想去买数据分析的课学习一下.
作者回复: 感谢 数据分析也很实用,包括Kaggle比赛的场景
2019-11-303 - JustDoDT仅对某一列缺失值处理 时序数据:线性插值 频谱数据:重采样 ……
作者回复: 不错的缺失值处理方式
2019-09-233 - 哈66老是想问一下收集过来的数据为什么需要清洗啊,能具体举一些使用场景嘛?
作者回复: 比如Titanic乘客生存预测这个例子,里面有些字段的数值是缺失的,比如Age字段,有些乘客的Age没有,而这个字段对于后续的预测是有影响的,这里就需要通过规则来把这个字段数值进行补齐,比如采用平均值的方式
2019-12-162 - Venom找不到数据集的人,这里能下,我也是刚找到。https://download.csdn.net/download/qq_44851287/11142360
作者回复: 感谢Venom的分享
2019-11-1222 - Elliothttps://www.kaggle.com/c/titanic/data 这个属于github的吗?
作者回复: 可以从kaggle上下载,也可以从github上下载 https://github.com/cystanford/Titanic_Data
2019-10-2722 - 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-232 - 海洋检查全面性修改字段类型时,直接使用Navicat的设计表格功能修改,更快,只不过不利于新手锻炼SQL代码能力,同时可视化这块,一般清洗后,直接导出,然后使用Python或者BI软件进行进一步分析可视化2019-09-235
- 完美坚持可以用 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-102
收起评论