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

最后

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

👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

👉实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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

间隔

存在缺失值、换行符、非数字型、无房间数等脏数据

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所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 23
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值