2017年11月深圳自如租房相关情况

项目说明

通过对深圳自如网站上的房源情况进行探索分析,进而了解深圳自如房租的相关情况。

探索的问题

  1. 房租的分布情况
  2. 哪种户型的房源最多
  3. 哪条地铁线附近的房租比较贵
  4. 哪个区的房租更贵
  5. 房源的面积分布情况

数据说明

  • 数据来源深圳自如网站(仅包含可出租状态的合租房源)
  • 采用集搜客工具爬取
  • house_area: 表示房间的面积
  • house_toom: 表示出租房屋的户型
  • house_price: 表示每月的房租
  • house_name: 表示房源所处的小区
  • house_located: 表示房源所处的区
  • subway_info: 表示房源附近是否有地铁站

数据清洗

数据预览

# coding: utf-8
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['Microsoft YaHei'] # 使图形能够正常显示中文
%pylab inline

df_sz_ziroom = pd.read_csv('ziroom_sz.csv') # 加载数据
df_sz_ziroom.head(2) # 预览数据
2017110415097835031332.png
df_sz_ziroom = df_sz_ziroom.drop('Unnamed: 0', axis=1) # 删掉无用的列
df_sz_ziroom.head(5) # 预览前五条数据
20171104150978359927452.png
df_sz_ziroom.tail(5) # 预览后5条数据
20171104150978361728373.png

需要清洗的字段

除了 house_room 字段外,剩下的字段都需要清洗,为了便于分析还需要新增字段。

1. house_area 字段有 "15.2 m^2" 和 "约9.5 m^2" 两种格式,需要转换成纯数字格式。

def remove_m2(area):
    '''提取 house_area 字段中的数字'''
    if str(area).split()[0].decode('utf-8')[0].isdigit(): # 若字段中无“约”直接取 split 后的列表中的第一个子元素
        area = area.split()[0]
    else:
        area = str(area).split()[0].decode('utf-8')[1:] # 若字段中有“约”则从 split 后列表中的第一个子元素的第二个位置开始取
    return float(area)
df_sz_ziroom['house_area'] = df_sz_ziroom['house_area'].apply(remove_m2)
df_sz_ziroom['house_area'].head(5) # 预览后15条数据
0    15.5
1    24.0
2    15.0
3     6.3
4     7.8
Name: house_area, dtype: float64

2. house_price 字段目前格式为 "¥1490 (每月)",要把其修改为纯数字格式

def remove_rmb(price):
    '''提取 house_price 字段中的数字'''
    return int(price.split()[1])
df_sz_ziroom['house_price'] = df_sz_ziroom['house_price'].apply(remove_rmb)
df_sz_ziroom['house_price'].head()
0    1660
1    2230
2    1830
3    1860
4    1930
Name: house_price, dtype: int64

3. house_name 字段目前的格式类似为 "桦润馨居4居室-南卧",需要把小区名字提取出来,如 "桦润馨居"

def get_house_name(name):
    '''提取 house_name 字段中的小区名字'''
    return name.decode('utf-8').split('-')[0][:-3].encode('utf-8')
df_sz_ziroom['house_name'] = df_sz_ziroom['house_name'].apply(get_house_name)
df_sz_ziroom['house_name'].head()
0       龙园山庄
1    塘朗城广场东区
2       龙园山庄
3    塘朗城广场东区
4      桃源村一期
Name: house_name, dtype: object

4. house_located 字段格式为 "[龙华区龙华中心] 4号线(龙华线)龙华" 包含所在的区和地铁两项信息,现需要把这两项信息提取并设置为两个字段
4.1 提取地铁信息

def get_subway(house_located):
    '''从 house_located 中提取地铁信息'''
    info = house_located.decode('utf-8').replace('[', ' ').replace(']', ' ').split()
    if len(info) > 1: # 判断 house_located 字段中是否包含地铁信息
        if info[1][:2].isdigit(): # 判断地铁号是否为两位数 如 11号线
            subway_info = info[1][:4].encode('utf-8') # 若地铁号为两位数,则取 split 后的列表中的第二个元素的前四位
        else:
            subway_info = info[1][:3].encode('utf-8') # 若地铁号为1位数,则取 split 后的列表中的第二个元素的前三位
    else:
        subway_info = None # 若无地铁信息则返回 None
    return subway_info
