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

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

链家网二手房数据的采集方法参见之前的博客:数据采集(四):用XPath爬取链家网房价数据

总共有3000条二手房信息记录。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt 
house=pd.read_csv('house.csv',sep=' ')
house.head()
totalpricexiaoquhuxingmianjichaoxiangzhuangxiudiantiguanzhudaikanfabu
0156.0江岸水城2室2厅80.85平米精装有电梯98人关注共31次带看23天以前发布
1480.0龙凤花园隽凤园4室2厅112.36平米南 北简装无电梯168人关注共62次带看7个月以前发布
2238.0凤凰西街188号3室1厅76.48平米简装NaN29人关注共21次带看23天以前发布
3148.0安康村2室1厅50.36平米南 北简装无电梯11人关注共27次带看11天以前发布
486.0万达紫金明珠1室1厅38.64平米简装NaN98人关注共34次带看25天以前发布

发现异常记录(行)

乍一看数据都很正常,但是处理数据时发现,当“huxing”(户型)字符中包含“别墅”时,标签和对应的数据出现了错位。

bieshu=house[house.huxing.str.contains('别墅')]
bieshu.head()
totalpricexiaoquhuxingmianjichaoxiangzhuangxiudiantiguanzhudaikanfabu
60560.0翠屏国际香樟苑联排别墅3室2厅222.81平米南 北简装20人关注共23次带看2个月以前发布
981280.0海德卫城叠拼别墅5室2厅239.76平米毛坯28人关注共22次带看3个月以前发布
156758.0爱涛漪水园临溪苑联排别墅5室3厅259.18平米南 北其他1人关注共0次带看21天以前发布
293700.0武夷花园联排别墅6室2厅250.61平米南 北精装13人关注共5次带看1个月以前发布
325574.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)
totalpricexiaoquhuxingmianjichaoxiangzhuangxiudiantiguanzhudaikanfabu
981280.0海德卫城叠拼别墅5室2厅239.76平米毛坯28人关注共22次带看3个月以前发布
29271260.0模范新村独栋别墅4室2厅186.9平米南 北精装11人关注共1次带看4个月以前发布
20601249.0钟鼎山庄叠拼别墅5室2厅346.71平米毛坯17人关注共12次带看3个月以前发布
472850.0山水风华联排别墅3室2厅175.25平米南 北精装10人关注共1次带看1个月以前发布
2636830.0山水华门岭秀苑联排别墅4室2厅223.1平米南 北精装20人关注共8次带看3个月以前发布

价格最低的5栋别墅

bieshu.sort_values('totalprice').head(5)
totalpricexiaoquhuxingmianjichaoxiangzhuangxiudiantiguanzhudaikanfabu
2312370.0江南文枢苑竹削馆叠拼别墅5室2厅211.98平米南 北毛坯31人关注共11次带看2个月以前发布
2804380.0江南文枢苑竹削馆叠拼别墅4室2厅214.96平米南 北其他8人关注共3次带看1个月以前发布
2500460.0瑞景文华叠拼别墅4室2厅184.6平米其他45人关注共6次带看4个月以前发布
1761500.0银城一方山叠拼别墅5室2厅163.37平米南 北精装0人关注共0次带看11天以前发布
60560.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)
totalpricexiaoquhuxingmianjichaoxiangzhuangxiudiantiguanzhudaikanfabu
13381220.0天正滨江花园4室2厅260.9平米南 北毛坯有电梯9人关注共38次带看9个月以前发布
13661220.0天正滨江花园4室2厅260.9平米南 北毛坯有电梯9人关注共38次带看9个月以前发布
24421200.0宋都美域锦园5室3厅183.4平米南 北其他有电梯3人关注共0次带看17天以前发布
16741160.0星雨华府4室2厅238.24平米南 北精装有电梯6人关注共1次带看14天以前发布
29951150.0锋尚国际公寓4室3厅279.8平米南 北精装有电梯16人关注共5次带看9个月以前发布
22781100.0仁恒江湾城三期4室2厅182.14平米南 北其他NaN2人关注共0次带看刚刚发布
20561100.0天正滨江花园5室2厅261.71平米南 北毛坯NaN0人关注共10次带看6个月以前发布
22861100.0仁恒江湾城三期4室2厅182.14平米南 北其他NaN2人关注共0次带看刚刚发布
17991058.0雅居乐花园5室2厅262.03平米东南其他有电梯2人关注共1次带看11天以前发布
21281000.0仁恒江湾城一期4室2厅176.62平米南 北精装有电梯20人关注共20次带看7个月以前发布

房价最低的10套二手房

house.sort_values('totalprice').head(10)
totalpricexiaoquhuxingmianjichaoxiangzhuangxiudiantiguanzhudaikanfabu
255265.0都市公社1室1厅40.15平米简装无电梯28人关注共0次带看1个月以前发布
200278.0天地新城天柱座1室1厅35平米精装有电梯8人关注共8次带看14天以前发布
144680.0宁港一村2室0厅39.94平米南 北简装NaN21人关注共7次带看2个月以前发布
143580.0宁港一村2室0厅39.94平米南 北简装NaN21人关注共7次带看2个月以前发布
207282.0丹佛小镇1室0厅34.87平米精装有电梯100人关注共10次带看9个月以前发布
206682.0丹佛小镇1室0厅34.87平米精装有电梯100人关注共10次带看9个月以前发布
178882.0万达紫金明珠1室0厅30.19平米精装有电梯183人关注共18次带看8个月以前发布
296483.0南方花园B组团1室1厅27.84平米东 西其他NaN6人关注共1次带看9天以前发布
233383.0托乐嘉单身公寓1室0厅34.06平米其他NaN18人关注共27次带看3个月以前发布
486.0万达紫金明珠1室1厅38.64平米简装NaN98人关注共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)
totalpricexiaoquhuxingmianjichaoxiangzhuangxiudiantiguanzhudaikanfabu
2359180.0凤凰西街223号2室2厅67.78南 北精装无电梯698共80次带看一年前发布
5190.0金陵村1室1厅42.49精装无电梯505共41次带看3个月以前发布
2475165.0水西门大街153号2室2厅70.25精装无电梯366共30次带看6个月以前发布
24420.0江南名府4室2厅145.07南 北精装无电梯355共76次带看4个月以前发布
2193112.0水关桥2室2厅45.69南 北其他无电梯347共79次带看4个月以前发布
2184112.0水关桥2室2厅45.69南 北其他无电梯347共79次带看4个月以前发布
2187180.0南方花园瑞阳居3室2厅61.40简装有电梯326共56次带看9个月以前发布
2201180.0南方花园瑞阳居3室2厅61.40简装有电梯326共56次带看9个月以前发布
652258.0百家湖国际花园3室2厅104.54西北精装有电梯325共157次带看5个月以前发布
1578260.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()
huxing1室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
万达紫金明珠11050500000000
东方龙湖湾00330200000000
东渡国际青年城00542300000000
东郊小镇第四街区00730510000010
丹佛小镇30071601000000

不同小区最多的户型

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
万达紫金明珠NaNNaN5.0NaN5.0NaN
东方龙湖湾NaN3.03.0NaNNaNNaN
东渡国际青年城NaN5.0NaNNaNNaNNaN
东郊小镇第四街区NaN7.0NaNNaNNaNNaN
丹佛小镇NaNNaN7.0NaNNaNNaN
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

png

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页