Kaggle数据分析入门之

您所在的位置:网站首页 酒店预定数据怎么查 Kaggle数据分析入门之

Kaggle数据分析入门之

2024-01-05 15:50| 来源: 网络整理| 查看: 265

Kaggle数据分析入门之--酒店预订需求 1.需求分析 2.数据信息查看和数据清洗 3.数据分析(数据可视化) 3.1入住率和取消数 3.2 酒店人均价格 3.3查看月度人流量 3.4餐食选择 3.5居住时长 3.6提前预定时长 4.进行各属性的分辨,哪个更重要 5.特征模型训练 6.评价特征的重要性

1.需求分析

是否可以根据之前取消的预订情况来预测酒店预订的可能性?

2.数据信息查看和数据清洗

我们使用pandas来查看数据文件,数据文件在https://www.kaggle.com/jessemostipak/hotel-booking-demand,下载一个csv文件。

import pandas as pd data = pd.read_csv('C:\\Users\\Administrator\\Desktop\\kaggle\\hotel-booking-demand\\hotel_bookings.csv') data

通过jupyter notebook查看数据信息 在这里插入图片描述

data.info() RangeIndex: 119390 entries, 0 to 119389 Data columns (total 32 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 hotel 119390 non-null object 1 is_canceled 119390 non-null int64 2 lead_time 119390 non-null int64 3 arrival_date_year 119390 non-null int64 4 arrival_date_month 119390 non-null object 5 arrival_date_week_number 119390 non-null int64 6 arrival_date_day_of_month 119390 non-null int64 7 stays_in_weekend_nights 119390 non-null int64 8 stays_in_week_nights 119390 non-null int64 9 adults 119390 non-null int64 10 children 119386 non-null float64 11 babies 119390 non-null int64 12 meal 119390 non-null object 13 country 118902 non-null object 14 market_segment 119390 non-null object 15 distribution_channel 119390 non-null object 16 is_repeated_guest 119390 non-null int64 17 previous_cancellations 119390 non-null int64 18 previous_bookings_not_canceled 119390 non-null int64 19 reserved_room_type 119390 non-null object 20 assigned_room_type 119390 non-null object 21 booking_changes 119390 non-null int64 22 deposit_type 119390 non-null object 23 agent 103050 non-null float64 24 company 6797 non-null float64 25 days_in_waiting_list 119390 non-null int64 26 customer_type 119390 non-null object 27 adr 119390 non-null float64 28 required_car_parking_spaces 119390 non-null int64 29 total_of_special_requests 119390 non-null int64 30 reservation_status 119390 non-null object 31 reservation_status_date 119390 non-null object dtypes: float64(4), int64(16), object(12) memory usage: 29.1+ MB

初步分析有32列数据,其中存在有缺失值,有contry、agent等。 接下来对缺失数据进行查看:

data.isnull().sum()[data.isnull().sum()!=0] children 4 country 488 agent 16340 company 112593 dtype: int64

其中有四项信息存在缺失值,company缺失较多,可以考虑删除,children和country、agent较少,可以考虑填充。

处理方法:

假设agent中缺失值代表未指定任何机构,即nan=0 country则直接使用其字段内众数填充 childred使用其字段内众数填充 company因缺失数值过大,且其信息较杂(单个值分布太多),所以直接删除

首先删除company列:

data_new = data.copy(deep = True) data_new.drop("company", axis=1, inplace=True)

然后对children和country、agent进行填充。 查看children和country、agent的信息

data[['children','agent','country']]

在这里插入图片描述 数据插入:

data_new["agent"].fillna(0, inplace=True) data_new["children"].fillna(data_new["children"].mode()[0], inplace=True) data_new["country"].fillna(data_new["country"].mode()[0], inplace=True)

再次查看信息:data_new.info() 在这里插入图片描述

这里还需要数据异常值的处理:为什么知道这个异常值呢,可以通过后面的计算错误得到这个东西。在后面计算人均价格的时候,如果总人数和为0的情况,则会有异常,所以需要处理异常值 需要对此数据集中异常值为那些总人数(adults+children+babies)为0的记录,同时,因为先前已指名“meal”中“SC”和“Undefined”为同一类别,因此也需要处理一下。

data_new["children"] = data_new["children"].astype(int) data_new["agent"] = data_new["agent"].astype(int) data_new["meal"].replace("Undefined", "SC", inplace=True) # 处理异常值 # 将 变量 adults + children + babies == 0 的数据删除 zero_guests = list(data_new["adults"] + data_new["children"] + data_new["babies"] == 0) # hb_new.info() data_new.drop(data_new.index[zero_guests], inplace=True) 3.数据分析(数据可视化)

因为是酒店的需求分析,那我们需要去寻找各个属性之间的关系,以及与结果之间(是否取消)的关系。 我们首先看一下入住率和取消数。

3.1入住率和取消数 fig = plt.figure() fig.set(alpha=0.2) # 设定图表颜色alpha参数 data_new.is_canceled.value_counts().plot(kind='bar')# 柱状图 plt.title(u"取消预订情况 (1为取消预订)") # 标题 plt.ylabel(u"酒店数") cancel = data_new.is_canceled.value_counts() Sum=cancel.sum() count=0 for i in cancel: # 显示百分比 plt.text(count,i+0.5, str('{:.2f}'.format(cancel[count]/Sum *100)) +'%', \ ha='center') #位置,高度,内容,居中 count= count + 1 plt.show()

在这里插入图片描述 可以看出取消率为37%,入住率为63%左右。 这只是一个基本分析,然后查看不同酒店的入住率与取消率。

rh_iscancel_count = data_new[data_new["hotel"]=="Resort Hotel"].groupby(["is_canceled"])["is_canceled"].count() ch_iscancel_count = data_new[data_new["hotel"]=="City Hotel"].groupby(["is_canceled"])["is_canceled"].count() rh_cancel_data = pd.DataFrame({ "hotel": "度假酒店", "is_canceled": rh_iscancel_count.index, "count": rh_iscancel_count.values}) ch_cancel_data = pd.DataFrame({ "hotel": "城市酒店", "is_canceled": ch_iscancel_count.index, "count": ch_iscancel_count.values}) iscancel_data = pd.concat([rh_cancel_data, ch_cancel_data], ignore_index=True) plt.figure(figsize=(12, 8)) cmap = plt.get_cmap("tab20c") outer_colors = cmap(np.arange(2)*4) inner_colors


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3