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

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

 

背景

香港的贫富差距问题一直十分尖锐,最突出的体现就是收入和楼价的巨大差异。早在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二手房数据分析 啊啊啊啊 技术实现 数据获取 数据清洗 数据可视化 房价高企原因 土地 人口 政策 社会 阅读详情

相关推荐

爬虫-腾讯视频-弹幕&评论

以电视剧《当家主母》为例 网页:当家主母 第01集_1080P在线观看平台_腾讯视频 弹幕 进入浏览器的开发者模式 真实url https://mfm.video.qq.com/danmu?otype=json&callback=jQuery19109520777980786752_1637214421099&target_id=7517171629%26vid%3Dr00419n203n&session_key=0%2C0%2C0&timestamp=15.

weixin_50248555的博客 1292

python爬虫学习笔记(一)—— 爬取腾讯视频影评

       前段时间我忽然想起来,以前本科的时候总有一些公众号,能够为我们提供成绩查询、课表查询等服务。我就一直好奇它是怎么做到的,经过一番学习,原来是运用了爬虫的原理,自动登陆教务系统爬取的成绩等内容。我觉得挺好玩的,于是自己也琢磨了一段时间,今天呢,我为大家分享一个爬虫的小实例,也算是记录自己的学习过程吧。     我发现腾讯视频出了一部新的电视剧,叫做《新笑傲江湖》,也不知道好看不好看,反...

行歌 5102

Python爬虫实战,requests模块,Python实现抓取腾讯视频弹幕评论

前言 利用Python实现抓取腾讯视频弹幕,废话不多说。 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: requests模块; pandas模块 以及一些Python自带的模块。 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可。 思路分析 本文以爬取电影《革命者》为例,讲解如何爬取腾讯视频的弹幕和评论! 目标网址 https://v.qq.com/x/cover/mzc00200m72fcup.html 抓取弹幕 分析网址 依然进入浏览器的开发者工具

weixin_43649691的博客 1万+

对违规行为零容忍用大数据促资讯公开

人无信不立,业无信不兴。一直以来,中原地产都以“公开资讯,公平交易”的理念,引领行业的诚信和规范发展。中原自创立之初便认识到,只有市场信息高度透明,交易双方才能以最低的时间成本获取信息、匹配需求,从而使交易效率大大提高,实现交易双方利益的最大化。 为了实现公平交易,中...

cigang4063的博客 209

腾讯视频影评爬虫(动态网页)

极客学院的入门爬虫最后一课: 环境: win10 scrapy1.6 mongode redis py3.6 main.py from scrapy import cmdline cmdline.execute('scrapy crawl dmoz'.split()) settings.py # -*- coding: utf-8 -*- BOT_NAME = 'Comment' SPIDE...

人生苦短,我用python 851

Python爬虫| 实战爬取腾讯视频评论

作者:易某某 来源:Python进击者文章目录:一、前提条件二、分析思路三、代码编写四、结果展示一、前提条件安装了Fiddler了(用于抓包分析)谷歌或火狐浏览器如果是...

数据森麟 736

Python爬取腾讯视频评论的思路详解

这篇文章主要介绍了Python爬取腾讯视频评论功能,本文图文详解给大家提供实现思路,需要的朋友可以参考下 一、前提条件 安装了Fiddler了(用于抓包分析) 谷歌或火狐浏览器 如果是谷歌浏览器,还需要给谷歌浏览器安装一个SwitchyOmega插件,用于代理服务器 有Python的编译环境,一般选择Python3.0及以上 声明:本次爬取腾讯视频里 《最美公里》纪录片的评论。本次爬取使用的浏览器...

python爬虫教程 3569

Python爬取腾讯视频评论

