導(dǎo)入鏈家網(wǎng)二手房在售房源的文件(數(shù)據(jù)更新時(shí)間2017-11-29)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
import sys
stdout = sys.stdout
reload(sys)
sys.setdefaultencoding('utf-8')
sys.stdout = stdout
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#所有在售房源信息
house=pd.read_csv('houseinfo.csv')
# 所有小區(qū)信息
community=pd.read_csv('community.csv')
# 合并小區(qū)信息和房源信息表魄衅,可以獲得房源更詳細(xì)的地理位置
community['community'] = community['title']
house_detail = pd.merge(house, community, on='community')
將數(shù)據(jù)從字符串提取出來
# 將字符串轉(zhuǎn)換成數(shù)字
def data_adj(area_data, str):
if str in area_data :
return float(area_data[0 : area_data.find(str)])
else :
return None
# 處理房屋面積數(shù)據(jù)
house['square'] = house['square'].apply(data_adj,str = '平米')
刪除車位信息
car=house[house.housetype.str.contains('車位')]
print '記錄中共有車位%d個(gè)'%car.shape[0]
house.drop(car.index,inplace=True)
print '現(xiàn)在還剩下%d條記錄'%house.shape[0]
記錄中共有車位32個(gè)
現(xiàn)在還剩下16076條記錄
價(jià)格最高的5個(gè)別墅
bieshu=house[house.housetype.str.contains('別墅')]
print '記錄中共有別墅%d棟'%bieshu.shape[0]
bieshu.sort_values('totalPrice',ascending=False)['title'].head()
記錄中共有別墅50棟
8020 香山清琴二期獨(dú)棟別墅,毛坯房原始戶型塘辅,花園1200平米
102 千尺獨(dú)棟 北入戶 紅頂商人金融界入住社區(qū)
2729 臨湖獨(dú)棟別墅 花園半畝 觀景湖面和綠化 滿五年有車庫(kù)房主自薦
3141 銀湖別墅 獨(dú)棟 望京公園旁 五環(huán)里 封閉式社區(qū)
4112 首排別墅 位置好 全景小區(qū)綠化和人工湖 有車庫(kù)
Name: title, dtype: object
刪除別墅信息
house.drop(bieshu.index,inplace=True)
print '現(xiàn)在還剩下%d條記錄'%house.shape[0]
現(xiàn)在還剩下16026條記錄
獲取總價(jià)前五的房源信息
house.sort_values('totalPrice',ascending=False)['title'].head(5)
8571 中關(guān)村創(chuàng)業(yè)大街對(duì)過 有名的公司入駐其中正規(guī)寫字樓
11758 中關(guān)村創(chuàng)業(yè)大街對(duì)過 有名的公司入駐其中正規(guī)一層底商
2480 西山別墅區(qū)擁有900平大花園純獨(dú)棟社區(qū)房主自薦
14492 盤古大觀 大平層 觀景房 格局可塑性強(qiáng)晃虫!
10154 朝陽(yáng)公園內(nèi)建筑,視野好扣墩,可以俯視朝陽(yáng)公園美景
Name: title, dtype: object
獲取戶型數(shù)量分布信息
housetype = house['housetype'].value_counts()
housetype.head(8).plot(kind='bar',x='housetype',y='size', title='戶型數(shù)量分布')
plt.legend(['數(shù)量'])
plt.show()
關(guān)注人數(shù)最多5套房子
house['guanzhu'] = house['followInfo'].apply(data_adj,str = '人關(guān)注')
house.sort_values('guanzhu',ascending=False)['title'].head(5)
47 弘善家園南向開間哲银,滿兩年,免增值稅
2313 四惠東 康家園 南向一居室 地鐵1號(hào)線出行房主自薦
990 遠(yuǎn)見名苑 東南兩居 滿五年家庭唯一住房 誠(chéng)心出售房主自薦
2331 榮豐二期朝南復(fù)式無遮擋全天采光房主自薦
915 通州萬達(dá)北苑地鐵站 天時(shí)名苑 大兩居可改3居
Name: title, dtype: object
戶型和關(guān)注人數(shù)分布
fig, ax1 = plt.subplots(1,1)
type_interest_group = house['guanzhu'].groupby(house['housetype']).agg([('戶型', 'count'), ('關(guān)注人數(shù)', 'sum')])
#取戶型>50的數(shù)據(jù)進(jìn)行可視化
ti_sort = type_interest_group[type_interest_group['戶型'] > 50].sort_values(by='戶型')
ti_sort.plot(kind='barh', alpha=0.7, grid=True, ax=ax1)
plt.title('二手房戶型和關(guān)注人數(shù)分布')
plt.ylabel('戶型')
plt.show()
面積分布
fig,ax2 = plt.subplots(1,1)
area_level = [0, 50, 100, 150, 200, 250, 300, 500]
label_level = ['小于50', '50-100', '100-150', '150-200', '200-250', '250-300', '300-350']
area_cut = pd.cut(house['square'], area_level, labels=label_level)
area_cut.value_counts().plot(kind='bar', rot=30, alpha=0.4, grid=True, fontsize='small', ax=ax2)
plt.title('二手房面積分布')
plt.xlabel('面積')
plt.legend(['數(shù)量'])
plt.show()
聚類分析
# 缺失值處理:直接將缺失值去掉
cluster_data = house[['guanzhu','square','totalPrice']].dropna()
#將簇?cái)?shù)設(shè)為3
K_model = KMeans(n_clusters=3)
alg = K_model.fit(cluster_data)
'------聚類中心------'
center = pd.DataFrame(alg.cluster_centers_, columns=['關(guān)注人數(shù)','面積','房?jī)r(jià)'])
cluster_data['label'] = alg.labels_
center
id |
關(guān)注人數(shù) |
面積 |
房?jī)r(jià) |
0 |
49.787599 |
134.952934 |
1138.906738 |
1 |
48.573579 |
256.357676 |
2549.974916 |
2 |
61.485727 |
74.484049 |
515.354447 |
北京市在售面積最小二手房
house.sort_values('square').iloc[0,:]
houseID 101102324602
title 智德北巷(北河沿大街)+小戶型一居+南向
link https://bj.lianjia.com/ershoufang/101102324602...
community 智德北巷
years 中樓層(共6層)1985年建板樓
housetype 1室0廳
square 15.29
direction 南
floor 中樓層(共6層)1985年建板樓
taxtype 距離5號(hào)線燈市口站1113米
totalPrice 220
unitPrice 143885
followInfo 56人關(guān)注 / 共2次帶看 / 8天以前發(fā)布
validdate 2017-11-29 13:23:16
guanzhu 56
Name: 15260, dtype: object
北京市在售面積最大二手房
house.sort_values('square',ascending=False).iloc[0,:]
houseID 101102105035
title 中關(guān)村創(chuàng)業(yè)大街對(duì)過 有名的公司入駐其中正規(guī)寫字樓
link https://bj.lianjia.com/ershoufang/101102105035...
community 銀科大廈
years 低樓層(共22層)2004年建塔樓
housetype 1房間0衛(wèi)
square 2623.28
direction 東 南 西 北
floor 低樓層(共22層)2004年建塔樓
taxtype 距離10號(hào)線蘇州街站898米房本滿五年
totalPrice 12000
unitPrice 45745
followInfo 1人關(guān)注 / 共0次帶看 / 2個(gè)月以前發(fā)布
validdate 2017-11-29 14:07:32
guanzhu 1
Name: 8571, dtype: object
各個(gè)行政區(qū)房源均價(jià)
house_unitprice_perdistrict = house_detail.groupby('district').mean()['unitPrice']
house_unitprice_perdistrict.plot(kind='bar',x='district',y='unitPrice', title='各個(gè)行政區(qū)房源均價(jià)')
plt.legend(['均價(jià)'])
plt.show()
各個(gè)區(qū)域房源數(shù)量排序
bizcircle_count=house_detail.groupby('bizcircle').size().sort_values(ascending=False)
bizcircle_count.head(20).plot(kind='bar',x='bizcircle',y='size', title='各個(gè)區(qū)域房源數(shù)量分布')
plt.legend(['數(shù)量'])
plt.show()
各個(gè)區(qū)域均價(jià)排序
bizcircle_unitprice=house_detail.groupby('bizcircle').mean()['unitPrice'].sort_values(ascending=False)
bizcircle_unitprice.head(20).plot(kind='bar',x='bizcircle',y='unitPrice', title='各個(gè)區(qū)域均價(jià)分布')
plt.legend(['均價(jià)'])
plt.show()
各個(gè)區(qū)域小區(qū)數(shù)量
bizcircle_community=community.groupby('bizcircle')['title'].size().sort_values(ascending=False)
bizcircle_community.head(20).plot(kind='bar', x='bizcircle',y='size', title='各個(gè)區(qū)域小區(qū)數(shù)量分布')
plt.legend(['數(shù)量'])
plt.show()
各個(gè)區(qū)域小區(qū)數(shù)量
按小區(qū)均價(jià)排序
community_unitprice = house.groupby('community').mean()['unitPrice'].sort_values(ascending=False)
community_unitprice.head(15).plot(kind='bar',x='community',y='unitPrice', title='各個(gè)小區(qū)均價(jià)分布')
plt.legend(['均價(jià)'])
plt.show()
小區(qū)均價(jià)排序[圖片上傳中...(output_32_0.png-8a72c2-1511945570106-0)]