数据清洗--1. Introduction of Data Wrangling

数据清洗简介

Data Wrangling–regular expression

目录


前言

Raw data ⇒ Data Wrangling ⇒ Tidy data ⇒ Data Analysis ⇒ Data Knowledge
Data + Wrangling + Analysis = Data Product (or Knowledge)

初始被采集的数据是原始数据(Raw data),比如从传感器获得的数据,从不同网站爬取的数据,未做过处理的用户历史数据等。这些数据并不能直接进行存储或使用,因为这些数据并不足够“干净”。


一、Data Wrangling 的目的

Data Wrangling 的目的:

  1. 对数据进行处理,已达到满足后续的数据分析或储存的要求;
  2. 记录数据被处理的过程。

二、数据可能存在的问题

  • Interpretability issue (数据可理解性)
  • Data format issues (数据格式问题)
  • Inconsistent and faulty data (数据不一致或错误数据)
  • Missing values (数据缺失)
  • Outliers (离群值)
  • Duplicates (重复)

1. Interpretability issue (数据可理解性)

数据清洗--1. Introduction of Data Wrangling
只给你上图,请问这组数据是说明什么的?

由于没有attribute names,所以并不能很好的判断这组数据是关于什么的,这就是可理解性问题。

注:上图中的 “?” 并不是可理解性问题,是数据缺失。

2. Data format issues (数据格式问题)

数据清洗--1. Introduction of Data Wrangling
在处理数据之前,要确定好你的输入文件的数据格式是什么,主要包括文件的format/structure和数据的type。又因为有些时候需要合并不同数据来源的数据,但是不同的数据来源可能储存数据的格式是不一样的,比如在A来源数据储存在 JSON 格式下,B来源用的是XML,或者A来源储存相同的意义的数据用chr/string type,但在B来源用的是int/float type, 这就是格式问题。

3. Inconsistent and faulty data (数据不一致或错误数据)

数据清洗--1. Introduction of Data Wrangling
上图所示,存在的数据不一致或错误你能发现几个?

  • 姓名的格式不一致
  • 日期的格式不一致
  • 85年33岁,82年却显示34岁,同样82年,另一个显示36岁
  • 第三行,第四列的身高写成了 ’17o‘,应该是’170‘
  • 性别的格式不一致
  • 第二个电话明显是错误的
  • 最后一列2行的地址多了一个空格(千万不要小看或者忽视空格)

4. Missing values (缺失值)

数据清洗--1. Introduction of Data Wrangling
缺失值,顾名思义,就是指数据中由于各种各样原因缺失的数据。

5. Outliers (离群值)

数据清洗--1. Introduction of Data Wrangling
离群值有时可能是要去除的(如:大多数情况的数据建模),有时是需要注意的(如:异常检测)

6. Duplicates (重复)

数据清洗--1. Introduction of Data Wrangling
这里的数据重复不仅指完全一样的数据,还包括粗看有区别,但是仔细一看,其实表达的是相同的实体的重复的数据。


总结

数据清洗--1. Introduction of Data Wrangling
总体上数据清洗的步骤如山图所示:

  • 数据获取:从不同的数据来源获取数据,比如官方的API,网络爬取,自家数据来源等
  • 数据加载、提取:加载并解析不同储存形式的数据
  • 数据清洗:诊断并处理各种存在的数据问题
  • 数据归集:合并不同来源的数据,创造出一个丰富且完整的数据集
  • 数据研究:利用不同种类的描述性统计和可视化工具来提高数据质量
  • 数据丰富:通过特征生成、数据转换、数据聚合和数据缩减(缩减颗粒度)来丰富现有数据
  • 数据储存&使用:最后以各种格式存储干净的数据,便于下游分析工具访问。
上一篇:Python - Datacamp - Introduction to Matplotlib


下一篇:Introduction to Fabric.js. Part 2(介绍Fabric.js第二部分)