前言

本项目主要是利用Python对语言链家二手房房源数据进行分析,通过数据可视化了解深圳的二手房源情况,对人们购房做出指导。分析过程主要围绕一下方面展开:项目背景、项目简介、项目流程(数据来源、分析目标、数据理解、数据可视化与分析)、项目总结。

一、项目背景

随着经济的发展,北、上、广、深这四大都市迅速发展,在经济、政治等方面有突出的表现,而且工作机会多,生活质量较高,是大多数人所向往的地方。但是要在这些城市定居是一件不容易的事情,这样来说购买二手房是一个可以选择的方案,说到这我们一定会想了解这些地区的房源大概情况。所以本项目是对深圳链家二手房房源进行的分析,希望可以帮助部分人解决购房问题,从多维度出发分析,帮助买家拿定主意,实现合理的购房!!

二、核心技术

Numpy、pandas、Matplotlib库的使用,数据清洗,数据可视化(也可用Tableau实现)

三、数据来源

数据来源于和鲸社区,附链接:
https://www.kesci.com/home/dataset/5e5e3effb8dfce002d7ed893

四、数据理解

深圳二手房房源信息:

  • 数据量级:18906条;
  • 数据说明:
    area:行政区(如:南山区)
    title:房源信息标题
    community:小区
    position:地段位置(如:万象城)
    tax:税率相关(如:房本满五年)
    total_price:总价,单位:万元
    unit_price:单价,单位:元/平米
    hourseType:户型(如:三室一厅)
    hourseSize:面积,单位:平米
    direction:房间朝向
    fitment:装修(如:精装,简装)

五、分析目的

1.了解圳二手房的大体情况,通过对不同行政区、不同户型、不同朝向、不同装修进行分析来了解
2.分析深圳二手房房价的影响因素有哪些?优质房源有哪些?
3.怎么选择合适的房源?

六、数据分析与可视化

(一)数据清洗

  1. 引入使用的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
#读取数据文件,查看数据的大体情况
df = pd.read_csv('./Python案例数据/shenzhen.csv')
df.head()

df.describe() # 查看数据列的数据 


2.房间大小有夸大的部分,经过查询发现房价与房源面积不符合客观事实,进行删除

#房间大小超过10000平米的数据
df[df['hourseSize']>10000]

df.drop(df[df['hourseSize']>1000].index,inplace=True)
df[df['hourseSize']>10000]   #确认是否正确删除


3.数据概览:

#查看每列的总数、数据类型
df.info()

发现title和tax列存在缺失数据,但这两列不是需要分析的列。其它列数据完整,不需要进行处理。

4. 重复值处理:

# 查看重复值
df[df.duplicated()]


数据清洗完成,开始数据分析。

(二)数据分析

1.了解圳二手房房源的整体情况(总体分析)
主要从四个方面出发利用matplotlib绘制饼图。
不同行政区、户型、朝向、装修与二手房房源数量的对比
数据处理:

# 不同行政区房源数量占比
area_house_count = df.groupby('area')['area'].count()
area_house_count.sort_values(ascending=False,inplace=True)  #按照降序排列
# area_house_count# 不同户型房源数量占比
hourseType_count = df.groupby('hourseType')['hourseType'].count()
hourseType_count.sort_values(ascending=False,inplace=True)  #按照降序排列
new_hourseType_count = hourseType_count[hourseType_count>700]
new_hourseType_count['其它'] = hourseType_count[hourseType_count<700].sum()
# new_hourseType_count# 不同朝向房源数量占比()
direction_count = df.groupby('direction')['direction'].count()
new_direction_count =direction_count[direction_count>800]
new_direction_count['其它'] = direction_count[direction_count<800].sum()
new_direction_count.sort_values(ascending=False)# 不同装修
fitment_count = df.groupby('fitment')['fitment'].count().sort_values(ascending=False)
fitment_count.sort_values(ascending=False,inplace=True)

绘图:

