背景

香港的贫富差距问题一直十分尖锐,最突出的体现就是收入和楼价的巨大差异。早在60年代末香港房价就经历了暴涨,人们早已对不动产的金融属性了如指掌,全港的投资情绪一直都相当火热。即便香港当前失业率高企,经济环境较差,但购买力仍在,楼市依然坚挺。

为了更加深入了解香港房地产市场,本文用Pyhton采集了香港在售26281套二手房数据并做可视化分析,试图从数据层面理解香港楼市现状。在「菜J学Python」公众号后台联系J哥可获取本文完整代码。

九龙房源最多,港岛价格更高

香港特别行政区,下辖香港岛、九龙半岛、新界3个地区共18个分区。九龙半岛在售二手房源共8108个,占比28.62%。根据中原城市指数CCI(仅包括大型屋苑),港岛报187.66点,高于香港其他地区。

具体分区来看,香港在售二手房源集中分布在葵青区、元朗区、屯门区等地,而九龙城区、深水埗区、中西区、湾仔区、东区等地房价较高。香港在售二手房实用呎价均价为$18688/呎(折合人民币约172652元/平方米),最低实用呎价$4421/呎,最高实用呎价$96965/呎。

将军澳二手房源最多

将军澳、元朗和屯门在售二手房均超1000套,其中,将军澳以2112套二手房源居首。

九龙站二手房均价最高

九龙站、山顶/南区、贝沙湾和中半山在售二手房均价超过$3万/呎,九龙站以$37232/呎遥遥领先,远高于香港二手房整体均价。

小户型为主,2房占比超一半

从建筑面积来看,香港在售二手房普遍建面在500呎-1200呎(46-111平方米),占比高达78.52%,共计18825套。

从居室来看,香港在售二手房中,2房共计12231套,占比51.05%;3房共计7613套,占比31.76%;4房以上71套,占比仅为0.29%。

各楼龄段均有一定比例分布

从香港在售二手房楼龄来看,25-39年楼龄的二手房源最多,共7396套,占比31.31%;15-24年5939套,占比25.36%;40年以上房源也有2347套,占比10.93%。

50%以上二手房低于1000万

从香港在售二手房售价来看,$501-$1000万(约429-858万人民币)房源数量为12301套,占比51.31%。

描述性统计

相关性分析

从相关系数表和回归图来看,间隔(即居室)和楼龄都与香港二手房房价无明显的相关性。实用面积与房价具有较强的正相关性,一般来说,人们在看房子时看到的面积是建筑面积,但却不是实用面积。套内建筑面积=套内使用面积+套内墙体面积+阳台面积,而实用面积就是套内使用面积。另外,实用率与房价也无相关性,这与大部分人的感性认识存在偏差。

技术实现

本文数据来源于中原地产,网页结构相对简单。数据清洗主要用到Python的pandas库,由于内容较多,仅提供核心字段清洗代码。数据可视化主要用到Python的pyecharts库,都是一些基础图表,本公众号往期原创文章也已多次提及。

数据获取

爬虫核心代码

#将繁体转换成简体
def tradition2simple(line):return Converter('zh-hans').convert(line)
#解析网页
def get_page(page):if page <11:url = 'http://hk.centanet.com/findproperty/BLL/Result_SearchHandler.ashx?url=http%3A%2F%2Fhk.centanet.com%2Ffindproperty%2Fzh-HK%2FHome%2FSearchResult%3Fposttype%3DS%26src%3DC%26minprice%3D%26maxprice%3D%26sortcolumn%3D%26sorttype%3D%26limit%3D100%26currentpage%3D{0}'.format(page)else:url = 'http://hk.centanet.com/findproperty/BLL/Result_SearchHandler.ashx?url=http%3A%2F%2Fhk.centanet.com%2Ffindproperty%2Fzh-HK%2FHome%2FSearchResult%3Fposttype%3DS%26src%3DC%26minprice%3D%26maxprice%3D%26sortcolumn%3D%26sorttype%3D%26limit%3D-1%26currentpage%3D{0}'.format(page)req = requests.get(url, headers = headers)bs = req.json()# print(bs)ts = tradition2simple(bs['post'])# print(ts)html = etree.HTML(ts)
if __name__ == '__main__':ua = UserAgent(verify_ssl=False)headers = {"User-Agent": ua.random}for page in range(1,2624):  #共2623页get_page(page)# time.sleep(1)print("第%d页爬取完成"%page)print('-'*100)

