DC学院学习笔记(十一):数据预处理—数据清理

  1. 云栖社区>
  2. 博客列表>
  3. 正文

DC学院学习笔记(十一):数据预处理—数据清理

kissjz 2018-02-14 00:37:17 浏览576 评论0

摘要: 用python进行数据预处理的一些操作

终于到了数据存储与预处理的最后一讲了,感觉讲得还不错!下面来看看数据的预处理吧!

  • 格式转换
  • 缺失数据
  • 异常数据
  • 数据标准化操作

准备知识

Pandas

Pandas逐渐成为了一个非常大的库,在数据处理问题方面表现优秀,是一个不可或缺的工具,Pandas中包含两个主要的数据结构:Series & DataFrame
更多请看:

  1. 官方文档
  2. Pandas速查手册中文版

Seaborn

Seaborn是基于matplotlib的绘图库,可以制作更多更美观的图形,如Example gallery中也可以看到很多关于图像的示例。这个绘图库可以很好地辅助我们对数据进行第一步的观察
更多请看:
Seaborn tutorial

格式转换

如Python记录时间的方式,不能够直接实现减运算,就需要进行转换

  • pandas.to_datetime

缺失数据、异常数据

  • 忽略缺失数据
  • 直接标记
  • 利用平均值、最常出现值进行填充

标准化

一般在分析数据时进行操作

数据清理示例

这里还是用iris数据集举例

import pandas
users = pandas.read_csv("iris.csv")
## 读取前几条
users.head()


Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
0 1 5.1 3.5 1.4 0.2 Iris-setosa
1 2 4.9 3.0 1.4 0.2 Iris-setosa
2 3 4.7 3.2 1.3 0.2 Iris-setosa
3 4 4.6 3.1 1.5 0.2 Iris-setosa
4 5 5.0 3.6 1.4 0.2 Iris-setosa

users.tail()


Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
145 146 6.7 3.0 5.2 2.3 Iris-virginica
146 147 6.3 2.5 5.0 1.9 Iris-virginica
147 148 6.5 3.0 5.2 2.0 Iris-virginica
148 149 6.2 3.4 5.4 2.3 Iris-virginica
149 150 5.9 3.0 5.1 1.8 Iris-virginica

#查看平均值,标准差等,只针对数字的属性
users.describe()


Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm
count 150.000000 150.000000 150.000000 150.000000 150.000000
mean 75.500000 5.843333 3.054000 3.758667 1.198667
std 43.445368 0.828066 0.433594 1.764420 0.763161
min 1.000000 4.300000 2.000000 1.000000 0.100000
25% 38.250000 5.100000 2.800000 1.600000 0.300000
50% 75.500000 5.800000 3.000000 4.350000 1.300000
75% 112.750000 6.400000 3.300000 5.100000 1.800000
max 150.000000 7.900000 4.400000 6.900000 2.500000

#查看数据的属性,150条,每条有6个属性
users.shape
(150, 6)
users.loc[1:3,'SepalWidthCm']
1    3.0
2    3.2
3    3.1
Name: SepalWidthCm, dtype: float64
#去除有NaN的数据
users['SepalLengthCm'].dropna()[1:5]
1    4.9
2    4.7
3    4.6
4    5.0
Name: SepalLengthCm, dtype: float64
#用seaborn做一个简单的可视化
import seaborn
#因为我用的是jupyter notebook,所以要加上这句话
%matplotlib inline
#箱线图
seaborn.boxplot(users['PetalWidthCm'].dropna())

output_7_1

#柱状图
seaborn.distplot(users['PetalWidthCm'].dropna())

output_8_1

#异常数据处理:筛选PetalWidthCm<2及PetalWidthCm>0.5
users_new=users[users["PetalWidthCm"]<2]
users_new=users_new[users_new["PetalWidthCm"]>0.5]
#再重新看一下柱状图
seaborn.distplot(users_new["PetalWidthCm"].dropna())

output_9_1

用云栖社区APP,舒服~

【云栖快讯】直播推荐——现在预约2月28日14:00 VPN网关新品发布会直播,即可赢取SSL-VPN网关一个月免费试用,尽享安全、稳定、快捷的企业级服务!先到先得哦!  详情请点击

网友评论

kissjz
文章103篇 | 关注9
关注
阿里云机器学习是基于阿里云分布式计算引擎的一款机器学习算法平台。用户通过拖拉拽的方式可视化的... 查看详情
数据风控由阿里聚安全提供,是基于阿里大数据计算能力,通过业内领先的风险决策引擎,解决企业账号... 查看详情
自研的分布式数据库,完全兼容MySQL,性能最高提升至MySQL的6倍 查看详情
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效... 查看详情
2017阿里千余份技术干货大盘点

2017阿里千余份技术干货大盘点