数据挖掘之数据清洗(缺失值,异常值)

下载数据网站:
https://www.kaggle.com/c/airbnb-recruiting-new-user-bookings/data
下载最下面的文件
在这里插入图片描述
清洗工具,pandas
清洗内容:日期转换,缺失值处理,异常值处理
数据可视化:seaborn
用pandas
总结:

这是在python中的全部程序

import pandas as pd           #载入pandas
import seaborn                    #载入可视化工具
import matplotlib.pyplot as plt   #载入可视化工具

path='F:\kaggle\\train_users_2\\train_users_2.csv'           #打开文件夹
data=pd.read_csv(path)                                       #用pd.read_csv()读取文件
print(data.head())                                           #打印data前五行数据
print(data.tail())                                           #打印data后五行数据
print(data.describe())                                       #对data特征里面的数据进行一个操作
print(data.sample(20))                                   #初步查看数据长什么样子
print(data.shape)                                            #打印data的类型
print(data.loc[1:5,['age','gender']])                        #打印data中1到5行['age','gender']中的数据
print(data['date_account_created'])                  #打印某一特征

data['date_account_created']=pd.to_datetime(data['date_account_created'])  #讲object装换为datetime,可实现两日期相减
print(data.loc[0,'date_account_created']-data.loc[1,'date_account_created'])   #两个日期相减
data['timestamp_first_active']=pd.to_datetime(data['timestamp_first_active'],format='%Y%m%d%H%M%S')   #时间对应转换
print(data['timestamp_first_active'])


plt.show(seaborn.distplot(data['age'].dropna()))               #去除空缺的数据并打印
plt.show(seaborn.boxplot(data['age'].dropna()))                 #去除空缺的数据并打印
data_with_true_age = data[data["age"]<90]                  #去除年龄大于90的异常值
data_with_true_age = data_with_true_age[data_with_true_age["age"]>10]       #去除年龄小于10的异常值

plt.show(seaborn.distplot(data_with_true_age["age"]))
plt.show(seaborn.boxplot(data_with_true_age["age"]))

这是在jupyter notebook中的程序

import pandas as pd
path='F:\kaggle\\train_users_2\\train_users_2.csv'
data=pd.read_csv(path)

显示前面五行的数据

data.head()

在这里插入图片描述
显示后面五行的数据

data.tail()

在这里插入图片描述
data.describe()对文件里面是数据的特征进行处理,比如均值,标准差

data.describe()

在这里插入图片描述
#查看’date_account_created’那一维度的信息,需要将object类型转换为时间类型,方便进行时间的相减

data['date_account_created']

在这里插入图片描述
利用pd.to_datetime()实现

pd.to_datetime(data['date_account_created']) 

在这里插入图片描述
#实现两个日期的相减,发现相差了331天

data['date_account_created']=pd.to_datetime(data['date_account_created'])
data.loc[0,'date_account_created']-data.loc[1,'date_account_created']   #两个日期相减

在这里插入图片描述
将‘date_first_booking’一栏的时间也转换为标准的时间类型
在这里插入图片描述

data['timestamp_first_active']=pd.to_datetime(data['timestamp_first_active'],format='%Y%m%d%H%M%S')   #时间对应转换

转换之后的结果
在这里插入图片描述
空值处理,关于年龄这一行,我们发现有异常值,有空值,我们先把空值去掉,data[‘age’].dropna() 是空值去掉
在这里插入图片描述
用seaborn可视化,画出去掉空值的结果

import seaborn
%matplotlib inline     
seaborn.distplot(data['age'].dropna())

在这里插入图片描述
用boxplot可发现有异常点,不可能有年龄超过2000岁

seaborn.boxplot(data['age'].dropna())

在这里插入图片描述
去掉年龄大于90岁和小于10岁的样本

data_with_true_age = data[data["age"]<90]
data_with_true_age = data_with_true_age[data_with_true_age["age"]>10]
seaborn.distplot(data_with_true_age["age"])

在这里插入图片描述

seaborn.boxplot(data_with_true_age["age"])

在这里插入图片描述
可以看出大多数年龄都在25~45之间

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章