下载数据网站:
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之间