《安家》热播,我用Python对北京房价进行了分析,结果……
关注统计与数据分析实战,带你飞
今天,让我们通过一个小案例快速了解一下数据分析的常规流程。
分析流程解析
分析背景
分析思路与方法
分析过程(及微观方法)
分析结论及建议
分析背景
现有一份北京二手房市场近几年交易情况的数据集,我们希望通过对数据集的分析对北京二手房市场相关信息有一个总体了解,能够为在北京买房做出一定的数据指导。
字段解析
id:交易编号
tradeTime:交易时间
followers:关注人数
totalPrice:总价
price:单价
square:面积
livingRoom:卧室数量
drawingRoom:客厅数量
kitchen:厨房数量
bathRoom:浴室数量
floor:楼层
buildingType:建筑类型
buildingStructure:建筑结构
ladderRatio:梯户比
elevator:有无电梯
fiveYearsProperty:是否满五年
subway:有无地铁
disrict:所在区域
communityAverage:小区均价
分析思路与方法
接下来,让我们根据以上数据集的维度,整理分析思路,看看哪些信息对我们在北京买房比较有帮助!
首先,需要了解“价格”信息,例如:
市场近几年的整体价格趋势是什么情况?
房源在不同价格区间的大致分布状态是什么样子的?
然后,可以看看“交易数量与热度”,例如:
通过不同时间的交易数量可以大致判断有没有明显的交易淡旺季?
通过关注人数可以了解哪些房源比较受欢迎,然后观察一下他们的价格及其他特征。
针对以上我们准备了解的信息,本次分析主要会使用描述性统计方法,然后对分析结果进行可视化展示。
常用分析方法解析
描述型分析:
最常见的分析方法,旨在告诉分析师“发生了什么”,提供了重要指标和业务的衡量方法,利用可视化工具,能够有效地增强描述型分析所提供的信息
诊断型分析:
通过评估描述型数据,诊断分析工具能够让分析师深入分析数据,钻取到数据核心,并诊断出“为什么会发生”
预测型分析:
通过预测模型,使用各种变量来进行预测,数据成员的多样化与预测结果密切相关,通过预测型分析可以知道“可能会发生什么”
指令型分析:
指令分析不单独使用,基于以上三种分析方法的完成,是在分析师已经了解“发生了什么”,“为什么会发生”以及“可能会发生什么”之后,通过分析来帮助业务决定“需要做些什么”
分析过程(及微观方法)
数据导入及整体信息查看:
首先,导入我们的“数分三剑客”,
import pandas as pd
import numpy as np
import matplotlib as plt
载入数据,
我们看到,给出了数据类型警告,方便起见,将以上几个字段全部定义为str,在处理过程中根据需要再进行修改,
df = pd.read_csv('./test_data/beijing_houst_price.csv',dtype={'id':'str', 'tradeTime':'str','livingRoom':'str','drawingRoom':'str','bathRoom':'str'})
查看一下数据的整体信息,
df.shape
df.head(10)
df.describe()
df.count()
大约32万条数据,19个字段
查看数据前10行,各字段信息如下
数值类列的常用统计值
查看各列非空值数量
常用统计值解析
count--计算每列中非空数值的数量
mean--返回每列的平均值
std--返回每列的标准差
min--返回每列的最小值
max--返回每列的最大值
(25%,50%,75%)--统计学四分位数,其中50%对应中位数
数据清洗及预处理:
每个编号对应一笔交易,看下是否有重复数据,
df[df['id'].duplicated()]
由于是横跨好几年的数据,有些年份可能数据会比较少,先看看每年数据的总量,确定一下是否需要删除数据少的年份,我们从时间维度对数据进行一次清洗,使用tradeTime字段,
先将字符串转为日期格式,方便提取
df['tradeTime'] = pd.to_datetime(df['tradeTime'])
# df.dtypes # 可以查看当前的数据类型
统计下每年的数据量
df['tradeTime'].dt.year.value_counts()
其中有几个年份数据量太少,我们在这里选择2012-2017年的数据比较合适
df.drop(df[df['tradeTime'].dt.year < 2012].index, inplace=True)
df.drop(df[df['tradeTime'].dt.year > 2017].index, inplace=True
接下来再看每年的数据量
好了,现在我们拿到了合适时间范围的数据。刚才在查看常用统计值时,我们看到在totalPrice和price两个字段中存在像0.1或者1这样不正常的值,接下来我们从价格维度再清洗一次数据,分别使用totalPrice,price和communityAverage三个字段,
根据四分位数的分布范围,在totalPrice字段中暂取小于50万和小于100万这两个范围先分别查看一下各自对应多少条数据,
df[df['totalPrice'] < 50]
df[df['totalPrice'] < 100]
总价小于50万
总价小于100万
根据我们刚才清洗后的样本数据量(约31万),这里可以直接删除总价在100万以下的数据了,然后同样的方法再用price字段进行一次清洗,这里选择删除单价在10000以下的数据,现在我们可以再看一下常用统计值,
df.drop(df[df['totalPrice'] < 100].index, inplace=True)
df.drop(df[df['price'] < 10000].index, inplace=True)
df.drop(df[df['communityAverage'].isnull()].index, inplace=True)
communityAverage最大值和最小值合理,不过有空值,大约只有400条数据,这里我们直接删掉(也可以选择填充),最后再看一下square列,值都在合理的范围内,并且也没有空值,现在,数据清洗就已经完成了,接下来可以开始分析。
数据分析(提取、筛选、汇总、统计):
我们回到最开始提出的几个问题,现在从数据中找到它们的答案。
市场近几年的整体价格趋势是什么情况?
从均价一般可以看出市场的整体水平,这里我们统计一下每日所有房源的平均单价,
数据可视化展示:
上图可以看出近几年北京房价的一个整体上涨趋势,其中有个别偏离度较大的极值,可能是房价受一些短期因素的影响或者当日成交房源的价格中有偏离度极大的值造成的,这里不用过多考虑。
常用统计图说明
线图:能够显示数据的趋势,反映事物的变化情况
散点图:判断变量之间是否存在数量关联趋势,展示分布规律
柱状图:绘制离散数据,能够一眼看出各个数据的大小,比较数据之间的差别
直方图:绘制连续性的数据,展示一组或者多组数据的分布状况
饼图:展示分类数据的占比情况
房源在不同价格区间的大致分布状态是什么样子?
通过之前对整体价格趋势的分析,可以看到在有些年份房价的涨幅非常明显,考虑到这一点,我们如果要看房源价格区间的分布,最好设定一个时间范围,这里我们选择以年为单位分别进行统计,下面以成交量最大的2016年为例,其他年份可以按照同样的方法进行类比,取出2016年的所有数据,我们以总价的最大值和最小值为整体范围,按50万的区间距离,先画一个粗略的直方图,
可以看到,总价在2000万以上的房子几乎都没有了,为了更好地表示区间分布情况,调整一下取值范围,在最小值到2000万的范围内重新统计,
好了,现在可以明显地看出来,在2016一整年里,250万到300万之间成交的房源数量是最多的。当然,这里价位区间的间距可以根据需要再放大或缩小,其他年份的统计方法以此类推,就不再赘述了。
判断一下有没有明显的交易淡旺季?
可以通过每个月的交易数量来判断一下交易淡旺季,然后我们把这几个年份放在一起进行下对比,看看有没有比较明显的规律。
上图反映了交易量随月份变化的情况,通过连续六年的对比,我们可以看出在大多数年份,3月左右房子交易会有一个小高峰,12月左右,交易量也有明显上升趋势。
哪些房源比较受欢迎,它们有什么特点?
考虑到时间因素的影响,房子价格等信息或许有较大变化,为了分析结果更加精细,我们还是取单一年份分别统计,这里以交易量最大的2016年为例。共有约9万条数据,因为还有很多关注人数为0的数据,预先查看后,这里取关注人数最多的前3%的数据,做一个样本集,我们看下这个样本集的房源价格、房子面积等属性呈现怎样的特征。
以上房源的关注人数都在百人以上,最高达1000人,我们看下这些房子都有什么特点?
上面两张图分别是这些房源的总价及单价分布情况,下面两张图分别是房源是否满5年和房源面积的占比情况。可以看出,这些最受欢迎的房源总价大多在200到300万之间,有7成左右都是满5年的,并且面积在30到90平米之间的居多。如果你打算在北京买房,这些房源可以考虑考虑哦。
分析结论及建议
最后我们来总结一下,看看数据说了些什么。市场的总体价格趋势是持续上涨,在16年有一个较大的增幅,17年略有回落;以16年为例,我们看到围绕200到300万这个范围房源是最多的;通过连续6年的对比,在3月和12月附近有较为明显的交易小高峰;最受欢迎的房源都在200-300万之间,和全部房源的数量分布情况十分吻合,并且这些受欢迎的房子多在30到90平米,大多数都是5年以上的房子。这个案例就不给大家分析意见了,如果一定说一条,那就是:好好挣钱!!!毕竟这些价格都已经是几年前的咯。
如果你已经看到了这里,非常感谢阅读,顺便收下我的膜拜,哈哈哈!
如果有机会在北京买了房,勿相忘哦!
记得点在看,么么哒~