数据预览

数据清洗

建筑面积/单价

#异常字符替换为空
df["建筑面积"] = df["建筑面积"].str.replace(",","").astype("float")
df["建面单价"] = df["建面单价"].str.replace("$","").str.replace(",","").str.replace("/呎","").astype("float")
#建筑面积和建面单价缺失值用均值填充
df = df.fillna(value={'建筑面积':df["建筑面积"].mean(),'建面单价':df["建面单价"].mean()})
12345

间隔

# 存在缺失值、换行符、非数字型、无房间数等脏数据
df["间隔"] = df["间隔"].str.replace("\r\n","").str[:1]
df = df[ ~ df['间隔'].isin(['('])]  #删除某列包含特殊字符的行
df["间隔"] = df["间隔"].str.replace("开","0").astype("float")
df = df.fillna(value={'间隔':df["间隔"].mean()})
df["间隔"] = df["间隔"].astype("int")
123456

售价

#售价单位存在万和亿,进行统一化处理
df["售价"] = (df["售价"].str.replace("$","").str.replace(",","").str[:-1].astype(float) * df['售价'].str[-1].map({"万": 1, "亿": 10000})).astype("int")
12

数据可视化

回归图

fig,axes=plt.subplots(5,1,figsize=(12,30))
sns.regplot(x='间隔',y='实用单价',data=df1,color='green',marker='*',ax=axes[0])
sns.regplot(x='楼龄',y='实用单价',data=df1,color='green',marker='*',ax=axes[1])
sns.regplot(x='实用面积',y='实用单价',data=df1,color='green',marker='*',ax=axes[2])
sns.regplot(x='建筑面积',y='实用单价',data=df1,color='green',marker='*',ax=axes[3])
sns.regplot(x='实用率',y='实用单价',data=df1,color='green',marker='*',ax=axes[4])
123456

条形图