fig=plt.figure(figsize=(10,8),dpi=80)
ax1=fig.add_subplot(2,2,1)
plt.title("不同行政区房源数量占比情况")
area_house_count.plot.pie(shadow=True,autopct='%0.f%%',explode=[0.05,0.05,0.05,0.05,0,0,0,0],labeldistance=1.1,startangle=90)ax2=fig.add_subplot(2,2,2)
plt.title("不同户型房源数量占比情况")
new_hourseType_count.plot.pie(shadow=True,autopct='%0.f%%',explode=[0.05,0,0,0,0,0,0,0,0,0],labeldistance=1.1,startangle=90)ax3=fig.add_subplot(2,2,3)
plt.title("不同朝向房源数量占比情况")
new_direction_count.plot.pie(shadow=True,autopct='%0.f%%',explode=[0,0,0,0,0.05,0,0,0,0],labeldistance=1.1,startangle=90)ax4=fig.add_subplot(2,2,4)
plt.title("不同装修类型的占比情况")
fitment_count.plot.pie(shadow=True,autopct='%0.f%%',labeldistance=1.1,explode=[0.05,0,0,0],startangle=45)
plt.show()

结果如下图:


从以上图形我们可以看出:
(1)行政区房源数量,龙岗区、罗湖区、福田区、南山区的二手房房源数量占比为16%且最多,龙华区次之。看来大部分行政区的房源数量还是很充足的,差异最大的是坪山区二手房源数量最少只占了3%。
(2)深圳二手房房源户型类别多,3室2厅户型的数量最多,2室1厅次之。由此看出大众购房户型类别丰富多样,且以常见户型为主。
(3)从不同朝向房源数量占比了解到朝向为南的房源数量最多占所有朝向类型的32%,东南朝向房源数量也挺多占24%,相差不大;南北、西北等其它朝向数量较少。这两种朝向的房源数较多说明了大众买房还是比较喜欢朝南的方向,光线比较充足。
(4)深圳二手房的装修主要以精装和简装为主,精装占很大一部分54%。精装的房间能提高人们入住的舒适度。
总体分析来说提供了选择二手房的大方向。
2.影响深圳二手房源价格的因素分析
不同行政区对房价的影响:
总价:

# 不同区的总价对比
area_house_mean_totalprice = df.groupby('area')['total_price'].mean()
area_house_mean_totalprice.sort_values(ascending=False,inplace=True)
area_house_mean_totalprice


单价:

# 不同区的单价对比
area_house_mean_unitprice = df.groupby('area')['unit_price'].mean()
area_house_mean_unitprice.sort_values(ascending=False,inplace=True)
area_house_mean_unitprice


绘图:

fig = plt.figure(figsize=(15,5),dpi=80)
ax1 = fig.add_subplot(1,2,1)
plt.title("深圳不同地区总价对比")
plt.ylim([300,1100])  #设置y坐标轴的范围
rects = area_house_mean_totalprice.plot.bar(alpha=0.7,color='#1E90FF')
plt.grid(alpha=0.5,color='#DDA0DD',linestyle='--',axis='y')ax2 = fig.add_subplot(1,2,2)
plt.title("深圳不同地区单价对比")
plt.ylim([30000,100000])
area_house_mean_unitprice.plot.bar(alpha=0.7,color='#4876FF')
plt.grid(alpha=0.5,color='#DDA0DD',linestyle='--',axis='y')plt.show()

结果如下图:

从以上图形我们可以看出,南山区的单价和总价是是8个区中最高的,并且其二手房的总价比其他区的都要高200万左右,二手房单价比其他区的要高20000元左右。坪山区二手房的单价和总价都是最低的。
不同地段对房价的影响:

position_house_mean_price = df.groupby('position')['total_price'].mean()
position_house_mean_price.sort_values(ascending=False,inplace=True)#绘图  只展示排名前十的地段
plt.title("房价排名前十的地段")
position_house_mean_price.head(10).plot.barh(alpha=0.7,color=['#CD3700','#9ACD32','#7EC0EE','y','orange','#4876FF','#EEA9B8','#EE7942','#CD69C9','#668B8B'])
plt.grid(color='#DDA0DD',linestyle='--',alpha=0.5)
plt.show()

