【數據可視化】哈爾濱市二手房源平均房價

哈爾濱市二手房源平均房價

WINTER

1.哈爾濱房價背景

作為黑龍江的省會,哈爾濱的財政也早已處於入不敷出,高度依賴中央補貼的狀態。2005年,源於哈爾濱的全口徑財政收入(包含上繳給中央的部分)165億,當年度財政支出164億。這意味著中央將從哈爾濱收繳上來的稅費全部以轉移支付方式還給哈爾濱之後,哈爾濱能夠實現收支基本相抵,不至於再從富裕地區要錢。然而2005年是哈爾濱能夠實現收支平衡的最後一年。2006年哈爾濱全口徑財政收入192億,支出195億,缺口3億;2010年全口徑收入410億,支出453億,缺口43億;2016年全口徑收入681億,支出877億,缺口196億。哈爾濱這種日益龐大的財政缺口,當然需要中央從東南富裕省份收取更多的稅,拿來轉移支付給哈爾濱,以填補虧空。2017年前三季度哈爾濱的全口徑財政收入同比增幅6.3%,然而支出增幅高達11%,收入增幅比不上支出增幅,這當然意味著今年哈爾濱的財政缺口將會加大,從富裕省份吸血吊命的依賴程度在加深。

WINTER

2.確認主題

在即將要實習的一年,面臨著找房子的情形,分析哈爾濱道裡,道外,南崗,香坊四個區的房價,找到性價比高的房源。

WINTER

3.數據的獲取

1. 找到租房網站,鏈傢網http://hrb.lianjia.com/ershoufang/

2. 根據網站的結構,使用python的requests庫對網頁進行請求,請求回來,完全是靜態頁面,

3. 使用lmxl庫語法對html結構進行解析進行數據可視化

WINTER

4.源程序清單

from pyecharts.charts import Bar,Pie,Grid,Scatter,Map

from pyecharts import options as opts

from pyecharts.commons.utils import JsCode

from jieba import posseg as psg

import collections

from wordcloud import WordCloud

from bs4 import BeautifulSoup

import pandas as pd

from tqdm import tqdm

import math

import requests

import lxml

import re

import time

area_dic = {'道裡':'daoli',

'道外':'daowai',

'香坊':'xiangfang',

'南崗':'nangang',}

# 加個header以示尊敬

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',

'Referer': 'http://hrb.lianjia.com/ershoufang/'}

# 新建一個會話

sess = requests.session()

sess.get('http://hrb.lianjia.com/ershoufang/', headers=headers)

# url示例:http://hrb.lianjia.com/zufang/luohuqu/pg2/

url = 'http://hrb.lianjia.com/ershoufang/{}/pg{}/'

# 當正則表達式匹配失敗時,返回默認值(errif)

def re_match(re_pattern, string, errif=None):

try:

return re.findall(re_pattern, string)[0].strip()

except IndexError:

return errif

# 新建一個DataFrame存儲信息

data = pd.DataFrame()

for key_, value_ in area_dic.items():

# 獲取該行政區下房源記錄數

start_url = 'http://hrb.lianjia.com/ershoufang/{}/'.format(value_)

html = sess.get(start_url).text

house_num = re.findall('共找到<span> (.*?) </span>套.*二手房', html)[0].strip()

print('���{}: 二手房源共計「{}」套'.format(key_, house_num),flush=True)

time.sleep(1)

# 頁面限制��� 每個行政區隻能獲取最多100頁共計3000條房源信息

total_page = int(math.ceil(min(3000, int(house_num)) / 30.0))

for i in tqdm(range(total_page), desc=key_):

html = sess.get(url.format(value_, i+1)).text

soup = BeautifulSoup(html, 'lxml')

info_collect = soup.find_all(class_="info clear")

for info in info_collect:

info_dic = {}

# 行政區

info_dic['area'] = key_

# 房源的標題

info_dic['title'] = re_match('target="_blank">(.*?)</a><!--', str(info))

# 小區名

info_dic['community'] = re_match('xiaoqu.*?target="_blank">(.*?)</a>', str(info))

# 位置

info_dic['position'] = re_match('<a href.*?target="_blank">(.*?)</a>.*?class="address">', str(info))

# 稅相關,如房本滿5年

info_dic['tax'] = re_match('class="taxfree">(.*?)</span>', str(info))

# 總價

info_dic['total_price'] = float(re_match('class="totalPrice"><span>(.*?)</span>萬', str(info)))

# 單價

info_dic['unit_price'] = float(re_match('data-price="(.*?)"', str(info)))

# 匹配房源標簽信息,通過|切割

# 包括面積,朝向,裝修等信息

icons = re.findall('class="houseIcon"></span>(.*?)</div>', str(info))[0].strip().split('|')

info_dic['hourseType'] = icons[0].strip()

info_dic['hourseSize'] = float(icons[1].replace('平米', ''))

info_dic['direction'] = icons[2].strip()

info_dic['fitment'] = icons[3].strip()

# 存入DataFrame

if data.empty:

data = pd.DataFrame(info_dic,index=[0])

else:

data = data.append(info_dic,ignore_index=True)

# 去掉一條面積10000+平米的房源記錄

data = data[data['hourseSize'] < 10000]

data.head()

