CDA数据分析师出品:米卡数据:真大后期制作:泽龙【攻略】今天我们来说说北京二手房市场现状-手房市场。数据给我看,今天我们来说说北京的二手房数据对于很多在一线城市奋斗的人来说,在大城市安家立业是他们的梦想。然而,一线城市天价的房价也让很多人望而却步。一转眼,2020年已经过去了一半。大家买房买房的愿望实现了吗?你的房子降价了吗?此前,大同财经的《我只有300万预算,能在上海买到什么样的房子?》分析了上海二手房的房价,引起了很多人的反响。那么首都的二手房市场究竟如何呢?本次我们使用Python来分析北京的二手房数据。我们使用Python获取了链家网北京16个区的二手房数据。首先导入要用到的数据处理包pandas,可视化工具pyecharts和plotly。`#导入所需包importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltimportosfrompyecharts.chartsimportPie,Map,Bar,Line,Grid,Pagefrompyechartsimportoptionsasoptsimportplotlyaspyimportplotly。graph_objsasgoimportplotly.expressaspx`_01_readinthedata使用循环读入数据集,然后进行去重处理。查看数据集的大小,可以看到去重后共有4403条数据。`#读取数据file_list=os.listdir('../data/')df_all=pd.DataFrame()forfileinfile_list:file_name=file.split('.')[0]df=pd.read_csv(f'../data/{file}')df['region_name']=file_namedf_all=df_all.append(df,ignore_index=True)去重df_all=df_all.drop_duplicates()print(df_all.shape)`(33509,9)预览以下数据:df\_all.head(2)_02_数据预处理我们提取并处理数据集的每一个特征,用于后续的数据分析。主要处理工作包括:title:不分析,删除detail_url:不分析,删除position:维度太细,删除houseInfo:提取房间、大厅、面积、朝向、装修、楼层(高、中、低)、建筑年份,platetowerfollowInfo:不分析,删除tag_info:提取是否靠近地铁total_price:提取房屋总价unitPrice:房屋单价region_name:无需处理`#删除列df_all=df_all.drop(['title','detail_url','position','followInfo'],axis=1)提取大厅df_all['halls']=df_all['houseInfo'].str.split('|').str[0].str.extract(r'(\d+)room')df_all['bedrooms']=df_all['houseInfo'].str.split('|').str[0].str.extract(r'\droom(\d+)hall')提取区域df_all['area']=df_all['houseInfo'].str.split('|').str[1].str.extract(r'(\d+.*\d+)sqm')提取方向df_all['orient']=df_all['houseInfo'].str.split('|').str[2]提取装修类型df_all['decorate_type']=df_all['houseInfo'].str.split('|').str[3]提取楼层df_all['floor']=df_all['houseInfo'].str.split('|').str[4]提取建筑年份df_all['built_year']=df_all['houseInfo'].str.split('|').str[5].str.extract(r'(\d+)')提取板df_all['banta']=df_all['houseInfo'].str.split('|').str[6]deletehouseInfodf_all=df_all.drop('houseInfo',axis=1)提取地铁df_all['subway']=[1if'subway'inielse0foriindf_all['tag_info']]deletetag_infodf_all=df_all.drop('tag_info',axis=1)提取总价df_all['total_price']=df_all['total_price'].str.extract(r'(\d+)')df_all['unitPrice']=df_all['unitPrice'].str.extract(r'(\d+)')空值-直接删除df_all=df_all.dropna()转换数据类型df_all['total_price']=df_all['total_price'].astype('int')df_all['unitPrice']=df_all['unitPrice'].astype('int')df_all['halls']=df_all['halls'].astype('int')df_all['bedrooms']=df_all['bedrooms'].astype('int')df_all['area']=df_all['area'].astype('float')df_all['built_year']=df_all['built_year'].astype('int')df_all['subway']=df_all['subway'].astype('int')df_all.head()`进一步处理楼层、建筑年份和房屋方向字段`deftransform_floor(x):ifx=='highfloor'orx=='topfloor'orx=='topstack':return'highfloor'elifx=='lowfloor'orx=='bottomfloor'orx=='Underfold'orx=='1stfloor'orx=='2ndfloor'orx=='3rdfloor':return'lowerfloor'elifx=='middlefloor'orx=='4thfloor'orx=='5thfloor'orx=='6thfloor':return'middlefloor'elifx=='basement':return'basement'else:#其他分类为高层return'highfloor'楼层泛化df_all['floor_type']=df_all['floor'].str.replace(r'\(.*?\)','').str.strip()df_all['floor_type']=df_all.floor_type.apply(transform_floor)df_all=df_all.drop('floor',axis=1)定向广义df_all['orient']=df_all['orient'].str.extract(r'([\u4e00-\u9fa5])')bulit_yeardf_all['built_year']=2020-df_all['built_year']banta-generalizationdf_all['banta']=df_all.banta.str.strip()df_all.head()`_03_数据探索与可视化下面只列出重点部分数据可视化分析代码:二手房价格走势图去年在北京。首先,我们可以看到过去一年北京二手房价格的走势图。我们可以看到有回调趋势。目前均价为每平方米57,589。.北京各区域二手房??挂牌数量那么北京各区域二手房??房源分布情况如何呢?据统计,朝阳区二手房数量遥遥领先,达到25648套,其次是丰台,共有11094套。随后,海淀、昌平、大兴紧随其后。北京不同区域的二手房均价是多少?不同地区的二手房价格如何?西城区一马当先,以每平方米11.498万元的价格领跑北京二手房市场。其次,东城区以每平方米97295套位居第二。海淀区以每平方米85,954的价格排名第三。代码如下:`#生成数据s_region=df_all.groupby('region_name')['unitPrice'].mean().sort_values(ascending=False)x_data=[i+'region'foriins_region.index.tolist()]y_data=[round(i)foriins_region.values.tolist()]data_pair=[list(z)forzinzip(x_data,y_data)]mapmap1=Map(init_opts=opts.InitOpts(width='1350px',height='750px'))map1.add('',data_pair,maptype='北京')map1.set_global_opts(title_opts=opts.TitleOpts(title='北京二手房均价北京不同区域(元/平方米))'),visualmap_opts=opts.VisualMapOpts(max_=114979))map1.render()barbar2=Bar(init_opts=opts.InitOpts(width='1350px',height='750px'))bar2.add_xaxis(x_data)bar2.add_yaxis('',y_data)bar2.set_global_opts(title_opts=opts.TitleOpts(title='北京不同区域二手房??均价(元/平方米))'),visualmap_opts=opts.VisualMapOpts(max_=114979))bar2.render()`北京的二手房价格是多少?那么在北京买一套二手房需要多少钱呢?然后我们分析了二手房的价格。从图中可以看出,总价在300万到500万之间,占比35.9%。5-800万占26.54%。300万以下的占19.54%。代码如下:`bins=[74,300,500,800,1000,8299]bins_label=['300万及以下','3-500万','5-800万','8-10million','1000万以上']新字段df_all['price_cut']=pd.cut(df_all['total_price'],bins=bins,labels=bins_label)price_num=df_all.price_cut.value_counts()数据对data_pair=[list(z)forzinzip(price_num.index.tolist(),price_num.values.tolist())]绘制饼图pie1=Pie(init_opts=opts.InitOpts(width='1350px',height='750px'))pie1.add('',data_pair=data_pair,radius=['30%','60%'],rosetype='radius')pie1.set_global_opts(title_opts=opts.TitleOpts(title='北京二手房在什么价位?'),legend_opts=opts.LegendOpts(orient='vertical',pos_top='15%',pos_left='2%'))pie1.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{d}%"))pie1.set_colors(['#FF7F0E','#1F77B4','#2CA02C','#D62728','#946C8B'])pie1.render()`北京二手房年限那么这些二手房的年限是多少?可以看出,20年以上的房屋最多,有10946套,占比33.73%,其次是15-20年的7835套,占比24.15%。5年以内只有1441套,占比4.44%。离地铁近与房子单价的关系一般来说,离地铁越近的房子,房价越高。从分布的箱线图可以看出,靠近地铁的房子单价高于不靠近地铁的房子。房子层高12317元/平方米。不同朝向的房屋数量分布从房屋的朝向来看,自然是朝南的最多,占68.97%。其次是东部,占比18.25%。不同房屋结构的数量分布在房屋结构中,板式建筑数量最多,占64.39%。其次是铁塔,占16.85%。板塔组合占16.45%。房屋面积与房价的关系从散点图可以看出,房屋面积与房价呈正相关关系,计算出的皮尔逊相关系数值为0.67,为强相关。代码如下:`#添加trackfig=px.scatter(df_all,x='area',y='total_price')fig.update_layout(title='房屋面积与房价的关系(万元)')py.offline.plot(fig,filename='房屋面积与房价的关系.html')`从分布的箱线图中可以看出卧室数量与房价的关系,卧室数量越多,面积越大,总房价越高。房价分布呈右偏态,异常值较多。客厅的数量与房子价格的关系客厅和卧室一样反映在房子的面积上。客厅的数量越多,房子的总价就越高。代码如下:`#Mergedf_all['halls']=[iifi<=4else'5andabove'foriindf_all['halls']]df_all['halls']=df_all.halls。astype('str')添加数据y1=df_all[df_all['halls']=='1']['total_price'].valuesy2=df_all[df_all['halls']=='2']['total_price'.valuesy3=df_all[df_all['halls']=='3']['total_price'].valuesy4=df_all[df_all['halls']=='4']['total_price'].valuesy5=df_all[df_all['halls']=='5及以上']['total_price'].values例子图fig=go.Figure()添加tracefig.add_trace(trace=go.Box(y=y1,name='1个大厅'))fig.add_trace(trace=go.Box(y=y2,name='2Hall'))fig.add_trace(trace=go.Box(y=y3,name='3Hall'))fig.add_trace(trace=go.Box(y=y4,name='4号馆'))fig.add_trace(trace=go.Box(y=y5,name='5号馆及以上'))配置项fig.update_layout(title='客厅数量与房价(万元)的关系')py.offline.plot(fig,filename='客厅数量与房价的关系.html')`t之间的关系装修类型和房屋单价不同装修类型的成本是不同的,从装修类型来看,精装房的单价最高,其次是简装和粗装。
