目录
一.导读
在上篇我们讲到数据分析有以下步骤:
①数据值缺失处理
②数据描述统计
③数据异常值发现
④数据可视化
⑤分析数据样本距离
那么本篇我们介绍数据值缺失处理的简单方法。
二.数据值缺失处理的简单方法
遇事先导包:
import pandas as pd
import matplotlib.pyplot as plt
1.直接剔除法
直接剔除带有缺失值的行列,通过具体的案例我们做出如下操作:
ocean_data=pd.read_csv(r"C:\Users\asuspc\Desktop\program\data\chap2\热带大气海洋数据.csv")
na_num=pd.isna(ocean_data).sum()
先用read_csv("文件路径")对存储的数据文件进行读取并放入变量当中,然后使用isna()方法判断每个变量是否为缺失值,然后将缺失值进行求和我们则会得到各个数据项对应的缺失值。
然后我们就可以开始对其进行剔除,而指定剔除行/列的是对axis进行赋值0/1(行:0,列:1),代码如下:
oncean_data.dropna(axis=0)//剔除行的缺失值
oncean_data.dropna(axis=1)//剔除列的缺失值
剔除使用的方法是dropna()。
剔除之前的信息为:
剔除之后的信息如下:
通过info()方法我们可以得出具体信息,列也同理。
2.缺失值前后值插补法
处理信息之前我们通过可视化看一看带有大量缺失值的数据项的分布情况,同样运用到散点图:
需要注意的是散点图会自动不显示缺失值。
代码如下:
plt.figure(figsize=(10,6))
plt.scatter(ocean_data.AirTemp,ocean_data.Humidity,c='blue')
plt.grid()
plt.xlabel("AirTemp")
plt.ylabel("Humidity")
plt.show()
为了使用插补法,我们需要找到缺失值的数据项的所在位置:
naindex=pd.isna(ocean_data.AirTemp)|pd.isna(ocean_data.Humidity)
因为是对两个数据项的分布情况进行分析,其中有一个为缺失值就把其中的坐标记下,然后在图中显示。
使用缺失值前后的值对其填充,用到的方法为fillna(),method设置为ffill为对缺失值前面的值对缺失值进行填充,method设置为bfill为对缺失值后面的值对缺失值进行填充.
ocean_data3=ocean_data.ffill(axis=0)
填充完毕之后,为了体现出缺失值与非缺失值之间的关系,我们进行可视化:
plt.scatter(ocean_data3.AirTemp[~naindex],ocean_data3.Humidity[~naindex],c='blue',market='o',label='非缺失值')
plt.scatter(ocean_data3.AirTemp[naindex],ocean_data3.Humidity[naindex],c='red',market='s',label='缺失值')
plt.grid()
plt.show()
红色为填充后插入的数据对象,两个颜色对比一目了然。
3.均值填充法
AT_mean=ocean_data.AirTemp.mean()
HY_mean=ocean_data.Humidity.mean()
AT=ocean_data.AirTemp.fillna(value=AT_mean)
HY=ocean_data.Humidity.fillna(value=HY_mean)
对数据中的某一数据项进行均值计算(运用到mean()方法),然后同样适用fillna()方法,对value赋值,将求好的均值传递进去。
plt.scatter(AT[~naindex],HY[~naindex],c='blue',marker='o',label='非缺失值')
plt.scatter(AT[naindex],HY[naindex],c='red',marker='s',label='缺失值')
plt.grid()
plt.show()
三.结尾
这是对于简单的数据缺失值处理方法 ,下一篇我们介绍对于复杂情况的处理方法。