当前位置:   article > 正文

利用Python进行King County房价数据分析_kc_house_data.csv

kc_house_data.csv
本次又从kaggle上淘来了  King County 的房价数据,结合近期学习的Python分析工具,对影响房价的可能因素进行分析。
  • 提出问题

随着国家对房产市场的宏观调控越来越严格,此前一路高歌猛进的房产市场也随之开始转冷,那么除了政策因素,还有哪些因素会影响房价呢?

本次我们以King County 的房价数据为参考依据,对房价可能存在的影响因素进行分析:

房价与环境配套有哪些关系?

分别从海滨区域、设施等级、房屋评级等级 进行分析(评级标准为当地自己的评级系统所产生,本次分析将直接引用);

房价与房间配置有哪些关系?

分别从卧室数、洗浴室数、楼层 进行分析;

房价与得房率的关系?

得房率=使用面积/建筑面积

由于2015年有房主自行翻修,可能存在扩大使用面积情况,故此处使用面积 2015年使用面积

房价与房龄的关系?

房龄=2015-建成时间

数据为2015年上传,故按照2015为时间起始点计算;

房屋实看数

房屋实看数=房屋被实际查看的数量;

房屋查看的数量一定程度上可反映出用户对于房价的接受程度;

 

  • 理解数据

由于下载的数据格式为CSV格式,故直接本地数据upload至Jupyter notebook;

  1. #读取CSV,均转为str格式数据,后期在进行其他格式数据转换
  2. import pandas as pd
  3. import numpy as np
  4. priceDf=pd.read_csv('kc_house_data.csv',dtype='object')
  5. #打印头5行查看数据
  6. priceDf.head()

 

  • 数据清洗

1)选择子集

  1. #选择子集
  2. subpriceDf=priceDf.loc[:,'id':'grade']

2)重命名列名

  1. #将需要使用的列名重新命名
  2. calNameDict={'date':'日期',
  3. 'price':'房价',
  4. 'bedrooms':'卧室数',
  5. 'bathrooms':'洗浴室数',
  6. 'sqft_living':'使用面积',
  7. 'sqft_lot':'建筑面积',
  8. 'floors':'楼层',
  9. 'waterfront':'海滨区',
  10. 'view':'实看数','grade':'房屋等级',
  11. 'yr_built':'建成年份',
  12. 'yr_renovated':'翻修年份',
  13. 'zipcode':'邮编',
  14. 'sqft_living15':'使用面积(2015)',
  15. 'condition':'条件设施',
  16. 'sqft_lot15':'建筑面积(2015)',
  17. 'id':'编号',
  18. 'sqft_above':'地上建筑面积',
  19. 'sqft_basement':'地下建筑面积',
  20. 'lat':'纬度',
  21. 'long':'经度'}
  22. priceDf.rename(columns=calNameDict,inplace=True)

3)缺失值处理(仅删除)

  1. #处理缺失值(本次仅做删除处理)
  2. priceDf=priceDf.dropna(subset=['卧室数','洗浴室数','楼层','海滨区','条件设施','房屋等级','使用面积(2015)','建筑面积(2015)','建成年份','实看数'],how='any')

4)数据类型转化

  1. #将数据中属于浮点型的数据进行转化
  2. priceDf['洗浴室数']=priceDf['洗浴室数'].astype('float')
  3. priceDf['lat']=priceDf['lat'].astype('float')
  4. priceDf['long']=priceDf['long'].astype('float')
  5. priceDf['使用面积(2015)']=priceDf['使用面积(2015)'].astype('float')
  6. priceDf['建筑面积(2015)']=priceDf['建筑面积(2015)'].astype('float')
  7. #打印出结果,查看是否更改彻底
  8. print(priceDf.dtypes)
  9. #将数据中日期的字符串形式转化
  10. priceDf.loc[:,'日期']=pd.to_datetime(priceDf.loc[:,'日期'],
  11. format='%Y-%m-%d',
  12. errors='coerce')

 

  • 构建模型

1)房价与环境配套的相关性

此处仅对'房价','海滨区','条件设施','房屋等级'进行展示,并查看其相关性;

  1. #去重
  2. kpi1_Df=priceDf.drop_duplicates(
  3. subset=['房价','海滨区','条件设施','房屋等级'])
  4. #结果按'房价'倒叙排列
  5. kpi1_Df=kpi1_Df.sort_values(by='房价',
  6. ascending=False)
  7. #重新命名编号列
  8. kpi1_Df=kpi1_Df.reset_index(drop=True)
  9. #打印出结果的前十行数据
  10. kpi1_Df.head(10)

2)房价与房间配置的相关性

方法与模型1)类似,此处不再赘述,详见代码;

  1. #去重
  2. kpi2_Df=priceDf.drop_duplicates(
  3. subset=['房价','卧室数','洗浴室数','楼层'])
  4. #结果按'房价'倒叙排列
  5. kpi2_Df=kpi2_Df.sort_values(by='房价',
  6. ascending=False)
  7. #重新命名编号列
  8. kpi2_Df=kpi2_Df.reset_index(drop=True)
  9. #打印出结果的前十行数据
  10. kpi2_Df.head(10)

3)得房率

  1. #统计建筑面积&使用面积之和(以2015年为基准)
  2. totalAreaF1=priceDf.loc[:,'建筑面积(2015)'].sum()
  3. totalAreaF2=priceDf.loc[:,'使用面积(2015)'].sum()
  4. kpi3_Df=totalAreaF2/totalAreaF1
  5. print('得房率=',kpi3_Df)

得房率= 0.15558283207827878;

4)房价与房龄的相关性

  1. #按照建成年代进行分组,并查看对应房价的平均值
  2. builtyrF=priceDf['房价'].groupby(priceDf['建成年份']).mean()
  3. #按金额倒叙排序,并限制展示前十房源
  4. builtyrF=builtyrF.sort_values(ascending=False)
  5. builtyrF.head(10)

5)房屋实看数

实际看房数一定程度上说明了用户的偏好情况;

  1. #按照实看数进行分组,并查看对应房价的平均值
  2. viewF=priceDf['房价'].groupby(priceDf['实看数']).mean()
  3. #按金额进行正序排序
  4. viewF=viewF.sort_values(ascending=False)
  5. viewF.head(10)

 

  • 小结

1)房价与环境配套的相关性

King County的高价房源都集中于海滨区域,且评分都较高,最高价高达7700000美金。

2)房价与房间配置的相关性

高价房源的建筑面积较高,其中价格前十的房源大部分拥有5-6个卧室或洗浴室,而楼层偏底层,大部分为2层建筑,猜测此部分房源可能为海滨区的别墅住宅;

房源价格与卧室数、洗浴室数以及建筑面积成正相关的关系。

3)得房率

整体得房率≈ 0.16,可用面积相对较低,体现该地区房源的占地面积较大,购买房源或可拥有大面积院落;

4)房价与房龄的相关性

房源价格前十的房龄,主要集中于两个区间:90年代初期与2015年(取数时间近期);

有历史的房源和新建成的房源,一定程度上可以卖的上好价钱。

5)房屋实看数

房源实看数最高为4次,此类房源的平均价格为1463711美金;

高房价房源的实看数均较高,看房行为并不能代表最终成交,具体成交数据还有待进一步挖掘。

 

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/333269
推荐阅读
相关标签
  

闽ICP备14008679号