目标网站:https://v.qq.com/ 需要获取的数据:某部电影的评论数据,实现自动加载。 首先可以发现腾讯视频中某个视频的评论,在下面的图片中,如果点击”查看更多评论”,网页地址并无变化,与上面提到的糗事百科中的页码变化不同。而且通过查看源代码,只能看到部分评论。即评论信息是动态加载的,那么该如何爬取多页的评论数据信息? 第一步,分析腾讯视频评论网址变化规律。点击”查看更多评...

人生苦短, 还不用Python? 3176

腾讯爬虫python_python 腾讯视频评论爬虫

>>> import urllib.request>>> import re>>> import urllib.error#防浏览器>>> headers=("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Ge...

weixin_39576751的博客 119

Python爬虫--Ajax异步抓取腾讯视频评论

在某些网站 ,当我们滑下去的时候才会显示出后面的内容就像淘宝一样,滑下去才逐渐显示其他商品这个就是采用做的然后我们现在就是要编写这样的爬虫。

余十步的博客 862

腾讯视频评论抓取脚本详细使用教程

Tampermonkey(篡改猴)是一款流行的浏览器扩展,允许用户安装和运行自定义JavaScript脚本(称为"用户脚本"),可以修改网页行为、增强功能。我们将使用它来运行评论抓取脚本。

VectorShift的博客 853

Python爬取腾讯视频的评论(1),android快手面试

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

2401_84182428的博客 1134

究极福利带你Python爬虫| 爬取腾讯视频评论

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云,作者:Python进击者 文章目录: 一、前提条件 二、分析思路 三、代码编写 四、结果展示 一、前提条件 安装了Fiddler了(用于抓包分析) 谷歌或火狐浏览器 如果是谷歌浏览器,还需要给谷歌浏览器安装一个SwitchyOmega插件,用于代理服务器 有Python的编译环境,一般选择Python3.0及以上 声明:本次爬取腾讯视频里 《最美公里》纪录片的评论。

weixin_49345590的博客 574

Python网络爬虫实战:视频网站用户评论数据采集与分析

本文详细介绍如何使用Python爬虫技术抓取视频网站用户评论数据。文章从爬虫基础原理讲起,逐步深入到高级技巧和最新技术应用,包括异步爬虫、反爬虫对策、数据存储与分析等。本文将提供完整的代码示例,帮助读者构建一个功能完整的视频评论爬虫系统,适用于毕业设计或实际数据采集项目。关键词:Python爬虫、视频评论、数据采集、异步处理、反爬虫、数据分析网络爬虫是一种自动提取网页内容的程序,它通过模拟浏览器行为,按照一定的规则自动浏览互联网并抓取所需信息。

2201_76125261的博客 558

selenium+pyquery爬取东莞新房以及二手房的信息

一.二手房 网站:安居客 工具:开发平台:pycharm,爬取工具:selenium+pyquery 主要爬取信息: town:镇名,flood:小区名称,decoration装修程度,range房屋户型,built建筑年代,area 面积,floor楼层,totalPrice总价,unitprice单价 orientation 朝向 难点:安居客最多只能爬取100页,所以分批爬取并且,如上图所示...

Swatou 511

Python实战:爬取腾讯视频弹幕,获得热播剧《繁花》140万条弹幕,并可视化分析

完整代码包含 4 个 Python 源代码,数据集包含 30 集电视剧每一集弹幕,总计约 140万条弹幕。以上就是“Python实战:爬取腾讯视频弹幕,获得热播剧《繁花》140万条弹幕,并可视化分析”的全部内容,希望对你有所帮助。​​关于Python技术储备学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!一、Python所有方向的学习路线。

Trb401012的博客 3564

【pycharm】爬取腾讯视频永夜星河每集弹幕导入MangoDB数据库中(小作业)

爬取腾讯视频永夜星河弹幕存储到mongodb数据

wang_cd01的博客 913
上一篇: Python爬取唯品会商品数据,钱包准备好了嘛!
下一篇: 家里亲戚开复印店的!让我给写一个简单的打印店计费程序!实用!
pythonlaodi
博客等级 码龄6年 286粉丝 244原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值