还剩4页未读,继续阅读
文本内容:
6.2房产数据预处理与分析当今时代,房价问题一直处于风口浪尖,房价的上涨抑或下跌都牵动着整个社会的利益,即便是政府出台各种政策方针也只能是暂时抑制楼市的涨势,对于需要买房的人来说,除了关注这些变化和政策外,还有一个非常头疼的问题,在哪里买房,房价怎样普通客户会不停花大量精力逛链家、安居客等房地产网站,借助他们展示的内容进行筛选,但因地区众多,各个地段、房价差异的对比以及入手时机的把握,都得一个个去查阅与分析,非常麻烦如果可以通过数据的爬取,再按照用户希望的维度统计与分析,会让数据变得清晰明了本案例旨在对房产数据进行预处理与分析,为刚需购房者提供有用信息
一、数据源本案例利用某爬虫软件爬取某房产网站中苏州地区的房产数据,数据文件为house.xlsx,如图6-*所示A KALttWB iJUtMOTJn/m1,“卷6313”MV IrtWOm1201404»1P Mt大・iWllA/m1J.9/UhVH»14|.444”・tajiw公寓住它lOOOOO南平0UWI
1.90公宴住E Om^.4im«KA.K摩电人司收/蹲用人必E,匕Mttt WltkM1«»»*两%国育史长/中44*•大+犬十】1«4自—V矢K・施,心麻242M nVm1LSnjhVH ntM公*化七义打•员川*¥启用1”八;XMlo/m14446ml201泊y»「T央#/大11仄曾,城4-带AW9400000m12011H•31S4f Rn»“♦m公/修E201“/中・Aa》ih南乘RS;SJOOOO公离住七••»m1X野心图6-*数据源4tOOOO m,
二、目标
1.数据爬取时缺失数据是常见的现象,通过某爬取软件从网站爬取的数据时,如果没有爬取到的数据会返回“暂无数据二这会影响后期的空值处理,将这些“暂无数据”转换为空值,并统计各列的空值频数,查看缺失数据情况
2.数据爬取的数据往往是带有单位的字符串,这也会影响后期的数据分析,所以需要将这些数去掉单位,再转换为数值型数据如将字符串“均价”的4000元/n转换为数值40X0o
3.为了分析不同区的房产数据,从地址中提取出区的数据为了分析房龄的数据,从建造年代中提取出房龄数据
4.筛选出区为“工业园”,均价在5000以下,容积率在
1.5以下的房源数据
5.查询房价最贵小区的前5名
6.查询停车位最少小区的前5名
7.统计所有数据的平均房价以及二手房总和数量
8.分析均价40000以上小区中,房源最多是哪个区
三、步骤步骤1导入库,设置参数导入所需要的库pandas,利用pd.sel_oplion解除显示宽度的显示,设置数据对齐步骤1代码如下import pandasas pdpd.se_optiondisplay.widh.None pd.set_optiondisplay.unicode.east_asian_width\True步骤2导入数据并查看利用rcad_cxccl导入housc.xlsx housc.xlsx存放在c:\data路径中,将读入的数据命名为data查看data的行数、列数、列名以及数据的前5行步骤2代码如下data=pd.read.excelCci/data/house.xlsx print数据的行数=%d\n数据的列数=%d%data.shape[O],data.shape
[1]print数据的所有列名为:\n\data.columns print数据的前5行为:\n,data.head输出结果如图6-*所示Rurc♦62C:\Users\lil1ang\Anaconda3\python.exe C:/Users/liUang/PycharfiProJects/sjfx/6-
2.py或凫的行或=4效第的列H-16=5R密的所种列名为U IndeMr小区名称,地址,均价,,环比上月,物火费‘,’物业费ST.”.•总建面枳,•建造年代、’驿租军,•户停军使二’慷化军二・二手房房费依;•租房源nr,‘开发商,•物业公司」,・dtypes,object*»第的前5行为小区名裕地址均恰环比上月物业费物业英也总♦面哄建遗母代名取睾i0芳州唉花H工业园・双湖•高和珞,近it被密G6073元/X
43.14%6,31把/向/月别禁128590M2GM年
9.61新濯天城昊江■南第新城■长板BU号18211元*
0.21%
1.9x/mr/R公/住宅1000000m-2014年
2.320地江•生明具江出江电%南部新城中山南%近皮络20809x/m»,
0.96%
1.9元//月公惠住宅625194«-K£»«
2.41793便堆太翔城具江•太加新城•东太就大道8899号26478元/I』
1.23%
1.95t/E/月公寄住宅17933献2915年
1.24新创康思城墨箫・箫立关•长江第819号20936元/日t
1.71%
1.5x/nr/R公寓住宅500000m-289年1・55Process finished with exit code e图6-*步骤2输出结果步骤3数据空值处理将数据中的“暂无数据”改为空值,统计出现空值的列及其空值数量,并按降序排序步骤3代码如下import numpyas npdata=data.replace暂无数据:np.nan nun_result=data.isnull.sum nun_result=nun_result[nun_result0]nun_result=nun_result.sort_valuesascending=False print各列的空值数量为:\iT,nun_result输出结果如图6-*所不Run:62C:\Users\liliang\Anaconda3\python.exe C:/Users/liUang/PycharmProjects/sjfx/6-
2.py各列的空值热■为总建面枳125►t u二季唐唐源数55二*.造年代52容枳率51停车位48总户数48墀化率38开发商35租法源数33物业费29物业公司15dtype:int64图6・*步骤3输出结果步骤4数据单位处理将所有数据的单位去掉,并转换为数值型数据如将“均价”列中的单位去掉,并将剩下的数据转换为数值步骤4代码如下data「均价]=data「均价
1.str.replace元的2丁data「物业费]=data]物业费].str.replace元/rrV月data「总建面积,]=da匕「总建面积Istr.replaceCm data[总户数]=data/总户数[.str.replace户data「二手房房源数]=data「二手房房源数
1.str.replace套data]租房源数1=data「租房源数]str.replace套,”columnsjist=「均价,物业费总建面积停车位二手房房源数,租房源数]printdata.head forcolumn incolumnsjist:data[column]=data[col umn].astype float输出结果如图6-*所不Run:6-2「C:\Users\liliang\Anaconda3\python.exe C:/U$ers/UUang/PycharmProjects/sjfx/6-
2.py小区名称地址均价环比上月物业费物业类至总建面积建造年代容积率0苏州桃花源工业园-双湖-高和路,近星波街460734,
3.14%
6.31别#1285902014年।»51新濯天妹吴江-南部新城-长板路1号18211T
0.21X
1.9公寓住宅10000002的4年共2次地江南华府吴江-奥江老城,南部新城-中山南JS,近庞楠路
208094.
0.96%
1.9公寓住宅625194NaN
2.4“弄3出地太湖诚吴江-太湖新城-东太湖大道8899号26478J
1.23%
1.9公寓住宅1079332015年194新创理出域高新-浒及关-长江1S819号20936t
1.71%
1.5公寓住宅500000201坏1■float64Process finishedwith exitcode0图6-*步骤4输出结果步骤5添加新列1将“地址”列拆分为3个部分,第1个部分生成新列“区”2生成新列房龄”,“房龄”列计算公式为房龄=当前年份2020-建造年代步骤51代码如下data「区]=data「地址].str.split-,expand二True
[0]printdat皿地址,区川:5]输出结果如图6-*所不Run:6-2A个C:\Users\liliang\Anaconda3\python.exe C:/Users/liUang/PycharmProjects/sjfx/6-
2.py地址区0工业园-双湖-高和路,近星波街工业园=51昊江-南部新城-长板路1号昊江Ei2吴江-吴江老城,南部新城-中山南路,近庞格路吴江”.3吴江-太湖新城-东太湖大道8899号吴江:4高新-浒收关-长江路819号高新Process finishedwith exitcode0图6-*步骤5I输出结果步骤52代码如下data「房龄]=2020-data[建造年代]printdata[[健造年代;房龄,川:5]输出结果如图6-*所不Run:6-2A C:\Users\liliang\Anaconda3\python.exe C:/Users/liliang/PycharmProjects/sjfx/6-
2.py建造年代房龄
02014.
06.02s
512014.
06.0*2NaN NaN
32015.
05.
042010.
010.0Process finishedwith exitcode0图6-*步骤52输出结果步骤6数据筛选筛选出区为“工业园”,均价在50000以下,容积率在
1.5以下的房源数据步骤6代码如下dala.loc=data.loc[data[区]==工业园da【a「均价卜50000data「容积率卜
1.5]prinidala_kc[「小区名称:区?均价;容积率R输出结果如图6-*所示Run:-6-2-C:\Users\liliang\Andconda3\python.exe C:/Users/liliang/PycharmProjects/sjfx/6-
2.py小区名称区均价容税率0苏州模花源工业园
46073.0G.6=5158新城花园工业园
39061.
01.2“Process finishedwith exitcode0图6-*步骤6输出结果步骤7数据排序1按照“均价降序排序,并输出“小区名称”、区、“均价”的前5条数据2按照“停车位”升序排序,并输出“小区名称”、区、“停车位”的前5条数据步骤71代码如下sortl=data.sort_valuesby=均价:ascending二False sortl=soril[「小区名称,区,均价]][:5]prin sort1输出结果如图6-*所示Run:6-2个C:\Users\liliang\Anaconda3\python.exe C:/Users/liliang/PycharmProjects/sjfx/6-
2.py小区名称区均价112湖浜四季工业园
96139.0S!己129九龙仓国宾1号别鼓工业园
75209.0227和风灌致工业BB
72279.0»一216金鸡海花园工业园
71790.0175拙政别支平江
71561.0i Process finishedwith exitcode0步骤72代码如下sort2=dala.sort_valuesby=停车位,ascending=True sort2=sort2M小区名称,区,停车位川:5]printsort2输出结果如图7-*所示Run:6-
2.C:\Users\liliang\Anaconda3\python.exe C:/Users/liliang/PycharmProjects/sjfx/6-
2.py小区名称区停车位121姑苏院子金网
1.05s=556羽绒新村平江
10.043南环珞3-1号小区沧浪
10.0■67花滔苑三区常熟
20.0*;175妣政别女平江
28.0Process finishedwith exitcode0图6-*步骤7输出结果步骤8描述性统计分析D计算所有数据的平均房价、二手房总和2统计均价大于40000的数据中不同区的频数步骤81代码如下mean=data[均价]mean mean=roundmean,0sum=data[二手房房源数,].sum prim房屋总均价为=.mean print二手房总房源数=,sum输出结果如图6-*所不Run:6-2A.C:\Users\liliang\Anaconda3\python.exe C:/Users/liliang/PycharmProjects/sjfx/6-
2.py房屋总均价为«
27099.0,二手房总房源数»
18525.0S!三»”Process finishedwith exitcode0图6-*步骤81输出结果步骤82代码如下data_loc=data』oc[data[均价]40000]count=data_loc I*].val uc_countsasccndi ng=Falsc prinl均价40000以上小区的各区频数统计结果为:\n,count输出结果如图6-*所示Run:6-2入C:\Users\lilhng\Anaconda3\pylhon.exe C:/Users/liliang/PycharmProjects/sjfx/6-
2.py均价4000以上小区的各区筑败统计结果为工业区22=三高新3三金线2“餐平江1*沧浪1®Name:区,dtype:int64Processfinishedwithexitcode0图6-*步骤82输出结果
四、结论
1.工业园区中,均价为50000以下,容积率在
1.5以下的房源数据包括苏州桃花源、新城花园
2.房价最贵小区的前5名为湖滨四季、九龙仓国宾1号别墅、和风雅致、金鸡湖花园、拙政别墅
3.停车位最少小区的前5名为姑苏院子、羽绒新村、南环路3号小区、花溪苑三区、拙政别墅
4.平均房价为27099元,二手房总房源数为18525户
5.均价4000以上小区中,工业园区最多。