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