數據挖掘之數據清洗(缺失值,異常值)

下載數據網站:
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之間

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