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

ebde14e3-f41f-eb11-8da9-e4434bdf6706.png

作者:J哥

背景

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

ecde14e3-f41f-eb11-8da9-e4434bdf6706.png

即便香港当前失业率高企,经济环境较差,但购买力仍在,楼市依然坚挺。

eede14e3-f41f-eb11-8da9-e4434bdf6706.png

为了更加深入了解香港房地产市场,本文用Pyhton采集了香港在售26281套二手房数据并做可视化分析,试图从数据层面理解香港楼市现状。

具体代码详解见本文后半段,数据分析代码和数据集可在公众号【凹凸数据】后台回复「香港」即可获取。

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

efde14e3-f41f-eb11-8da9-e4434bdf6706.png

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

f0de14e3-f41f-eb11-8da9-e4434bdf6706.png

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

将军澳二手房源最多

f3de14e3-f41f-eb11-8da9-e4434bdf6706.png

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

九龙站二手房均价最高

f4de14e3-f41f-eb11-8da9-e4434bdf6706.png

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

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

f5de14e3-f41f-eb11-8da9-e4434bdf6706.png

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

f6de14e3-f41f-eb11-8da9-e4434bdf6706.png

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

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

f9de14e3-f41f-eb11-8da9-e4434bdf6706.png

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

50%以上二手房低于1000万

fbde14e3-f41f-eb11-8da9-e4434bdf6706.png

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

描述性统计

fdde14e3-f41f-eb11-8da9-e4434bdf6706.png

相关性分析

ffde14e3-f41f-eb11-8da9-e4434bdf6706.png
00df14e3-f41f-eb11-8da9-e4434bdf6706.png
04df14e3-f41f-eb11-8da9-e4434bdf6706.png
08df14e3-f41f-eb11-8da9-e4434bdf6706.png

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

技术实现

本文数据来源于中原地产,网页结构相对简单。数据清洗主要用到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)

数据预览

09df14e3-f41f-eb11-8da9-e4434bdf6706.png

数据清洗

建筑面积/单价

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

间隔

# 存在缺失值、换行符、非数字型、无房间数等脏数据
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")

售价

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

数据可视化

回归图

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])

条形图

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()

饼图

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()

凹凸福利

推荐语?:《Python数据可视化:基于Bokeh的可视化绘图》这是一本适合零基础读者快速入门并掌握Bokeh的实战指南,作者是Bokeh的先驱用户和布道者,实践经验丰富。本书从图形绘制、数据动态展示、Web交互等维度全面讲解Bokeh功能和使用,不涉及复杂的数据处理和算法,包含大量实战案例。点击下图可看详情/购买!?

0ddf14e3-f41f-eb11-8da9-e4434bdf6706.jpeg

感谢机械工业出版社华章公司的支持!「凹凸数据」300积分兑换?!当当限时购书优惠码: HSMQ9J,自营100-20FWJY6Q,自营49-20(限新客,换个手机号即可)以上优惠券均可叠加满100-50活动

0edf14e3-f41f-eb11-8da9-e4434bdf6706.gif0fdf14e3-f41f-eb11-8da9-e4434bdf6706.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340370.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性单链表存储结构c语言代码,单链表定义-(线性表的链表存储结构)

线性表分为:顺序存储结构和连存储结构顺序存储结构的优点:1.空间利用率高,几乎不需要额外的空间开销.2.数据的逻辑结构和物理结构完全一致.3.结点地址计算的时间和线性表的规模大小无关.4.可以用一维数组实现存储.但是有两个致命的缺点:1.顺序存储结构的存储空间是静态分配,必须…

idea 自动生成mybaits_怎么让idea自动创建mybatis配置文件

已采纳一、在pom.xml中添加plugin其中generatorConfig.xml的位置&#xff0c;大家根据实际情况自行调整二、generatorConfig.xml配置文件1 <?xml version"1.0" encoding"UTF-8"?>2 /p>3 PUBLIC "-//mybatis.org//DTD MyBatis Generator Co…

奇奇seo优化软件_西藏seo关键词优化软件

西藏seoxaa0c1关键词优化软件&#xff0c;网站在建立时搜索引擎是较为完善的基本上是不太需要长期进行优化的&#xff0c;但是近几年搜索引擎优化的频率开始增加&#xff0c;这让人有些好奇&#xff0c;搜索引擎优化的目的是什么&#xff1f;为什么受企业欢迎呢&#xff1f;网站…

c语言出现源文件未编译,dev运行C语言出问题

dev运行时出现源文件未编译的情况是什么原因&#xff0c;应该怎么样解决呢#include int main(){int day,month,year,sum,leap;printf("\n请输入年、月、日&#xff0c;格式为&#xff1a;年,月,日(2015,12,10)\n");scanf("%d,%d,%d",&year,&month,…

学习理发去哪里_学习美发去哪里学

于是你会发现&#xff0c;和师傅学的这条路走不通&#xff0c;只是学了些二把刀的技术&#xff0c;混混小店还行&#xff0c;大店那更是遥不可及的事情。这次你终于下定决心&#xff0c;准备到学校去学学看&#xff0c;可是真正要学的时候你才发现&#xff0c;选择学校比去美发…

lucene自动补全_使用自动机的Lucene新的邻近查询

lucene自动补全最简单的Apache Lucene查询TermQuery匹配包含指定术语的任何文档&#xff0c;无论该术语出现在每个文档中的何处 。 使用BooleanQuery可以将多个TermQuery组合在一起&#xff0c;并完全控制哪些术语是可选的&#xff08; SHOULD &#xff09;和哪些是必需的&…

npm install 报错 汇总_2020年特岗教师招聘征集志愿人员资格复审、面试公告汇总...