df_sz_ziroom['subway_info'] = df_sz_ziroom['house_located'].apply(get_subway) # 新建 subway 字段
df_sz_ziroom['subway_info'].head()
0    3号线
1    5号线
2    3号线
3    5号线
4    7号线
Name: subway_info, dtype: object

4.2 提取所在的区的信息

def house_located(house_located):
    '''从 house_located 中提取区信息'''
    info = house_located.decode('utf-8').replace('[', ' ').replace(']', ' ').split()
    return info[0][:3].encode('utf-8')
df_sz_ziroom['house_located'] = df_sz_ziroom['house_located'].apply(house_located)
df_sz_ziroom['house_located'].head()
0    罗湖区
1    南山区
2    罗湖区
3    南山区
4    南山区
Name: house_located, dtype: object
df_sz_ziroom.sort_values(by='house_area').head(5) # house_area 列有异常值
20171104150978371258832.png
df_sz_ziroom = df_sz_ziroom.drop(df_sz_ziroom[df_sz_ziroom['house_area']==0.1].index)
df_sz_ziroom.sort_values(by='house_area').head(5)
20171104150978380757720.png
df_sz_ziroom.to_csv('cleaned_sz_ziroom.csv') # 清洗后的数据保存为新的 csv 文件

数据探索

1 单维度分析

1.1 房租分布情况

df_sz_ziroom['house_price'].describe()
count     899.000000
mean     2068.787542
std       465.815828
min      1130.000000
25%      1760.000000
50%      1930.000000
75%      2290.000000
max      4360.000000
Name: house_price, dtype: float64
  • 最低的房租为 1130 元每月,最贵的房租为 4360 元每月,土豪专属。
  • 平均房租为 2068 元每月,75% 的房租超过 1760 元每月。

接下来看看最高房租和最低房租的是什么房子

df_sz_ziroom[df_sz_ziroom['house_price'] == 1130]
20171104150978386171585.png
df_sz_ziroom[df_sz_ziroom['house_price'] == 4360]
20171104150978390632339.png
  • 房租最低的房子位于龙岗区,龙岗区比较偏僻,且该套房源为6室1厅,房租最低也正常。
  • 房租最贵的房子位于南山区在二号线旁边,2号线经过的基本都是深圳最繁华的地带,房租这么高也正常。
def delete_spines():
    ax = plt.gca()
    ax.spines['top'].set_visible(False)
    ax.spines['left'].set_visible(False)
    ax.spines['right'].set_visible(False)

