欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据分析:pandas分析链家网二手房信息

程序员文章站 2024-01-24 20:11:46
...

分析链家网南京市二手房信息

链家网二手房数据的采集方法参见之前的博客:数据采集(四):用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
0 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[0]
记录*有别墅19栋

价格最高的5栋别墅

bieshu.sort_values('totalprice',ascending=False).head(5)
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(5)
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[0]
现在还剩下2981条记录

房价最高的10套二手房

house.sort_values('totalprice',ascending=False).head(10)
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(10)
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(10)
江岸水城           24
天润城第十街区        22
丹佛小镇           18
东郊小镇第四街区       17
威尼斯水城第七街区      16
武夷绿洲品茗苑        16
良城美景家园         16
南京恒大绿洲         15
东渡国际青年城        14
水月秦淮           14
Name: xiaoqu, dtype: int64

出现最多的5种户型

house['huxing'].value_counts().head(5)
 3室2厅     813
 2室1厅     713
 2室2厅     616
 3室1厅     370
 4室2厅     176
Name: huxing, dtype: int64

变量转化

“面积”和“关注人数”字段具有数值含义,将其从字符串类型转换为数值类型

house['mianji']=house['mianji'].str[1:-7].astype(float)
house['guanzhu']=house['guanzhu'].str[:-10].astype(int)

面积最小的二手房

house.sort_values('mianji').iloc[0,:]
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[0,:]
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(10)
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=35)
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, 351, 10) # [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(5)
[80, 90)     395
[90, 100)    388
[60, 70)     380
[70, 80)     338
[50, 60)     279
Name: mianji_group, dtype: int64

可见最普遍的二手房面积在50-100平方米之间

print '占比是%f%%'%(100.0*house['mianji_group'].value_counts().head(5).sum()/len(house))
占比是59.711506%

不同小区的房价差异

取出现最多的50个社区

xiaoqu_50=house.groupby('xiaoqu').size().sort_values(ascending=False)[:50]
house_in50xiaoqu=house[house['xiaoqu'].isin(list(xiaoqu_50.index))]
按平均总价排序:
house_in50xiaoqu.groupby('xiaoqu').mean()['totalprice'].sort_values().head(10)
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(10)
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(10)
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=0)
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 0 5 0 5 0 0 0 0 0 0 0 0
东方龙湖湾 0 0 3 3 0 2 0 0 0 0 0 0 0 0
东渡国际青年城 0 0 5 4 2 3 0 0 0 0 0 0 0 0
东郊小镇第四街区 0 0 7 3 0 5 1 0 0 0 0 0 1 0
丹佛小镇 3 0 0 7 1 6 0 1 0 0 0 0 0 0

不同小区最多的户型

house_in50xiaoqu_huxing=house_in50xiaoqu_huxingshu.apply(lambda x:x[x==x.max()],axis=1)
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(0)
house_in50xiaoqu_huxing.shape
for i in range(house_in50xiaoqu_huxing.shape[0]):
    for j in range(house_in50xiaoqu_huxing.shape[1]):
        if house_in50xiaoqu_huxing.iloc[i,j]!=0:
            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(50, 1251, 50) # [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

数据分析:pandas分析链家网二手房信息