原标题&#xff1a;2020年特岗教师招聘征集志愿人员资格复审、面试公告汇总昨天晚上安徽省2020年特岗教师招聘空缺计划征集志愿拟参加面试人员名单已经公布啦&#xff0c;接下来陆续就是资格复审和面试啦小可爱们一点要关注各地复审时间啊2020年特岗教师招聘征集志愿人员资格复…

用c语言计算sin x 的值,用泰勒公式求sin(x)的近似值

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #define PI 3.1415927double FACT(double x);double fact(int n);int main(){int n,i,k,flag;double x,sin,temp,index;while(scanf("%lf%d",&x,&n)!EOF){FACT(x);flag1; index0.1; tempx; si…

pb 调用虹软_python调用虹软2.0

1 from ctypes import *2 #人脸框3 class MRECT(Structure):4 _fields_[(uleft1,c_int32),(utop1,c_int32),(uright1,c_int32),(ubottom1,c_int32)]5 #版本信息 版本号,构建日期,版权说明6 class ASF_VERSION(Structure):7 _fields_[(Version,c_char_p),(BuildDate,c_char_p),(…

使用Java和JSF构建一个简单的CRUD应用

使用Okta的身份管理平台轻松部署您的应用程序 使用Okta的API在几分钟之内即可对任何应用程序中的用户进行身份验证&#xff0c;管理和保护。 今天尝试Okta。 JavaServer Faces&#xff08;JSF&#xff09;是用于构建Web应用程序的Java框架&#xff0c;其中心是作为用户界面构建…

ftp 传输速度_ftp上传工具下载,8款优秀的ftp上传工具下载软件

FTP上传工具现在有很多种&#xff0c;而且各有各的特点&#xff0c;至于FTP上传工具哪个好用呢&#xff1f;小编认为萝卜白菜各有所爱&#xff0c;看个人喜好&#xff0c;还结合服务器和各种功能方面的需求。小编用的就是iis7服务器管理工具&#xff0c;比较方便而且功能不错&a…

c语言实践教程实验题答案,C语言课后实验教程习题答案

第5章以后的答案第五章答案-1-1. 【答案】&#xff1a; (1) m1 n2 (2) m2 n3 (3) a>0 并且a2. 【答案】&#xff1a;(2)for (i0;i<10;i) {……} 3. 【答案】&#xff1a;32 4. 【答案】&#xff1a; main() {char x ;int y;printf("please input :");scanf(&qu…

t分布 u分布 卡方分布_中心极限定理|z分布|t分布|卡方分布

生物统计学抽样分布&#xff1a;n个样本会得到n个统计量&#xff0c;将这n个统计量作为总体&#xff0c;该总体的分布即是抽样分布根据辛钦大数定律&#xff0c;从一个非正态分布的总体中抽取的含量主n的样本&#xff0c;当n充分大时&#xff0c;样本平均数渐近服从正态分布。因…

java ee打印功能_Java EE:异步构造和功能

java ee打印功能介绍 Java EE具有许多API和构造以支持异步执行。 从可伸缩性和性能的角度来看&#xff0c;这是至关重要的。 让我们假设2个模块相互交互。 当模块A &#xff08;发送方&#xff09;以同步方式向模块B &#xff08;接收方&#xff09;发送消息时&#xff0c;通信…

驱动备份工具哪个好_大庆seo排名优化推广公司工具哪个好

工具哪个好g81915seo排名优化推广公司大庆,网站成立时&#xff0c;搜索引擎比较完善&#xff0c;基本上不需要长期优化。然而&#xff0c;近年来&#xff0c;搜索引擎优化的频率开始增加&#xff0c;这让人们有点好奇。搜索引擎优化的目的是什么&#xff1f;为什么会受到企业的…

c语言动画原理,动画详解十大经典排序算法(C语言版)

排序算法是程序员必备的基础知识&#xff0c;弄明白它们的原理和实现很有必要。本文中将通过非常细节的动画展示出算法的原理&#xff0c;配合代码更容易理解。概述由于待排序的元素数量不同&#xff0c;使得排序过程中涉及的存储器不同&#xff0c;可将排序方法分为两类&#…

rust如何改睡袋_腐蚀rust怎么做睡袋 | 手游网游页游攻略大全

发布时间&#xff1a;2016-05-07腐蚀是一款FPS僵尸类生存游戏,这款游戏中玩家可以体验到非常自由的游戏方式,玩家需要寻找生存的资源,同时也需要及时预防僵尸和其他不怀还以的玩家的入侵,下面是新手全面攻略分享. 新手全面攻略玩法详解 [Rust游戏介绍] ...标签&#xff1a;游戏…

测量时间:从Java到内核再到

问题陈述 当您深入研究时&#xff0c;即使是最基本的问题也会变得很有趣。 今天&#xff0c;我想深入研究一下Java时间。 我们将从Java API的最基础知识开始&#xff0c;然后逐步降低堆栈&#xff1a;通过OpenJDK源代码glibc一直到Linux内核。 我们将研究各种环境下的性能开销&…

小程序 const moment = require('moment')_C++大作业-XXX管理程序

理工科大一往往会学习C/C&#xff0c;期末会有大作业。这篇文章就是一个简单的C大作业程序。我也是大一&#xff0c;所以觉着哪里写得不好欢迎在评论区提出。程序总体上讲是个“总分总”结构。一 实现这个程序要八步。第一步 程序的功能设计程序的目标有两个。一是辅助我备考四…

c语言osversioninfoex,xi52qian

头文件 一. 对终端的操作相关头文件#include 1. 输入istream2. 输出ostream3. iostream继承istream和ostream 所以它具有输入输出功能。为了方便这个库定义了下列三个标准流对象&#xff1a;1. cin 代表标准输入istream类对象一般地cin使我们能够从用户终端读入数据。2. cout …