Bootstrap

阿里天池:Airbnb短租房数据集分析

1.项目介绍

数据来源:https://tianchi.aliyun.com/competition/entrance/231715/information
Python版本:3.7.1
Pycharm版本:社区版2019.2
共享,通过让渡闲置资源的使用权,在有限增加边际成本的前提下,提高了资源利用效率。随着信息的透明化,越来越多的共享发生在陌生人之间。短租,共享空间的一种模式,不论是否体验过入住陌生人的家中,你都可以从短租的数据里挖掘有趣的信息。

2.字段介绍

(一)listings表:数据为短租房源基础信息,包括房源、房东、位置、类型、价格、评论数量和可租时间等等,具体如下。

属性名 含义
id 房间编号
name 房间名称
host_id 房东编号
host_name 房东名称
neighbourhood_group 所属区域组
neighbourhood 行政区划
latitude 纬度
longitude 经度
room_type 房间类型(整套、独立房间、床位)
minimum_nights 最少住几晚
price 价格
number_of_reviews 评论数
last_review 上一次评论
reviews_per_month 平均每月评论数
calculated_host_listings_count 房间数
availability_36 一年内可租用天数

(二)reviews表:数据为短租房源的评论信息,仅包括房源 listing_id和评论日期。

属性名 含义
listing_id 被评论的短租房
date 评论日期

3.分析目的和思路

(一)目的:基于Airbnb 2019 年 4 月 17 日公开的北京地区数据,进行行政区划和短租房类型的维度拆分,对短租房供给、需求等进行探索性分析。
(二)思路
在这里插入图片描述

4.模块导入与数据读取

(一)模块导入

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from pyecharts.charts import Geo
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.charts import Line
from pyecharts.globals import ChartType
from matplotlib.pyplot import MultipleLocator

(二)数据读取

plt.rc('font', family='SimHei', size='12')
io = 'D:/PythonProject/(天池)短租数据集分析/数据集-汇总版/listings.csv'
# 数据导入
data = pd.read_csv(io)
listings_df = pd.DataFrame(data)

(三)DataFrame相关信息查看

print('记录行数为:{}'.format(len(listings_df)))
print(listings_df.count())        # 统计每一行的非NA单元数
# rint(listings_df.info())         # 列dtype
# print(listings_df.describe())   # 计算部分统计数据

如下图,发现有不少记录缺失某些字段的值。
在这里插入图片描述
如下图,发现neighbourhood列数据不统一。
在这里插入图片描述
因此,对DataFrame做如下一些调整。

# 由于neighbourhood_group的值全部一样且都是空值,将此删除
listings_df.drop('neighbourhood_group', axis=1)
# 保留neighbourhood'/'前的数据
listings_df['neighbourhood'] = listings_df['neighbourhood'].str.split('/').str[0]

5.探索性分析

(一)整体分析

1.1、价格分布

listings_df['price'].hist(bins=50, rwidth=0.98, alpha=0.8)
plt.show()

如下图,发现短租房的价格大部分在6000元以下。
在这里插入图片描述
进一步,限定价格区间。

listings_df_2000 = listings_df.loc[listings_df['price'] < 2000]
listings_df_2000['price'].hist(bins=20, rwidth=0.98, alpha=0.8)
my_x_ticks = np.arange(0, 2000, 100)
plt.xticks(my_x_ticks)
plt.show()

发现大部分房屋价格在100到700之间。因为Airbnb本来的品牌理念就是实现空闲房屋的共享使用,大部分提供的房屋都是普通型,价格过高的不会太多。
在这里插入图片描述
1.2、地理位置分布
绘制地图的话,可以使用pyecharts库。

# 数据预处理
listings_i_p = pd.DataFrame(listings_df, columns=['id', 'price'])
print(listings_i_p.head())
data_pair = []
for i in range(len(listings_df)):
    data_pair.append((listings_i_p.iloc[i][0], int(listings_i_p.iloc[i][1])))


def get_geo():
    city = '北京'
    geo = Geo()
    geo.add_schema(maptype=city, itemstyle_opts=opts.ItemStyleOpts(color="#eeeeee", border_color="#111"))
    # add_coordinate(点名称,经度,纬度) 在地图上新增坐标点
    for i in range(len(data_pair)):
        geo.add_coordinat
;