一个大佬的课程学习笔记
课程地址:https://www.bilibili.com/video/BV1664y1D7Pa?p=11
数据清洗策略
步骤1:基于统计描述性分析
a 观察字段集中趋势:均值、众数、中位数
b 观察字段离中趋势:方差、极值、分位数
c 图表显示:盒型图、散点图
步骤2:先评估这些值的占比
步骤3:再次确定是否清洗的策略
a 删除:一般不超过千分之一,ml除外
b 填充
c 数据类型转换:如时间类型为str转换为时间
d 重命名
数据清洗方法
在保证数据的完整性、准确性、唯一性、一致性、关联性的前提之下进行清洗
整体性
a 全局常量填充:用同一个常量替换所有的缺失值。比如分类型的缺失值可以用“unknown”填充,数值型的数据可以用“0”、“空”填充。但是用全局常量填充的方法经常会造成被替换的常量值本身成为了影响模型判断的重要变量,从而影响结果的准确度。
b 中心度量填充:数据描述统计的知识中,提到数据集中趋势又呈现数据整体趋势的作用。因此,可以通过取属性的平均值、中位数、众数等指标,来填充确实值。
c 同组均值填充:这个方法需要参考又确实记录的其他属性值。将数据按照其他属性分类做Group by,统计有缺失值一列的平均数或中位数等指标,并用其替换缺失值。用这种方法时,可以参考给定一种类型下的数据的分布,若数据skewness绝对值很大,或许中位数时更好的选择。
d 最有可能值填充:这种方法其实就是用样本中的已有变量(x)来预测有缺失值的变量(Y),比如,可以用回归或者朴素贝叶斯等预测缺失值应该填写什么。但是,并不是所有都能适用此种方法。在数据表中,比如如果有缺失值的属性是主键,像是身份证号之类的一致性。
唯一性
重复值
并非所有的重复值是有问题的,通常情况下我们会看重复值是否符合(业务)特征。
准确性
空值、null值、非法字符(^*()?等)、不符合业务范围的值(商品单价、商品购买数量、性别等)
(一个值得记录的sql),关于获取数据概况的sql写法
select
elt(
INTERVAL(a.buy_mount,
1,
31,
61,
101,
10001),
'少于30',
'31-60',
'61-100',
'大于100') as buy_mount_level,
count(a.user_id) as cnt
from
trade_history as a
group by
buy_mount_level order by cnt desc;