结果如下图:

由以上图形可知,排名前十的地段分别为:曦城、香蜜湖、红树湾、深圳湾、宝安中心、华侨城、百花、科技园、竹子林、蛇口,曦城的房价最高,前十的所有地段的二手房源总价都高于1200万元。可见要想住在好地段就得有雄厚的经济实力。
那么排名前十的地段分布在哪个行政区呢?(只分析排名前2的行政区)
南山区和宝安区,不同地段对房价的影响,排名前十的地段在这两区的分布情况

# 南山区的不同地段的均价对比
area_nanshan_price = df[df['area']=='南山区'].groupby('position')['total_price'].mean()
area_nanshan_price.sort_values(ascending=False,inplace=True)
#area_nanshan_price# 宝安区的不同地段的均价对比
area_baoan_price = df[df['area']=='宝安区'].groupby('position')['total_price'].mean()
area_baoan_price.sort_values(ascending=False,inplace=True)
#area_baoan_pricefig = plt.figure(figsize=(15,4),dpi=80)
ax1 = fig.add_subplot(1,2,1)
plt.title("南山区的房价对比")
area_nanshan_price.plot.barh(alpha=0.7,color=['#A4D3EE','y','#4876FF','#A4D3EE','#A4D3EE','#A4D3EE','#A4D3EE','#A4D3EE','#A4D3EE','#A4D3EE','#A4D3EE','#668B8B']) ax2 = fig.add_subplot(1,2,2)
plt.title("宝安区的房价对比")
area_baoan_price.plot.barh(alpha=0.7,color=['#CD3700','orange','#A4D3EE','#A4D3EE','#A4D3EE','#A4D3EE','#A4D3EE','#A4D3EE','#A4D3EE','#A4D3EE','#A4D3EE','#A4D3EE'])
plt.show() 

结果如下图:(我们将存在在前十的地段用相同的颜色做出了标注)

从以上图形可以看出:二手房房价排名前十的地段在南山区占了三个,在宝安区占了两个。宝安区的不同地段房价高低差异比较大,大部分房价都是在600万左右。
总价排名前十的小区

community_top10 = df.groupby('community')['total_price'].mean().sort_values(ascending=False).head(10)
plt.title("二手房均价(总价)排名前十的小区分析")
community_top10.plot.barh(alpha=0.7,width=0.7)
plt.show()

结果如下图:

以上图可以看出,二手房房源总价排名前十的小区都有哪些,可以通过这个作为选择小区的依据。

房屋朝向对价格的影响:

# 房屋朝向对价格的影响,只分析单价
direction_unit_price = df.groupby('direction')['unit_price'].mean().sort_values(ascending=False)
plt.figure(figsize=(15,5),dpi=80)
plt.title("房屋朝向对价格的影响")
direction_unit_price.plot.bar(alpha=0.7)
plt.grid(color='#DDA0DD',linestyle='--',alpha=0.5,axis='y')
plt.show()

结果如下图:

装修对价格的影响

fit_price = df.groupby('fitment')['unit_price'].mean().sort_values(ascending=False)
plt.title("不同装修和单价的关系")
plt.ylabel("单价(万元/每平方米)")
fit_price.plot.bar(color=['#FF7F50','#00E00D','#FFA500','#7B68EE'])
plt.show()

结果如下图:

由上图可以看出其它和精装的房源单价较高,但是总体来说相差不大。各种装修的价格没有太大的差异。

分析房屋大小与房价之间的关系

