項目背景: 現在是一名大三生,在早早的為實習做準備。一直嚮往著互聯網之都—杭州,實習也準備投往杭州。到了杭州肯定得租房 住,那麼許多租房的問題也接踵而至:房租貴、位置偏、房屋舊、房東一言不合就漲租等問題,且也經常聽學長抱怨:“早知道 公司附近租房這麼貴,當初談薪資的時候就報個更高的價格 ...
項目背景:
現在是一名大三生,在早早的為實習做準備。一直嚮往著互聯網之都—杭州,實習也準備投往杭州。到了杭州肯定得租房
住,那麼許多租房的問題也接踵而至:房租貴、位置偏、房屋舊、房東一言不合就漲租等問題,且也經常聽學長抱怨:“早知道
公司附近租房這麼貴,當初談薪資的時候就報個更高的價格了,生活負擔更重了”。我在想,要是事先知道當前杭州市場租房 價格的合理統計範圍或可視化,
那就會避免這些問題,減輕自己負擔。正是瞭解到這些情況,所以用自己所學知識來分析了下杭州的租房價格情況~
項目簡介:
數據:從國內的房天下網站上爬取了近萬條杭州的租房信息,來探索分析影響房租價格的原因。希望能幫助像我一樣準備實習或剛參加工作的同學來避開租房上的坑,以更少的錢住性價比更高的房。
數據集
本項目使用的數據集是通過八爪魚採集器從房天下網站上爬取的2018年12月份的部分租房信息。八爪魚是款通過內置採集模板和可視化設置便能快速準確採集數據的工具。(正在學習爬蟲框架中~)房天下 網站的信息時效性和真實性較高,且數據源整潔、規範,數據質量高,可以減少前期數據清理工作。
本項目數據集包含以下欄位:樓盤名稱 building_names 、租憑方式lease_way、戶型house_type、面積areas、朝向orientation、房租rent、房源信息source、城市city、區域area、街道street、小區cell、地址address、公交traffic、主圖鏈接picture_url、樓盤詳情鏈接building_url、頁面網址url、標簽tags。
目的
希望通過本項目的分析提供一些有依據的參考數據,來幫助跟我一樣準備實習或剛工作的同學們
解決租房問題。
主要針對:1.面積,是租單間還是整租,什麼面積合適?
2.地段,哪個地段合適且房租較便宜?
3.朝向、戶型、房源對房價有什麼影響?
4.租房的標簽
工具
本項目以python為基礎,在jupyter notebook上運用pandas,numpy,matplotlib等庫進行數據清理、探索分析、可視化等處理。也用了tableau創建了互動式面板,更加方便大家去發現探索自己關心的問題。
數據清理
1.評估數據
#載入庫、數據集
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
df=pd.read_csv('rent_data.csv')
df_clean=df.copy()
#評估數據
df_clean.shape #數據框維度
df_clean.info() #總體數據簡明摘要
df_clean=df_clean.rename(columns={'ares':'areas'})#有一處列名錯誤,修改為areas
type(df_clean.areas[0]),type(df_clean.rent[0]) #更加詳細查看areas、rent的數據類型
df_clean.head() #查看數據前五行
輸出:
RangeIndex: 8145 entries, 0 to 8144
Data columns (total 18 columns):
building_name 7879 non-null object
lease_way 7879 non-null object
house_type 7879 non-null object
ares 7866 non-null object
orientation 7381 non-null object
rent 7879 non-null object
source 1966 non-null object
time 8145 non-null object
city 8145 non-null object
area 8145 non-null object
street 8145 non-null object
cell 7879 non-null object
address 7879 non-null object
traffic 2006 non-null object
picture_url 7879 non-null object
building_url 7879 non-null object
url 8145 non-null object
tags 6764 non-null object
dtypes: object(18)
memory usage: 1.1+ MB
(str,str)
存在問題:
- 發現有18列,8144行,但其中只有7879行是有樓盤名稱的有
效數據。 - 發現本該為整數類型的areas(面積),rent(房租)兩列為字元串類型。
- 去除對本項目分析無效的圖片鏈接、樓盤詳情鏈接、頁面地址等列。
- 把標簽列按符號‘/’分成兩列。
2.清理數據
#針對問題 1
df_clean.dropna(subset=['building_name'],inplace=True)
df_clean.shape
輸出:(7879,18) #確實跟判斷的一樣,只有7879行數據有效
#針對問題 2
#areas列
df_clean.dropna(subset=['areas'],inplace=True) #把areas列中空行去掉
df_clean['areas']=df_clean.areas.str.strip('㎡') #整列字元串去掉‘㎡’字元
df_clean['areas']=df_clean['areas'].astype(int) #數據類型轉換成整型
#rent列
df_clean.dropna(subset=['rent'],inplace=True) #把rent列中空行去掉
df_clean['rent']=df_clean.rent.str.extract(r'(\d+)') #採用正則化法提取每月房租價格
df_clean['rent']=df_clean['rent'].astype(int) #數據類型轉換成整型
#針對問題 3
df_clean.drop(['picture_url','building_url','url'],axis=1,inplace=True) #刪除無用列
#針對問題 4
df_clean['tag1'],df_clean['tag2']=df_clean.tags.str.split('/',1).str
df_clean.drop(['tags'],axis=1,inplace=True) #把標簽列拆分成多列標簽
pd.DataFrame(df_clean).to_csv('rent_data_clean.csv') #保存成新數據集
探索分析
載入初始數據
df=pd.read_csv('rent_data_clean.csv')
df_clean=df.copy()
df_clean['price_sq_m']=df_clean['rent']/df_clean['areas']
df_clean=df_clean[df_clean.areas<250] #除去超級大house、高檔裝潢、富人區,不在我們租房考慮範圍內
df_clean=df_clean[df_clean.price_sq_m<500]
問題一:面積因素
#面積問題
sns.set_style('darkgrid')
a=df_clean.groupby(df_clean.areas).price_sq_m.mean()
fig=plt.figure(figsize=(12,6))
plt.xticks(np.arange(0,249,10))
plt.plot(a)
plt.xlabel(u'面積/㎡',fontproperties = myfont,fontsize=15)
plt.ylabel('每平方米價格(均值) /元',fontproperties = myfont,fontsize=15)
plt.title('租單間or整租?',fontproperties = myfont,fontsize=18)
當面積為10平米時均價最高
,在40—100
平米這個區間平均租金比較便宜。其中30、45、60、100
這幾個面積租房均價較低,推薦合租或整租時選擇這幾種面積。在面積超過100後小區、裝修都比較高檔,所以價格會更高。推薦同學們可以找好朋友一起去整租100平以下的租房。
問題二:戶型、朝向、房源因素
1.戶型因素
#戶型
df_clean_price_mean=pd.DataFrame(df_clean.groupby(['house_type']).price_sq_m.mean())
df_clean_price_mean.reset_index('house_type',inplace=True)
new_name=list(df_clean_price_mean.columns)
new_name[-1]='mean_price'
df_clean_price_mean.columns=new_name
df_clean_price_mean.sort_values(by='mean_price',ascending=False,inplace=True)
租房時,只有
1戶合租 5室4廳 7室2廳
這幾種戶型均價偏高
,其他戶型價格差異不大。避開前三種戶型,然後選擇什麼類型的戶型完全看個人喜好了~
2.朝向因素
#朝向
df_orientation=df_clean.query('areas==30')
df_orientation=pd.DataFrame(df_orientation.groupby(['orientation']).price_sq_m.mean())
df_orientation.reset_index('orientation',inplace=True)
df_orientation.sort_values('price_sq_m',ascending=False,inplace=True)
plt.xticks(arange(len(df_orientation.orientation)),df_orientation.orientation)
plt.bar(arange(len(df_orientation.orientation)),df_orientation.price_sq_m)
plt.xlabel('朝向',fontsize=15)
plt.ylabel('每平均價 平/元',fontsize=15)
plt.title('朝向與每平價格(30平為例)',fontsize=18)
以面積為30平的為例,
朝南朝北的價格要高於朝東,朝西的價格
。道理也是,朝南的,朝北的南北通透,採光通風要好。差距在每平10~20元左右。但是我分析也發現:面積不同的房間,對應的的最高價格朝向也不相同,原因可能是與樓層有關,高樓層房間會遮擋低樓層的陽光。
3.房源因素
#房源
df_clean.source.fillna('平臺房源',inplace=True)
df_source=df_clean.query('areas==30')
df_source=pd.DataFrame(df_source.groupby(['source']).price_sq_m.mean())
df_source.reset_index('source',inplace=True)
plt.bar(df_source.source,df_source.price_sq_m)
plt.xlabel('房源',fontsize=15)
plt.ylabel('每平價格 平/元',fontsize=15)
plt.title('房源與每平價格(平/元)',fontsize=18)
個人房源與平臺房源的房租價格非常接近
,價格差很小。對租房的影響不大,原因是其中的個人房源大部分也是掌控在中介手中,導致價格與平臺價格相似。
問題三:地段,哪個地段適合租房(西湖區)?
運用Tableau製作互動式面板,以杭州市西湖區為例,可看出出租房房源密度,價格
。顏色深度,圖形大小代表著房租的每平價格。顏色深、形狀大則房租高。
西湖區中,在
西湖-益樂路、教工路、杭長高速、中和路/體育場路
周圍房源最多,從密度就可以看出。
在這其中,在西湖—西溪誠園、西湖—益樂路和以教工路為中心的古蕩、杭州電子科技大學、北山的嘉華商務中心
周圍房租價是高於平均房租,租房時儘量避開這些地點。其他地方的交通雖沒這些地方方便,但考慮到房價後性價比還是較高的。
互動式面板連接:https://public.tableau.com/profile/.65007288#!/vizhome/_28305/1_1
可探索發現自己關心問題。
問題四: 租房的標簽詞雲圖
#問題四:標簽詞雲圖
from scipy.misc import imread
from wordcloud import WordCloud
from wordcloud import ImageColorGenerator
a=df_clean.tag1.dropna()
b=df_clean.tag2.dropna()
f_list=[]
df1_clean1=a.reset_index(drop=True)
df1_clean2=b.reset_index(drop=True)
for i in range(len(df1_clean1)):
f_list.append(str(df1_clean1[i]+' '))
for i in range(len(df1_clean2)):
f_list.append(str(df1_clean2[i]+' '))
f_list
#把f_list數組,放入df1_text.txt文本中。
file_name=open('df_text.txt',mode='w',encoding='utf-8')
file_name.writelines(f_list)
background_image =imread('temp.png')
f= open(u'df_text.txt','r',encoding='utf-8').read()
wordcloud = WordCloud(
mask=background_image,
font_path='C:\Windows\Fonts\AdobeHeitiStd-Regular.otf',
).generate(f)
# 繪製圖片
plt.imshow(wordcloud)
# 消除坐標軸
plt.axis("off")
# 展示圖片
plt.show()
租房標簽中,
隨時看房、拎包入住、家電齊全、精裝修、南北通透
的標簽是最多的,可看出人們在租房時最註重的是方便、通透
。
結論
根據上面數據,與人合租40—100平米的租房
價格較低,房型上避開1戶合租、5室4廳、7室2廳
這三種戶型,其他價格相差不大。房源與房間朝向對房租價的影響不大,具體結合自己情況來。西湖區為例,其房源主要集中在益樂路、教工路、杭長高速、中和路/體育場路。遠離學校、商務中心等房租價格偏貴地區;從標簽詞雲看出,房間是否‘方便’、‘通透’是租戶最為關心的問題。
希望這篇簡單的房租數據分析文章能夠幫助像我一樣準備前往杭州實習,或剛參加工作的同學提前洞悉杭州租房市場價格影響因素,找到合適的房源來減輕點租金帶來的生活負擔~