df5 = df1.groupby('屋苑位置')['实用单价'].count()
df5 = df5.sort_values(ascending=True)
df5 = df5.tail(10)
print(df5.index.to_list())
print(df5.to_list())
c = (Bar(init_opts=opts.InitOpts(theme=ThemeType.WONDERLAND)).add_xaxis(df5.index.to_list()).add_yaxis("",df5.to_list()).reversal_axis() #X轴与y轴调换顺序.set_global_opts(title_opts=opts.TitleOpts(title="香港二手房数量TOP10",subtitle="数据来源:中原地产 \t制图:J哥",pos_left = 'left'),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=13)), #更改横坐标字体大小yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=13)), #更改纵坐标字体大小).set_series_opts(label_opts=opts.LabelOpts(font_size=16,position='right')))
c.render_notebook()
12345678910111213141516

饼图

df2 = df1.groupby('间隔')['实用单价'].count()
print(df2)
df2 = df2.sort_values(ascending=False)
regions = df2.index.to_list()
values = df2.to_list()
c = (Pie(init_opts=opts.InitOpts(theme=ThemeType.WONDERLAND)).add("", list(zip(regions,values))).set_global_opts(title_opts=opts.TitleOpts(title="香港二手房间隔分布",subtitle="数据来源:中原地产\n制图:J哥",pos_top="1%",pos_left = 'left')).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{d}%",font_size=16)))
c.render_notebook()

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

Python分析香港26281套在售二手房数据!寸土寸金啊!相关推荐

  1. Python分析香港26281套在售二手房数据

    公众号后台回复"图书",了解更多号主新书内容 作者:J哥 来源:菜J学Python 背景 香港的贫富差距问题一直十分尖锐,最突出的体现就是收入和楼价的巨大差异.早在60年代末香港房 ...

  2. Python爬取中原地产香港26281套在售二手房数据并分析

    背景 香港的贫富差距问题一直十分尖锐,最突出的体现就是收入和楼价的巨大差异.早在60年代末香港房价就经历了暴涨,人们早已对不动产的金融属性了如指掌,全港的投资情绪一直都相当火热.即便香港当前失业率高企 ...

  3. gridview ashx实现数据更新_Python分析了香港26281套在售二手房数据,结果发现

    作者:J哥 背景 香港的贫富差距问题一直十分尖锐,最突出的体现就是收入和楼价的巨大差异.早在60年代末香港房价就经历了暴涨,人们早已对不动产的金融属性了如指掌,全港的投资情绪一直都相当火热. 即便香港 ...

  4. python二手房价格预测_分析香港2万6千套在售二手房数据,1000万的居然有那么多...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于菜J学Python ,作者J哥 前言 香港的贫富差距问题一直十分尖锐 ...

  5. 分析香港2万6千套在售二手房数据,1000万的居然有那么多

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于菜J学Python ,作者J哥 前言 香港的贫富差距问题一直十分尖锐 ...

  6. 用Python分析了1982场英雄联盟数据,开局前预测游戏对局胜负!

    微信改版,加星标不迷路! 用Python分析如何打好英雄联盟? 作者:阿广 概述 前言 假设 游戏对战数据获取 分析和训练数据 游戏对战胜负预测 期望研究的问题 结论 阿广说 推荐阅读 前言 如今,只 ...

  7. 用 Python 分析了 1982 场英雄联盟数据,开局前预测游戏对局胜负!

    前言 如今,只要随便进入一个网吧,都会发现玩<英雄联盟>的人是最多的,可以这么说,<英雄联盟>已经是当之无愧的端游一哥.而在拥有如此基数玩家的<英雄联盟>,已经不仅 ...

  8. python英雄对战代码_用 Python 分析了 1982 场英雄联盟数据,开局前预测游戏对局胜负!...

    前言 如今,只要随便进入一个网吧,都会发现玩<英雄联盟>的人是最多的,可以这么说,<英雄联盟>已经是当之无愧的端游一哥.而在拥有如此基数玩家的<英雄联盟>,已经不仅 ...

  9. 深圳python多少钱信息_用Python分析深圳在售二手房数据,看看买房需要多少预算...

    白岩松曾说:"高房价正在毁掉无数年轻人的爱情,毁灭了年轻人的想象力."尤其是北上广深这类一线城市,对于一般的工薪阶层,买房更是难上加难.前不久,DT财经写了一篇文章<我只有3 ...

最新文章

  1. 496. Next Greater Element I - LeetCode
  2. 【桌面虚拟化】之五PCoIP
  3. vscode setting json_win10+letex+vscode+texlive+latex workshop+sumatrapdf
  4. SAP Spartacus lock focus Directive的工作原理示意图
  5. Collecting Bugs POJ - 2096(基础概率dp+期望模板)
  6. django-解决-修改过的模型类不能被正常迁移的解决办法
  7. Python 夺大满贯!三大编程语言榜即将全部“失守”!
  8. Atitit.biz业务系统 面向框架  面向模式---------数据映射imp
  9. Web前端课程设计-疫情解读网页
  10. 01 Python pikepdf 解锁带有密码的PDF文件
  11. Python 数据处理数据挖掘(五):线性回归
  12. java 检测点击事件控件_iCheck控件ifClicked和ifChanged事件的讨论
  13. 课程教学c语言遇到的问题,C语言教学中的几点思考
  14. PointNet 翻译:
  15. Java-- Maps
  16. 古文字识别助手与众包平台——项目博客二
  17. Games101 作业6 提高内容(SAH算法)
  18. 朝九晚五还是浪迹天涯
  19. 子线程创建Handler
  20. 如何在Controll 获取数据库数据

热门文章

  1. 微信小程序简单实现上拉触底onReachBottom数据分页请求
  2. 算法导论-9.3-3-快速排序-最坏时间O(nlgn)
  3. omnet结果分析anf文件
  4. 电子邮箱免费申请注册教程,公司企业邮箱怎么开通注册?
  5. Openssl如何生成并验证公秘钥对
  6. 新近开发了一款Android应用奶爸指南
  7. Dynamics CRM实体系列之实体讲解
  8. 企业微信标准应用服务商入门考试--2021
  9. 抖音小程序实践一:申请初始化
  10. TL431应用电路介绍