plt.style.use('seaborn-talk')
x = df_sz_ziroom['house_price']
plt.hist(x, bins=26, edgecolor='black')
new_xticks = np.linspace(1000, 4500, 15)
plt.xticks(new_xticks)
plt.xlabel("house_price rmb/month")
plt.ylabel("count")
plt.title(u"深圳自如房租直方图")
ax = plt.gca()
ax.spines['top'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.yaxis.grid(True)
plt.show()
20171104150978395343863.png

大部分的房价集中在 1625 到 2250 元每月,其中 1750 到 2000 元每月的房源最多。超过 3500 元每月的房源很少。因为本次分析的都是合租房源,看来深圳自如的房租还是比较贵。

1.2 面积分布情况

df_sz_ziroom['house_area'].describe()
count    899.000000
mean      11.462803
std        3.322627
min        5.360000
25%        9.200000
50%       11.100000
75%       13.300000
max       30.900000
Name: house_area, dtype: float64

最小面积为 5.36 m^2,最大面积为 30.9 m^2,平均面积为 11.46 m^2。看来大多数房间的面积都不是很大,真是面积又小,价格又贵。

x = df_sz_ziroom['house_area']
plt.hist(x, bins=16, edgecolor='black')
plt.xlabel('house_area $m^2$')
plt.ylabel('count')
plt.title(u'深圳自如房间面积直方图')
ax = plt.gca()
ax.spines['top'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.yaxis.grid(True)
plt.show()
20171104150978431822795.png

绝大多数房间的面积集中在 6.3 到 12.7 m^2 之间,其中 10 到 12.7 m^2 之间的房源最多。超过 20 m^2 的房源很少,租房形式真严峻。

1.3 户型分布情况

def add_text(x, y):
    for a, b in zip(x, y):
        plt.text(a, b+0.05, '%.0f' % b, ha='center', va='bottom', fontsize=15)

x = np.arange(len(df_sz_ziroom['house_room'].unique()))
y = df_sz_ziroom['house_room'].value_counts()
x_ticks = [room.decode('utf-8') for room in df_sz_ziroom['house_room'].unique()]
plt.bar(x, y)
plt.xticks(x, x_ticks)
plt.xlabel('house_room')
plt.ylabel('count')
plt.title(u'深圳自如户型分布图')
delete_spines()
add_text(x, y)
20171104150978400433286.png

户型最多的为4室1厅,其次为3室1厅,最少的为2室1厅。
户型太大,住的人太多,租客不愿意租,户型太小,自如估计赚不了多少钱,大量推出4室1厅的房源可以兼顾两方面。

1.4 区域房源分布情况

x = np.arange(len(df_sz_ziroom['house_located'].unique()))
y = df_sz_ziroom['house_located'].value_counts()
plt.bar(x, y)
x_ticks = [located.decode('utf-8') for located in df_sz_ziroom['house_located'].unique()]
plt.xticks(x, x_ticks)
plt.xlabel('house_located')
plt.ylabel('count')
plt.title(u'深圳自如房源区域分布图')
delete_spines()
add_text(x, y)
20171104150978441167949.png

罗湖区的房源最多,其次是南山区,最少的是福田区。在福田上班的话不妨去罗湖租房,房源比较多。

1.5 地铁附近房源分布图

x = np.arange(len(df_sz_ziroom['subway_info'].dropna().unique()))
y = df_sz_ziroom['subway_info'].value_counts()
plt.bar(x, y)
x_ticks = [subway.decode('utf-8') for subway in df_sz_ziroom['subway_info'].dropna().unique()]
plt.xticks(x, x_ticks)
plt.xlabel('subway_info')
plt.ylabel('count')
plt.title(u'深圳地铁附近自如房源分布图')
delete_spines()
add_text(x, y)
20171104150978444422865.png

3号线附近的房源最多,由于3号线终点和起点分别在罗湖和龙岗,在罗湖上班的话,沿着3号线租房最好,不仅房源多,而且龙岗的房租普遍比较便宜,上班地铁直达。
5号线附近房源数量排在第二位,由于5号线横跨罗湖区、南山区、宝安区,中途换乘站非常多,不论在罗湖还是南山还是宝安区,沿着5号线附近租房也是不错的选择。

1.6 小区数量分布图

x = np.arange(len(df_sz_ziroom['house_name'].value_counts().head(5).index))
y = df_sz_ziroom['house_name'].value_counts().head(5)
plt.bar(x, y)
x_ticks = [name.decode('utf-8') for name in df_sz_ziroom['house_name'].value_counts().head(5).index]
plt.xticks(x, x_ticks)
plt.xlabel('house_name')
plt.ylabel('count')
plt.title(u'深圳自如房源小区分布图')
delete_spines()
add_text(x, y)
20171104150978449858953.png

房源最多的小区为佳兆业城市广场三期,数量高达102套,其次为港铁天颂。
佳兆业城市广场三期位于华为基地附近,在华为上班去该小区租房是个不错的选择。
港铁天颂位于深圳北高铁站附近,需要经常坐高铁出差去该小区租房是个不错的选择。

2 双维度分析

2.1 面积和房租

x = df_sz_ziroom['house_price']
y = df_sz_ziroom['house_area']
fig = plt.figure()
ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2)

ax1.scatter(x, y)
ax1.set_xlabel('house_price')
ax1.set_ylabel('house_area')
ax1.set_title(u'房租面积散点图')

ax2.scatter(sqrt(x), log10(y))
ax2.set_xlabel('sqrt_house_price')
ax2.set_ylabel('log10_house_area')
ax2.set_title(u'房租面积散点图')
plt.show()
20171104150978406294026.png
  • 图1为房子的面积和房租的关系图
  • 图2为对面积和房租分别取平方根和对数的关系图
    从图2中发现面积和房租并没有呈现出明显的线性关系,并不是房间面积越大,房租越贵。

2.2 区域和房租

df_located_price = df_sz_ziroom.loc[:,['house_located', 'house_price']]
df_located_price = df_located_price.groupby('house_located')['house_price']\
                                .apply(pd.Series.reset_index, drop=True).unstack()
df_located_price.head()
20171104150978413921838.png
xs = [x[~np.isnan(x)] for x in df_located_price.values]
plt.boxplot(xs)
x_ticks = [tick.decode('utf-8') for tick in df_located_price.index]
plt.xticks(arange(1, len(xs)+1), x_ticks)
y_ticks = np.linspace(1000, 4500, 8)
plt.yticks(y_ticks)
plt.xlabel('house_located')
plt.ylabel('price')
plt.title(u'房源所在区域和房租箱线图')
plt.gca().yaxis.grid(True)
delete_spines()
plt.show()
20171104150978415732396.png

南山区的房租贵,75%的房租高于2000元每月,其箱体也最长。南山区积聚了大量互联网企业,薪资水平在深圳相对来说也非常高。
福田区的房租紧随南山区之后,龙岗区和罗湖区的房租最低。
如果在南山区工作,去宝安租房是个不错的选择,地铁方便,房租也比南山便宜。
在福田区工作,去罗湖和龙华租房是个不错的选择,地铁方便,房租也比福田便宜很多。

2.2 地铁沿线房租情况

df_subway_price = df_sz_ziroom.loc[:,['subway_info', 'house_price']]
df_subway_price.head()
df_subway_price = df_subway_price.groupby('subway_info')['house_price']\
                                .apply(pd.Series.reset_index, drop=True).unstack()
df_subway_price.head()
2017110415097841914742.png
xs = [x[~np.isnan(x)] for x in df_subway_price.values]
plt.boxplot(xs)
x_ticks = [tick.decode('utf-8') for tick in df_subway_price.index]
plt.xticks(arange(1, len(xs)+1), x_ticks)
plt.gca().yaxis.grid(True)
plt.xlabel('subway_info')
plt.ylabel('price')
plt.title(u'地铁沿线房租箱线图')
delete_spines()
plt.show()
20171104150978420919718.png

2号线沿线的房租最贵,绝大部分都超过2000元每月,2号线沿线都是比较繁华的地方,房租自然比较高。1号线和11号线沿线的房租紧随2号线其后。
3号线和5号线沿线的房租比较低。

3 多维度分析

3.1 面积,房租,区域,地铁沿线

import sys
default_stdout = sys.stdout
default_stderr = sys.stderr
reload(sys)
sys.stdout = default_stdout
sys.stderr= default_stderr
sys.setdefaultencoding('utf8')
import seaborn as sns
sns.set_style("darkgrid",{"font.sans-serif":['Microsoft YaHei']})
sns.FacetGrid(df_sz_ziroom, col='house_located', col_wrap= 3,
                        hue='subway_info',size=3, aspect=1)\
                    .map(plt.scatter, "house_area", "house_price")\
                    .add_legend()  
plt.show()
20171104150978456730936.png

2号线沿线的房子最贵,主要分布在南山区和福田区,绝大多数房租均超过2000元每月。
5号线和3号线沿线的房子主要分布在罗湖区和龙岗区,且绝大多数房价低于2000元每月。5号线沿线少量的大面积房源分布子在龙华区。
7号线和9号线沿线的房子主要分布在福田区和罗湖区,且价格大多数超过2000元每月。
4号线沿线的房子绝大部分分布在龙华区,绝大部分价格比较高的分布在福田区。
1号线和11号线沿线的房子主要分布南山区和宝安区,分布在宝安区的房租相对来说比较低。

结论

  1. 深圳自如绝大多数房租超过1700元,且面积都不大,不过结合深圳的实际租房情况和自如的服务,这个价位还是可以考虑。
  2. 南山区的房租最贵,房源数量也是第二多的,南山区也聚集了大量互联网企业,对于经常加班的互联网从业者来说在公司附近租房是个不错的选择。
  3. 龙岗区和罗湖区的房租最低,且罗湖区房源数量最多,在罗湖上班想租的近一点可以选择罗湖,考虑便宜一点的可以去龙岗区租房。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容