分析鍊家網南京市二手房資訊
鍊家網二手房資料的采集方法參見之前的部落格:資料采集(四):用XPath爬取鍊家網房價資料
總共有3000條二手房資訊記錄。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
house=pd.read_csv('house.csv',sep=' ')
house.head()
totalprice | xiaoqu | huxing | mianji | chaoxiang | zhuangxiu | dianti | guanzhu | daikan | fabu | |
---|---|---|---|---|---|---|---|---|---|---|
156.0 | 江岸水城 | 2室2廳 | 80.85平米 | 南 | 精裝 | 有電梯 | 98人關注 | 共31次帶看 | 23天以前釋出 | |
1 | 480.0 | 龍鳳花園隽鳳園 | 4室2廳 | 112.36平米 | 南 北 | 簡裝 | 無電梯 | 168人關注 | 共62次帶看 | 7個月以前釋出 |
2 | 238.0 | 鳳凰西街188号 | 3室1廳 | 76.48平米 | 南 | 簡裝 | NaN | 29人關注 | 共21次帶看 | 23天以前釋出 |
3 | 148.0 | 安康村 | 2室1廳 | 50.36平米 | 南 北 | 簡裝 | 無電梯 | 11人關注 | 共27次帶看 | 11天以前釋出 |
4 | 86.0 | 萬達紫金明珠 | 1室1廳 | 38.64平米 | 北 | 簡裝 | NaN | 98人關注 | 共34次帶看 | 25天以前釋出 |
發現異常記錄(行)
乍一看資料都很正常,但是處理資料時發現,當“huxing”(戶型)字元中包含“别墅”時,标簽和對應的資料出現了錯位。
bieshu=house[house.huxing.str.contains('别墅')]
bieshu.head()
totalprice | xiaoqu | huxing | mianji | chaoxiang | zhuangxiu | dianti | guanzhu | daikan | fabu | |
---|---|---|---|---|---|---|---|---|---|---|
60 | 560.0 | 翠屏國際香樟苑 | 聯排别墅 | 3室2廳 | 222.81平米 | 南 北 | 簡裝 | 20人關注 | 共23次帶看 | 2個月以前釋出 |
98 | 1280.0 | 海德衛城 | 疊拼别墅 | 5室2廳 | 239.76平米 | 南 | 毛坯 | 28人關注 | 共22次帶看 | 3個月以前釋出 |
156 | 758.0 | 愛濤漪水園臨溪苑 | 聯排别墅 | 5室3廳 | 259.18平米 | 南 北 | 其他 | 1人關注 | 共0次帶看 | 21天以前釋出 |
293 | 700.0 | 武夷花園 | 聯排别墅 | 6室2廳 | 250.61平米 | 南 北 | 精裝 | 13人關注 | 共5次帶看 | 1個月以前釋出 |
325 | 574.0 | 華僑新村紫薇苑 | 聯排别墅 | 3室2廳 | 164.11平米 | 南 北 | 簡裝 | 27人關注 | 共15次帶看 | 4個月以前釋出 |
當然,字段’totalprice’,’xiaoqu’,’guanzhu’,’daikan’,’fabu’中的資料還是正常的
print '記錄中共有别墅%d棟'%bieshu.shape[]
記錄中共有别墅19棟
價格最高的5棟别墅
bieshu.sort_values('totalprice',ascending=False).head()
totalprice | xiaoqu | huxing | mianji | chaoxiang | zhuangxiu | dianti | guanzhu | daikan | fabu | |
---|---|---|---|---|---|---|---|---|---|---|
98 | 1280.0 | 海德衛城 | 疊拼别墅 | 5室2廳 | 239.76平米 | 南 | 毛坯 | 28人關注 | 共22次帶看 | 3個月以前釋出 |
2927 | 1260.0 | 模範新村 | 獨棟别墅 | 4室2廳 | 186.9平米 | 南 北 | 精裝 | 11人關注 | 共1次帶看 | 4個月以前釋出 |
2060 | 1249.0 | 鐘鼎山莊 | 疊拼别墅 | 5室2廳 | 346.71平米 | 南 | 毛坯 | 17人關注 | 共12次帶看 | 3個月以前釋出 |
472 | 850.0 | 山水風華 | 聯排别墅 | 3室2廳 | 175.25平米 | 南 北 | 精裝 | 10人關注 | 共1次帶看 | 1個月以前釋出 |
2636 | 830.0 | 山水華門嶺秀苑 | 聯排别墅 | 4室2廳 | 223.1平米 | 南 北 | 精裝 | 20人關注 | 共8次帶看 | 3個月以前釋出 |
價格最低的5棟别墅
bieshu.sort_values('totalprice').head()
totalprice | xiaoqu | huxing | mianji | chaoxiang | zhuangxiu | dianti | guanzhu | daikan | fabu | |
---|---|---|---|---|---|---|---|---|---|---|
2312 | 370.0 | 江南文樞苑竹削館 | 疊拼别墅 | 5室2廳 | 211.98平米 | 南 北 | 毛坯 | 31人關注 | 共11次帶看 | 2個月以前釋出 |
2804 | 380.0 | 江南文樞苑竹削館 | 疊拼别墅 | 4室2廳 | 214.96平米 | 南 北 | 其他 | 8人關注 | 共3次帶看 | 1個月以前釋出 |
2500 | 460.0 | 瑞景文華 | 疊拼别墅 | 4室2廳 | 184.6平米 | 南 | 其他 | 45人關注 | 共6次帶看 | 4個月以前釋出 |
1761 | 500.0 | 銀城一方山 | 疊拼别墅 | 5室2廳 | 163.37平米 | 南 北 | 精裝 | 0人關注 | 共0次帶看 | 11天以前釋出 |
60 | 560.0 | 翠屏國際香樟苑 | 聯排别墅 | 3室2廳 | 222.81平米 | 南 北 | 簡裝 | 20人關注 | 共23次帶看 | 2個月以前釋出 |
删除異常記錄(行)
del_index=bieshu.index
house.drop(del_index,inplace=True)
print '現在還剩下%d條記錄'%house.shape[]
現在還剩下2981條記錄
房價最高的10套二手房
house.sort_values('totalprice',ascending=False).head()
totalprice | xiaoqu | huxing | mianji | chaoxiang | zhuangxiu | dianti | guanzhu | daikan | fabu | |
---|---|---|---|---|---|---|---|---|---|---|
1338 | 1220.0 | 天正濱江花園 | 4室2廳 | 260.9平米 | 南 北 | 毛坯 | 有電梯 | 9人關注 | 共38次帶看 | 9個月以前釋出 |
1366 | 1220.0 | 天正濱江花園 | 4室2廳 | 260.9平米 | 南 北 | 毛坯 | 有電梯 | 9人關注 | 共38次帶看 | 9個月以前釋出 |
2442 | 1200.0 | 宋都美域錦園 | 5室3廳 | 183.4平米 | 南 北 | 其他 | 有電梯 | 3人關注 | 共0次帶看 | 17天以前釋出 |
1674 | 1160.0 | 星雨華府 | 4室2廳 | 238.24平米 | 南 北 | 精裝 | 有電梯 | 6人關注 | 共1次帶看 | 14天以前釋出 |
2995 | 1150.0 | 鋒尚國際較高價的電梯大廈 | 4室3廳 | 279.8平米 | 南 北 | 精裝 | 有電梯 | 16人關注 | 共5次帶看 | 9個月以前釋出 |
2278 | 1100.0 | 仁恒江灣城三期 | 4室2廳 | 182.14平米 | 南 北 | 其他 | NaN | 2人關注 | 共0次帶看 | 剛剛釋出 |
2056 | 1100.0 | 天正濱江花園 | 5室2廳 | 261.71平米 | 南 北 | 毛坯 | NaN | 0人關注 | 共10次帶看 | 6個月以前釋出 |
2286 | 1100.0 | 仁恒江灣城三期 | 4室2廳 | 182.14平米 | 南 北 | 其他 | NaN | 2人關注 | 共0次帶看 | 剛剛釋出 |
1799 | 1058.0 | 雅居樂花園 | 5室2廳 | 262.03平米 | 東南 | 其他 | 有電梯 | 2人關注 | 共1次帶看 | 11天以前釋出 |
2128 | 1000.0 | 仁恒江灣城一期 | 4室2廳 | 176.62平米 | 南 北 | 精裝 | 有電梯 | 20人關注 | 共20次帶看 | 7個月以前釋出 |
房價最低的10套二手房
house.sort_values('totalprice').head()
totalprice | xiaoqu | huxing | mianji | chaoxiang | zhuangxiu | dianti | guanzhu | daikan | fabu | |
---|---|---|---|---|---|---|---|---|---|---|
2552 | 65.0 | 都市公社 | 1室1廳 | 40.15平米 | 南 | 簡裝 | 無電梯 | 28人關注 | 共0次帶看 | 1個月以前釋出 |
2002 | 78.0 | 天地新城天柱座 | 1室1廳 | 35平米 | 東 | 精裝 | 有電梯 | 8人關注 | 共8次帶看 | 14天以前釋出 |
1446 | 80.0 | 甯港一村 | 2室0廳 | 39.94平米 | 南 北 | 簡裝 | NaN | 21人關注 | 共7次帶看 | 2個月以前釋出 |
1435 | 80.0 | 甯港一村 | 2室0廳 | 39.94平米 | 南 北 | 簡裝 | NaN | 21人關注 | 共7次帶看 | 2個月以前釋出 |
2072 | 82.0 | 丹佛小鎮 | 1室0廳 | 34.87平米 | 北 | 精裝 | 有電梯 | 100人關注 | 共10次帶看 | 9個月以前釋出 |
2066 | 82.0 | 丹佛小鎮 | 1室0廳 | 34.87平米 | 北 | 精裝 | 有電梯 | 100人關注 | 共10次帶看 | 9個月以前釋出 |
1788 | 82.0 | 萬達紫金明珠 | 1室0廳 | 30.19平米 | 東 | 精裝 | 有電梯 | 183人關注 | 共18次帶看 | 8個月以前釋出 |
2964 | 83.0 | 南方花園B組團 | 1室1廳 | 27.84平米 | 東 西 | 其他 | NaN | 6人關注 | 共1次帶看 | 9天以前釋出 |
2333 | 83.0 | 托樂嘉單身較高價的電梯大廈 | 1室0廳 | 34.06平米 | 北 | 其他 | NaN | 18人關注 | 共27次帶看 | 3個月以前釋出 |
4 | 86.0 | 萬達紫金明珠 | 1室1廳 | 38.64平米 | 北 | 簡裝 | NaN | 98人關注 | 共34次帶看 | 25天以前釋出 |
二手房源最多的10個小區
house['xiaoqu'].value_counts().head()
江岸水城 24
天潤城第十街區 22
丹佛小鎮 18
東郊小鎮第四街區 17
威尼斯水城第七街區 16
武夷綠洲品茗苑 16
良城美景家園 16
南京恒大綠洲 15
東渡國際青年城 14
水月秦淮 14
Name: xiaoqu, dtype: int64
出現最多的5種戶型
house['huxing'].value_counts().head()
3室2廳 813
2室1廳 713
2室2廳 616
3室1廳 370
4室2廳 176
Name: huxing, dtype: int64
變量轉化
“面積”和“關注人數”字段具有數值含義,将其從字元串類型轉換為數值類型
house['mianji']=house['mianji'].str[:-].astype(float)
house['guanzhu']=house['guanzhu'].str[:-].astype(int)
面積最小的二手房
house.sort_values('mianji').iloc[,:]
totalprice 83
xiaoqu 南方花園B組團
huxing 1室1廳
mianji 27.84
chaoxiang 東 西
zhuangxiu 其他
dianti NaN
guanzhu 6
daikan 共1次帶看
fabu 9天以前釋出
Name: 2964, dtype: object
面積最大的二手房
house.sort_values('mianji',ascending=False).iloc[,:]
totalprice 980
xiaoqu 萬科金域藍灣
huxing 5室3廳
mianji 323.97
chaoxiang 南 北
zhuangxiu 毛坯
dianti 無電梯
guanzhu 5
daikan 共1次帶看
fabu 13天以前釋出
Name: 1248, dtype: object
關注人數最多的10套二手房
house.sort_values('guanzhu',ascending=False).head()
totalprice | xiaoqu | huxing | mianji | chaoxiang | zhuangxiu | dianti | guanzhu | daikan | fabu | |
---|---|---|---|---|---|---|---|---|---|---|
2359 | 180.0 | 鳳凰西街223号 | 2室2廳 | 67.78 | 南 北 | 精裝 | 無電梯 | 698 | 共80次帶看 | 一年前釋出 |
51 | 90.0 | 金陵村 | 1室1廳 | 42.49 | 南 | 精裝 | 無電梯 | 505 | 共41次帶看 | 3個月以前釋出 |
2475 | 165.0 | 水西門大街153号 | 2室2廳 | 70.25 | 南 | 精裝 | 無電梯 | 366 | 共30次帶看 | 6個月以前釋出 |
24 | 420.0 | 江南名府 | 4室2廳 | 145.07 | 南 北 | 精裝 | 無電梯 | 355 | 共76次帶看 | 4個月以前釋出 |
2193 | 112.0 | 水關橋 | 2室2廳 | 45.69 | 南 北 | 其他 | 無電梯 | 347 | 共79次帶看 | 4個月以前釋出 |
2184 | 112.0 | 水關橋 | 2室2廳 | 45.69 | 南 北 | 其他 | 無電梯 | 347 | 共79次帶看 | 4個月以前釋出 |
2187 | 180.0 | 南方花園瑞陽居 | 3室2廳 | 61.40 | 東 | 簡裝 | 有電梯 | 326 | 共56次帶看 | 9個月以前釋出 |
2201 | 180.0 | 南方花園瑞陽居 | 3室2廳 | 61.40 | 東 | 簡裝 | 有電梯 | 326 | 共56次帶看 | 9個月以前釋出 |
652 | 258.0 | 百家湖國際花園 | 3室2廳 | 104.54 | 西北 | 精裝 | 有電梯 | 325 | 共157次帶看 | 5個月以前釋出 |
1578 | 260.0 | 翠屏灣花園城 | 3室2廳 | 116.01 | 南 北 | 精裝 | 無電梯 | 306 | 共141次帶看 | 11個月以前釋出 |
增加“每平米房價”字段
house['price']=house['totalprice']/house['mianji']
二手房平均面積
print '南京市二手房平均面積為%f平方米'%house['mianji'].mean()
南京市二手房平均面積為93.175881平方米
二手房平均總價
print '南京市二手房平均總價為%f萬元'%house['totalprice'].mean()
南京市二手房平均總價為283.182321萬元
二手房平均價格
print '南京市二手房平均價格為%f萬元每平米'%house['price'].mean()
南京市二手房平均價格為3.046645萬元每平米
按照面積分組
%matplotlib inline
house.mianji.hist(bins=)
plt.title("Distribution of area of house")
plt.ylabel('count of house')
plt.xlabel('area')
#labels = ['1-50', '51-100', '101-150', '151-200', '201-250', '251-300','301-350']
# 面積分組的labels
bins = range(, , ) # [0, 50, 100, 150, 200, 250, 300, 350]
# 告訴我們bin是哪些
house['mianji_group'] = pd.cut(house.mianji, bins, right=False)
# 按照bin把資料cut下來,并附上labels,做成一個新的column,儲存下來。
最普遍的二手房面積
house['mianji_group'].value_counts().head()
[80, 90) 395
[90, 100) 388
[60, 70) 380
[70, 80) 338
[50, 60) 279
Name: mianji_group, dtype: int64
可見最普遍的二手房面積在50-100平方米之間
print '占比是%f%%'%(*house['mianji_group'].value_counts().head().sum()/len(house))
占比是59.711506%
不同小區的房價差異
取出現最多的50個社群
xiaoqu_50=house.groupby('xiaoqu').size().sort_values(ascending=False)[:]
house_in50xiaoqu=house[house['xiaoqu'].isin(list(xiaoqu_50.index))]
按平均總價排序:
house_in50xiaoqu.groupby('xiaoqu').mean()['totalprice'].sort_values().head()
xiaoqu
天泰青城苑 131.666667
營苑新寓 157.818182
東郊小鎮第四街區 158.941176
營苑西村 163.375000
王府園小區 183.700000
江岸水城 190.037500
鐘山山莊 191.400000
天潤城第十四街區 192.809091
天潤城第五至七街區 195.454545
丹佛小鎮 199.611111
Name: totalprice, dtype: float64
按每平米均價排序:
house_in50xiaoqu.groupby('xiaoqu').mean()['price'].sort_values().head()
xiaoqu
華彙康城 2.011065
天潤城第五至七街區 2.046685
江岸水城 2.047492
明發濱江新城三期 2.099873
明發濱江新城一期 2.155085
威尼斯水城第七街區 2.181221
天潤城第十街區 2.257201
翠屏灣花園城 2.265674
天潤城第十四街區 2.338558
天潤城第十二街區 2.346086
Name: price, dtype: float64
不同小區各戶型的數量
house_in50xiaoqu_huxingshu=house_in50xiaoqu.groupby('xiaoqu')['huxing'].value_counts()
house_in50xiaoqu_huxingshu.head()
xiaoqu huxing
萬達紫金明珠 2室2廳 5
3室2廳 5
1室0廳 1
1室1廳 1
東方龍湖灣 2室1廳 3
2室2廳 3
3室2廳 2
東渡國際青年城 2室1廳 5
2室2廳 4
3室2廳 3
Name: huxing, dtype: int64
house_in50xiaoqu_huxingshu=house_in50xiaoqu_huxingshu.unstack(fill_value=)
house_in50xiaoqu_huxingshu.head()
huxing | 1室0廳 | 1室1廳 | 2室1廳 | 2室2廳 | 3室1廳 | 3室2廳 | 4室1廳 | 4室2廳 | 4室3廳 | 5室1廳 | 5室2廳 | 5室3廳 | 6室2廳 | 6室3廳 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
xiaoqu | ||||||||||||||
萬達紫金明珠 | 1 | 1 | 5 | 5 | ||||||||||
東方龍湖灣 | 3 | 3 | 2 | |||||||||||
東渡國際青年城 | 5 | 4 | 2 | 3 | ||||||||||
東郊小鎮第四街區 | 7 | 3 | 5 | 1 | 1 | |||||||||
丹佛小鎮 | 3 | 7 | 1 | 6 | 1 |
不同小區最多的戶型
house_in50xiaoqu_huxing=house_in50xiaoqu_huxingshu.apply(lambda x:x[x==x.max()],axis=)
house_in50xiaoqu_huxing.head()
1室0廳 | 2室1廳 | 2室2廳 | 3室1廳 | 3室2廳 | 4室2廳 | |
---|---|---|---|---|---|---|
xiaoqu | ||||||
萬達紫金明珠 | NaN | NaN | 5.0 | NaN | 5.0 | NaN |
東方龍湖灣 | NaN | 3.0 | 3.0 | NaN | NaN | NaN |
東渡國際青年城 | NaN | 5.0 | NaN | NaN | NaN | NaN |
東郊小鎮第四街區 | NaN | 7.0 | NaN | NaN | NaN | NaN |
丹佛小鎮 | NaN | NaN | 7.0 | NaN | NaN | NaN |
house_in50xiaoqu_huxing=house_in50xiaoqu_huxing.fillna()
house_in50xiaoqu_huxing.shape
for i in range(house_in50xiaoqu_huxing.shape[]):
for j in range(house_in50xiaoqu_huxing.shape[]):
if house_in50xiaoqu_huxing.iloc[i,j]!=:
print '%s:%s'%(house_in50xiaoqu_huxing.index[i],house_in50xiaoqu_huxing.columns[j])
萬達紫金明珠 : 2室2廳
萬達紫金明珠 : 3室2廳
東方龍湖灣 : 2室1廳
東方龍湖灣 : 2室2廳
東渡國際青年城 : 2室1廳
東郊小鎮第四街區 : 2室1廳
丹佛小鎮 : 2室2廳
亞東國際較高價的電梯大廈 : 3室2廳
親水灣花園 : 2室2廳
鳳凰莊 : 2室1廳
鳳凰花園城靜幽園 : 3室2廳
華保新寓 : 2室1廳
華彙康城 : 2室2廳
南京恒大綠洲 : 4室2廳
名嘉佳園小區 : 3室2廳
和燕花苑 : 3室1廳
墨香山莊 : 3室2廳
天元吉第城 : 2室2廳
天元吉第城 : 3室2廳
天悅花園 : 2室2廳
天悅花園 : 3室2廳
天泰青城苑 : 1室0廳
天潤城第五至七街區 : 2室2廳
天潤城第十一街區 : 3室2廳
天潤城第十二街區 : 2室2廳
天潤城第十二街區 : 3室2廳
天潤城第十四街區 : 3室2廳
天潤城第十街區 : 2室2廳
威尼斯水城第七街區 : 2室2廳
富麗山莊 : 2室2廳
小火瓦巷 : 2室1廳
市政天元城 : 2室2廳
禦水灣花園 : 2室2廳
時光澔韻 : 3室2廳
明發濱江新城一期 : 3室2廳
明發濱江新城三期 : 4室2廳
武夷綠洲品茗苑 : 3室2廳
武夷綠洲觀竹苑 : 2室2廳
水月秦淮 : 2室2廳
水月秦淮 : 3室2廳
江岸水城 : 2室2廳
王府園小區 : 2室1廳
白鹭花園鳳栖苑 : 3室1廳
百家湖國際花園 : 3室2廳
百家湖西花園倫敦城 : 2室1廳
美達淺草明苑 : 2室2廳
翠屏東南 : 3室2廳
翠屏灣花園城 : 3室2廳
良城美景家園 : 3室2廳
莫愁花園牡丹裡 : 2室1廳
莫愁花園牡丹裡 : 3室1廳
營苑新寓 : 2室1廳
營苑西村 : 2室1廳
誠品城 : 3室2廳
金王府 : 3室2廳
鐘山山莊 : 2室1廳
陽光聚寶山莊 : 2室2廳
對不同戶型的關注度差異
house.groupby('huxing').sum()['guanzhu'].sort_values(ascending=False)
huxing
3室2廳 21734
2室1廳 17037
2室2廳 15766
3室1廳 8619
4室2廳 3955
1室1廳 3239
5室2廳 1033
1室0廳 789
5室3廳 423
4室1廳 352
4室3廳 345
2室0廳 212
6室3廳 192
6室2廳 188
3室3廳 141
5室1廳 105
3室0廳 87
1室2廳 73
6室4廳 17
2室3廳 4
5室4廳 2
Name: guanzhu, dtype: int64
對不同總價的關注度差異
首先将房價分組
print house['totalprice'].min()
print house['totalprice'].max()
65.0
1220.0
#labels = ['1-50', '51-100', '101-150', '151-200', '201-250', '251-300','301-350']
# 面積分組的labels
bins = range(, , ) # [0, 50, 100, 150, 200, 250, 300, 350]
# 告訴我們bin是哪些
house['totalprice_group'] = pd.cut(house.totalprice, bins, right=False)
# 按照bin把資料cut下來,并附上labels,做成一個新的column,儲存下來。
totalprice_guanzhu=house.groupby('totalprice_group').sum()['guanzhu'].sort_values(ascending=False)
totalprice_guanzhu.head()
totalprice_group
[150, 200) 18708
[200, 250) 13190
[250, 300) 11445
[100, 150) 7706
[300, 350) 7062
Name: guanzhu, dtype: int64
%matplotlib inline
house.totalprice.hist(bins=len(totalprice_guanzhu))
print len(totalprice_guanzhu)
24
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiQ3chVEa0V3bT9CX5RXa2Fmcn9CXwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwVNnpXTzB3MZZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39zMxkDMxkDMwIzMwgDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)