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

8月前 1139

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

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

准备知识

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

云栖社区 python DataFrame pandas class 数据存储 数据预处理 换装攻略 seaborn

作者

kissjz
TA的文章

相关文章