AI带你省钱旅游!精准预测民宿房源价格!( 三 )


def string_to_int(df, column):# 字符串替换清理df[column] = df[column].str.replace("$", "")df[column] = df[column].str.replace(",", "")# 转为数值型df[column] = pd.to_numeric(df[column]).astype(int)return dfgm_df = string_to_int(gm_df, 'price')列表型字段编码像host_verificationsamenities这样的字段 , 取值为列表格式,我们对其进行编码处理(用哑变量替换) 。
# 查看列表型取值字段gm_df_copy = gm_df.copy()gm_df_copy['amenities'].head()

AI带你省钱旅游!精准预测民宿房源价格!

文章插图
gm_df_copy['host_verifications'].head()
AI带你省钱旅游!精准预测民宿房源价格!

文章插图
# 哑变量编码gm_df_copy['amenities'] = gm_df_copy['amenities'].str.replace('"', '')gm_df_copy['amenities'] = gm_df_copy['amenities'].str.replace(']', "")gm_df_copy['amenities'] = gm_df_copy['amenities'].str.replace('[', "")df_amenities = gm_df_copy['amenities'].str.get_dummies(sep = ",")gm_df_copy['host_verifications'] = gm_df_copy['host_verifications'].str.replace("'", "")gm_df_copy['host_verifications'] = gm_df_copy['host_verifications'].str.replace(']', "")gm_df_copy['host_verifications'] = gm_df_copy['host_verifications'].str.replace('[', "")df_host_ver = gm_df_copy['host_verifications'].str.get_dummies(sep = ",")编码后的结果如下所示
df_amenities.head()df_host_ver.head()
AI带你省钱旅游!精准预测民宿房源价格!

文章插图
AI带你省钱旅游!精准预测民宿房源价格!

文章插图
# 删除原始字段gm_df = gm_df.drop(['host_verifications', 'amenities'], axis=1)数据探索下一步我们要进行更全面一些的探索性数据分析 。
EDA数据分析部分涉及的工具库,大家可以参考ShowMeAI制作的工具库速查表和教程进行学习和快速使用 。
  • 数据科学工具库速查表 | Pandas 速查表
  • 图解数据分析:从入门到精通系列教程
哪些街区的房源最多?gm_df['neighbourhood_group_cleansed'].value_counts()
AI带你省钱旅游!精准预测民宿房源价格!

文章插图
bar_data = https://www.huyubaike.com/biancheng/gm_df['neighbourhood_group_cleansed'].value_counts().sort_values()# 从bar_data构建新的dataframebar_data = https://www.huyubaike.com/biancheng/pd.DataFrame(bar_data).reset_index()bar_data['size'] = bar_data['neighbourhood_group_cleansed']/gm_df['neighbourhood_group_cleansed'].count()# 排序bar_data.sort_values(by='size', ascending=False)bar_data = https://www.huyubaike.com/biancheng/bar_data.rename(columns={'index' : 'Towns', 'neighbourhood_group_cleansed' : 'number_of_listings','size':'fraction_of_total'})#绘图展示#plt.figure(figsize=(10,10));bar_data.plot(kind='barh', x ='Towns', y='fraction_of_total', figsize=(8,6))plt.title('Towns with the Most listings');plt.xlabel('Fraction of Total Listings');
AI带你省钱旅游!精准预测民宿房源价格!

文章插图
曼彻斯特镇拥有大曼彻斯特地区的大部分房源,占总房源的 53% (1849) , 其次是索尔福德,占总房源的 17% ;特拉福德,占总房源的 9% 。
大曼彻斯特地区的 Airbnb 房源价格分布gm_df['price'].mean(), gm_df['price'].min(), gm_df['price'].max(),gm_df['price'].median()# (143.47600446428572, 8, 7372, 79.0)Airbnb 房源的均价为 143 美元,中位价为 79 美元,数据集中观察到的最高价格为 7372 美元 。
# 划分价格档位区间labels = ['$0 - $100', '$100 - $200', '$200 - $300', '$300 - $400', '$400 - $500', '$500 - $1000', '$1000 - $8000']price_cuts = pd.cut(gm_df['price'], bins = [0, 100, 200, 300, 400, 500, 1000, 8000], right=True, labels= labels)# 从价格档构建dataframeprice_clusters = pd.DataFrame(price_cuts).rename(columns={'price': 'price_clusters'})# 拼接原始dataframegm_df = pd.concat([gm_df, price_clusters], axis=1)# 分布绘图def price_cluster_plot(df, column, title):plt.figure(figsize=(8,6));yx = sb.histplot(data = https://www.huyubaike.com/biancheng/df[column]);total = float(df[column].count())for p in yx.patches:width = p.get_width()height = p.get_height()yx.text(p.get_x() + p.get_width()/2.,height+5,'{:1.1f}%'.format((height/total)*100), ha='center')yx.set_title(title);plt.xticks(rotation=90)return yxprice_cluster_plot(gm_df, column='price_clusters',title="Price distribution of Airbnb Listings in the Greater Manchester Area");
AI带你省钱旅游!精准预测民宿房源价格!

文章插图
从上面的分析和可视化结果可以看出,65.4% 的总房源价格在 0-100 美元之间,而价格在 100-200 美元的房源占总房源的 23.4% 。不过我们也观察到数据分布有很明显的长尾特性,也可以把特别高价的部分视作异常值,它们可能会对我们的分析有一些影响 。

推荐阅读