哈爾濱市二手房源平均房價
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
【數據可視化】中國百城房價數據可視化
上一篇
說明:本文接上篇內容,介紹德國海軍潛艇部隊的絕對主力VII(A~F)型潛艇,在VII型潛艇誕生瞭德國U艇部隊的很多王牌。一、VII...
岁末,Forrester针对中国市场正式发布了《低代码平台中国市场现状分析报告》。凭借强大的低代码能力 + 全场景BPM优势,支撑/ ...