# 通过密度图和散点图来分析房屋特征
fig = plt.figure(figsize=(15,5))
ax1 = fig.add_subplot(1,2,1)
plt.title("房间大小分布密度分析")
df['hourseSize'].hist(bins=20,ax=ax1,color='#F4A460',density= True)  #直方图  desity=True显示频率,为False显示频数
df['hourseSize'].plot(kind='kde',style='--',ax=ax1)     #折线图 kind='kde'(是与直方图相关的密度图)
ax2 = fig.add_subplot(1,2,2)
plt.title("房间大小与房价关系分析")
plt.scatter(df['hourseSize'],df['total_price'],s=4)
plt.show()

结果如下图:

由上图知:
(1)房源面积主要集中分布在0-250平米之间,但是还有部分房间面积超出正常范围。总的来说比较稳定
(2)由散点图可以看出,随着房间面积增大,房间的总价在不断升高,面积和总价成正相关。 面积处在0-200之间的房源,总价在0-2000万元之间。
3.其它方面的分析
不同装修房间的平均面积

fit_average_size = df.groupby('fitment')['hourseSize'].mean().sort_values(ascending=False)
fit_average_size
plt.title("不同装修房间的平均面积")
# plt.ylable("面积(平米)")
fit_average_size .plot.bar(color=['#FF7F50','#00E00D','#FFA500','#7B68EE'])
plt.show()

结果如下图:
由上图可以看出毛坯房的面积最大,比其它三种装修类型的面积大50平米左右,其它三种装修类型的平均面积相差不大。
不同价格区间内的房源数量

bins_arr = np.arange(20,9000,500)
bins = pd.cut(df['total_price'],bins_arr)
totalprice_counts = df['total_price'].groupby(bins).count()plt.title("深圳不同总价区间内的二手房源数量分析")
plt.ylabel("二手房数量")
totalprice_counts.plot.barh(alpha=0.7,width=0.7)
plt.show()

结果如下图:


由上图可以看出,房价(总价)在(20,250]间的房源数量最多,(520,1020]房源数量次之,价格特别高的房很少。可以说房价处于正常范围内。
不同行政区的房价箱型图

由上图可见,南山区的房价均价最高,坪山区的最低。所有的行政区的均价都处于正常范围,但是宝安区的均价较高的房间数量最多。
总结:
房源数量最多的区有龙岗区、罗湖区、福田区、南山区,在这四个区中南山区宝安区、福田区的总价比较高都在700百万以上。对于想选择好地段、价钱差不多就行的人,推荐选择宝安中心的房源。因为宝安中心价格在排名前十的地段中位于第5,说明地段不错,房价在前十中不算很高,值得推荐。小区的选择可以参照二手房均价(总价)排名前十的小区,进行选择。房屋朝向推荐朝南,朝东南的方向。装修可以根据自己的喜好进行选择,优先选择精装,要想房间面积大可以选择毛坯房。房间面积主要集中在0-250平米之间,价格低于2000万元。
对于普通大众,可以考虑20-250万元的房源(在这里推荐坪山区)可能在地段的选择上可以不怎么考虑,但是房屋朝向,装修可供选择的种类还是挺多的。
个人感想 :
通过本次项目巩固了之前学习的python知识,加深了我对python三个库的理解,学会了怎么综合使用这三个库实现数据的可视化分析。有些分析部分还有待加强,希望后面我会多多实战,分享学习经验,慢慢进步,努力向数据分析师迈进!!