scatter = (Scatter(init_opts=opts.InitOpts(theme='blue'))

.add_xaxis(data['hourseSize'])

.add_yaxis("房價", data['total_price'])

.set_series_opts(label_opts=opts.LabelOpts(is_show=False),

markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值"),]))

.set_global_opts(

legend_opts=opts.LegendOpts(is_show=False),

title_opts=opts.TitleOpts(title="哈爾濱二手房 總價-面積 散點圖"),

xaxis_opts=opts.AxisOpts(

name='面積',

# 設置坐標軸為數值類型

type_="value",

# 不顯示分割線

splitline_opts=opts.SplitLineOpts(is_show=False)),

yaxis_opts=opts.AxisOpts(

name='總價',

name_location='middle',

# 設置坐標軸為數值類型

type_="value",

# 默認為False表示起始為0

is_scale=True,

splitline_opts=opts.SplitLineOpts(is_show=False),),

visualmap_opts=opts.VisualMapOpts(is_show=True, type_='color', min_=100, max_=1000)

))

scatter.render_notebook()

temp = data.groupby(['area'])['unit_price'].mean().reset_index()

data_pair = [(row['area'], round(row['unit_price']/10000, 1)) for _, row in temp.iterrows()]

map_ = (Map(init_opts=opts.InitOpts(theme='dark'))

.add("二手房均價", data_pair, '哈爾濱', is_roam=False)

.set_series_opts(label_opts=opts.LabelOpts(is_show=True))

.set_global_opts(

title_opts=opts.TitleOpts(title="哈爾濱主城區區二手房均價"),

legend_opts=opts.LegendOpts(is_show=False),

tooltip_opts=opts.TooltipOpts(formatter='{b}:{c}萬元'),

visualmap_opts=opts.VisualMapOpts(min_=3, max_=10)

)

map_.render_notebook()

temp = data.groupby(['community'])['unit_price'].agg(['mean', 'count']).reset_index()

# 該小區內至少3套在售房源才統計

data_pair = sorted([(row['community'], round(row['mean']/10000, 1)) if row['count']>=3 else (0, 0)

for _, row in temp.iterrows()], key=lambda x: x[1], reverse=True)[:10]

bar = (Bar(init_opts=opts.InitOpts(theme='blue'))

.add_xaxis([x[0] for x in data_pair[::-1]])

.add_yaxis('二手房均價', [x[1] for x in data_pair[::-1]])

.set_series_opts(label_opts=opts.LabelOpts(is_show=True, position='insideRight', font_style='italic'),

itemstyle_opts=opts.ItemStyleOpts(

color=JsCode("""new echarts.graphic.LinearGradient(1, 0, 0, 0,

[{

offset: 0,

color: 'rgb(0,206,209)'

}, {

offset: 1,

color: 'rgb(218,165,32)'

}])"""))

)

.set_global_opts(

title_opts=opts.TitleOpts(title="哈爾濱二手房均價TOP 10小區"),

legend_opts=opts.LegendOpts(is_show=False),

tooltip_opts=opts.TooltipOpts(formatter='{b}:{c}萬元'),

xaxis_opts=opts.AxisOpts(min_=2),

)

.reversal_axis()

)

bar.render_notebook()

WINTER

5.數據可視化

8666ccf46e7a7bbcffe70de373b34337

WINTER

6.總結

哈爾濱作為東北的省會城市之一,是國傢對俄合作中心城市、歐亞大陸橋的明珠,東北亞區域中心城市,黑龍江周邊也在發展,但是一直都沒有哈爾濱發展得快,所以很多人都來哈爾濱尋找工作。現在哈爾濱房源道裡區較高,越發達的地帶,房價越高。所以,要是剛上社會要在哈爾濱實習的學生,最好還是在香坊區找一個房子住,如果公司太遠的話,就另行考慮

c6fadb5f2b8509eb5eb67606293411c6

長按二維碼關註

如有任何問題

您可以發送郵件至

dataintellagr@126.com

或關註微博/知乎/微信後臺留言

我們期待您的提問!

微博:數據智農

知乎:數據智農

郵箱:dataintellagr@126.com

制作:蔡佳起

推薦閱讀

【數據可視化】貓眼電影經典top100榜數據可視化

e87f7e1f2dc1dab27095bc47fd0be764

【數據可視化】中國百城房價數據可視化

发表回复

相关推荐

紫微|【父母宫主星天同星】来看—你有怎样的父母?

元观—不是每一个观点,都可以叫元观。 父母 天同星在父母宫 天同星坐父母宫者,双亲慈祥、和蔼、亲切又理智,故而家庭洋溢 ...

· 2秒前

核保篇-甲状腺结节能买保险吗?

核保思路 1、甲状腺结节的基本情况 甲状腺结节是非常常见的症状,简单来说它是指甲状腺细胞在局部异常生长所引起的病变的统 ...

· 5秒前

編號15:二戰德國海軍(Kriegsmarine)的主要艦艇介紹08:從海底出擊02——U艇部隊的絕對主力:VII(A~F)型潛艇

說明:本文接上篇內容,介紹德國海軍潛艇部隊的絕對主力VII(A~F)型潛艇,在VII型潛艇誕生瞭德國U艇部隊的很多王牌。一、VII...

· 8秒前

AWS PaaS & 易鲸云双双实力入选Forrester《低代码平台中国市场现状分析报告》

岁末,Forrester针对中国市场正式发布了《低代码平台中国市场现状分析报告》。凭借强大的低代码能力 + 全场景BPM优势,支撑/ ...

· 13秒前

高中圆锥曲线解题技巧之抛物线参数方程(一)

总的来说,高考尤其是全国卷中抛物线问题比椭圆或者双曲线问题要简单,原因有二,第一联立之后方程形式简单,其次抛物线性质 ...

· 17秒前