终于到了数据存储与预处理的最后一讲了,感觉讲得还不错!下面来看看数据的预处理吧!
准备知识
Pandas
Pandas逐渐成为了一个非常大的库,在数据处理问题方面表现优秀,是一个不可或缺的工具,Pandas中包含两个主要的数据结构:Series & DataFrame
更多请看:
- 官方文档
- Pandas速查手册中文版
Seaborn
Seaborn是基于matplotlib的绘图库,可以制作更多更美观的图形,如Example gallery中也可以看到很多关于图像的示例。这个绘图库可以很好地辅助我们对数据进行第一步的观察
更多请看:
Seaborn tutorial
格式转换
如Python记录时间的方式,不能够直接实现减运算,就需要进行转换
缺失数据、异常数据
- 忽略缺失数据
- 直接标记
- 利用平均值、最常出现值进行填充
标准化
一般在分析数据时进行操作
数据清理示例
这里还是用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 output_7_1]()
#柱状图
seaborn.distplot(users['PetalWidthCm'].dropna())
![output_8_1 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 output_9_1]()