数据分析项目实战——链家深圳二手房房源数据分析相关推荐

  1. python数据分析项目实战—————链家北京租房数据统计分析

    链家北京租房数据分析 1.读取数据 import pandas as pd import matplotlib.pyplot as plt import numpy as npdata_dframe ...

  2. 爬虫+可视化——链家杭州二手房房源信息

    ------------本篇文章旨在练习数据的爬取及可视化 简介 本项目分两个部分: 1.爬虫:共爬取到链家杭州二手房信息30806条 2.可视化:主要用pyecharts 一.获取数据 提取杭州各个 ...

  3. python建筑案例_Python数据分析实战-链家北京二手房价分析

    前言 最近在自学Python,通过学习大家的分享案例,看到使用Python进行较多的主要4个方面:爬虫,数据处理,数据可视化以及机器学习建模.对我来说目标就是: 熟练使用numpy pandas 进行 ...

  4. 2020链家杭州二手房数据分析(截止到2020年09月07日)

    2020链家杭州二手房数据分析(截止到2020年09月07日) 1 项目背景 通过python爬去链家杭州二手房的数据,网址为:https://hz.lianjia.com/ershoufang/.可 ...

  5. python爬虫requests源码链家_python的爬虫项目(链家买二手房)

    不知不觉,已经工作6年有余,恍恍惚惚,有机会满足房子需求. 在收集房子信息过程中,做些记录. 贝壳的功能很强大,但很难满足小区.距离.教育.面积等多个方面的匹配,使用起来成本仍然较高. 针对以上情况, ...

  6. python爬取链家新房_Python爬虫实战:爬取链家网二手房数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 买房装修,是每个人都要经历的重要事情之一.相对于新房交易市场来说,如今的二手房交易市场一点也 ...

  7. python二手房使用教程_python实战:基于链家网二手房数据解析任务

    实战:基于链家网二手房数据解析任务 页面:https://bd.ke.com/ershoufang/ 获取如下信息: 标题 位置 房屋信息 关注人数 / 发布时间 房屋总价 房屋单价 备注信息 1.导 ...

  8. python爬取链家新房数据_Python爬虫实战:爬取链家网二手房数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 买房装修,是每个人都要经历的重要事情之一.相对于新房交易市场来说,如今的二手房交易市场一点也 ...

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

    分析链家网南京市二手房信息 链家网二手房数据的采集方法参见之前的博客:数据采集(四):用XPath爬取链家网房价数据 总共有3000条二手房信息记录. import pandas as pd impo ...

  10. 爬虫实战-链家北京房租数据

    爬虫实战-链家北京房租数据 本篇是对 恋习Python 发布的原创文章<北京房租大涨?6个维度,数万条数据帮你揭穿>中涉及的代码部分的解读. < 在复现原文代码时,出现了一些报错,在 ...

最新文章

  1. 不若鸿蒙的意思,任正非说鸿蒙媲美iOS不用三年,华为若出鸿蒙手机你会买吗?...
  2. java Math类中的pow方法的问题Math.pow(64,1/3)是1而不是4
  3. NHibernate学习(转)
  4. SAP CRM系统UI checkbox的设计与实现
  5. 成功跳槽百度工资从15K涨到28K,威力加强版
  6. SQL基础--同义词
  7. html label 两端对齐,如果实现表单的label文字两端对齐
  8. 第五章 列表、元组和字符串[DDT书本学习 小甲鱼]【8】
  9. class path resource [spring/] cannot be resolved to URL because it does not exist
  10. python3.5中文手册chm_python2.7中文手册.chm
  11. springboot学生在线考试管理系统
  12. 由QQ魔法卡看腾讯的运作模式
  13. AtCoder Beginner Contest 233(A~D)题解
  14. 基于C#.NET Remoting技术的全球文字聊天室
  15. 在c 语言里如何制作滑动图片大小,[教程]教你在微信小程序中实现手势缩放图片...
  16. jq ajax简单使用方法
  17. Office Visio Project 2016下载地址
  18. 阿里云+VMware会擦出怎样的火花?
  19. 如何将录音内容转换成文字呢?
  20. 并查集的一些个人观点 以及克鲁斯卡尔算法的详解

热门文章

  1. ajax 获取数据太慢,想写个加载中
  2. 【分立元件】电感器(inductor)——简介
  3. 最小环flody hdu6080
  4. 网渲显示服务器错误,【渲染服务】渲染失败的几种原因
  5. 人到中年,沉默寡言(深度好文)
  6. 一键调整PCB丝印,超级好用
  7. matlab构建boost电路,基于matlab的boost电路仿真.doc
  8. Django对接微信公众号以实现消息自动回复
  9. 51nod 1076 2条不相交的路径 无向图强联通分量 trajan算法
  10. java文字竖排_Java输出竖排文字