研赛专题 | 数据清洗7步骤

🍉 本文所含相关数据及代码已放入github中Data Cleaning中。

数据清洗是整个数据分析的第一步,这个工作甚至会占整个数据分析流程80%左右的时间。

1 数据预处理

1.1 部署环境,导入分析包和数据

read.csv()的参数:

  • encoding:ISO-8859-1默认系统编码,utf-8中文编码

1.2 尝试去理解这份数据集

可以通过对数据集提问的方式来判断这份数据能不能满足我们的问题。例如,数据集多少数据?包含什么字段?字段格式是什么?字段分别代表什么意义?字段之间的关系是什么?可以用做什么分析?有没有缺失值?多不多?现有数据有没有脏数据(注意人工输入的数据,经常会出现名称写错,多输入空格等情况?)

本文数据为加拿大各地天气的历史数据(01011987-12311987),以下是数据集介绍:
数据集介绍
含有的字段为:
在这里插入图片描述

1.3 结合代码看数据

1.1 查看行列数

注意,shape显示的列数不包含标题行。

2 检查缺失数据检查缺失数据
通过运行结果可以看到:
① 以下数据完全缺失(10个):
Spd of Max Gust Flag、Max Temp Flag、Cool Deg Days Flag、Heat Deg Days Flag、Mean Temp Flag、Min Temp Flag、Dir of Max Gust (10s deg)、Data Quality、Dir of Max Gust Flag、Spd of Max Gust (km/h)
② 以下数据几乎完全缺失(4个):
Total Snow Flag、Snow on Grnd Flag、Total Precip Flag、Total Rain Flag
③ 以下数据缺失近半(9个):
Max Temp (°C)、Min Temp (°C)、Mean Temp (°C)、Heat Deg Days (°C)、Cool Deg Days (°C)、Total Rain (mm)、Total Snow (cm)、Total Precip (mm)、Snow on Grnd (cm)
④ 以下数据无缺失(4个):
Date/Time、Year、Month、Day

对于第①、②中字段的数据,需要去掉,对于③中字段的数据,可以适当采用插值拟合。

本节summary

根据第一步数据预处理后,可得知该数据集有以下问题需要处理:
1)调整数据类型:由于一开始用到了str来导入,后期再更换格式,需要调整数据类型
2)修改列名:某些字段名称不易理解,需要修改
3)选择部分子集:部分列在数据分析中不需要用到
4)可能存在逻辑问题需要筛选:比如年、月、日为负
5)格式一致化:某些数据描述可能存在标点符号掺杂/大小写不一致/空格重复出现等问题
6)消灭空值:某些字段为NaN值,需要去掉

2 调整数据类型

2.2 字符串转换为日期

符号含义例子
%y两位数的年份表示00-99
%Y四位数的年份表示000-9999
%m月份01-12
%d月内中的一天0-31
%H24小时小时数0-23
%I12小时制小时数01-12
%M分钟数00-59
%S00-59

本节summary

修改后
修改了部分数据类型,再次运行查看数据类型代码,得到如上结果。

3 修改列名

为了引用方便,我们把原文件中的Max Temp (°C)(Python中为Max Temp (°C))改为Max Temp。这很合理,因为我们已经明确每个量的单位,在引用时就可去掉。

4 选择部分子集

这是一个27列*365行的数据集。由1.3可知有14个字段的数据缺几乎完全缺失。现在我们选择一些子集。

5 筛选逻辑问题

例如,这里字段Year中的数据应该都大于0,如不满足条件可以筛出。

6 格式一致化

字符串修改方法str().

后缀含义
title()首字母大写
upper()全大写
lower()全小写
strip()去除头尾字符、空白符(包括换行\n、回车\r、制表符\t、空格’ ')
lstrip()去除开头字符、空白符
rstrip()去除结尾字符、空白符

7 处理缺失值

7.1 去除缺失值

Python缺失值有3种:
1)Python内置的None值(数据类型)
2)Pandas中,将缺失值表示为NA(Not Available)
3)对于数值数据,pandas使用浮点值NaN(Not A Number)表示缺失数据

7.2 填充缺失值

1)用默认值填充
2)用同一指标的计算结果(均值、中位数、众数等)填充
3)用相邻值填充
4)以不同指标的计算结果填充


参考资料

  1. 【知乎】 7步搞定数据清洗 - Python数据清洗指南
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一颗斯特拉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值