北京二手房价|数据分析

一、报告背景:
根据某房价平台数据,通过数据分析,知晓各区二手房价状况。

二、目的:
报告目的:通过数据完成一份Python的二手房价分析报告。
分析目的:
1、找到影响二手房价的因素是:区域?房间数?大厅数?面积数?楼层?有无地铁?有无学区?谁的影响因素最大?如何排序?
2、寻找二手房低洼处投资。

三、基本信息:
数据来源:链接:https://pan.baidu.com/s/1dlFoncdPsQiZNfpsFKEjLg 提取码:u06i
编程平台:Jupyter notebook
图表精美:精简
北京地图:

四、代码解析:
(1)、数据基本情况

#导入库
import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
#读取数据
df=pd.read_csv(r"C:\Users\41174\Desktop\sndHsPr.csv")
#价格单位元转化成万元
df.price=df.price/10000
#数据分析开始3部曲

print(df.head())

print(df.info())

print(df.describe())

如图,dist是地区,roomnum是房间数,halls是大厅数,AREA是房间面积,floor是楼层高度,AREA是面积(单位平方米),subway是地铁(1代表有,0代表无),school是学校(1代表有,0代表无),price,代表价格(单位万元)



如图,dist和floor是字符串类型,其余都是数值型数据,同时没有脏数据和缺漏数据




如图,数据样本量:16210 。在没有通过图表发现数据的整体异常值时,先以平均数为基准看基本情况,但通过后面的分析会发现,存在许多异常值,所以专业分析需要看中位数。现在先分析基本平均信息:roomnum 2.1,大厅1.2,面积91.7,地铁0.83,学校0.3,房价6.1万/每平方米。通过基本平均信息可以知道,房间正常属于大众型刚需型,基本有地铁,但无学校。

根据《一出好戏》的3句经典台词分析:1、稀缺 2、消耗 3、希望。

地铁、房间等基本配置都属于消耗资源,不会产生杠杆或者增值价值,属于消耗品,属于保值或贬值品。但学校属于孩子和未来的希望,属于增值品,同时又稀缺,疯抢和增值空间明显增大,但随着移动互联网的教育资源兴起,和教育改革,该现象期待改变。

from scipy import stats
print(df.price.describe())
print('众数',stats.mode(df.price)[0][0])

如图,价格(单位万/每平方米)平均数6.1,中位数5.7,众数5。

dict1 = {
        u'chaoyang' : "朝阳",
        u'dongcheng' : "东城",
        u'fengtai' :  "丰台",
        u'haidian' : "海淀",
        u'shijingshan' : "石景山",
        u'xicheng': "西城"
        }
#将拼音转化成中文
df.dist=df.dist.apply(lambda x:dict1[x])
print(pd.concat([(df[df.price==min(df.price)]),(df[df.price==max(df.price)])]))

最高房价:西城3房,1厅,78平方米,低楼层,有地铁,无学区,价格15万每平方米。
最低房价:丰台2房,2厅,101平方米,高楼层,无地铁,无学区,价格,1.8万每平方米。

for i in range(7):
    if i !=3:
        print(df.columns.values[i],";")
        print(df[df.columns[i]].agg(['value_counts']).T)
        print("=======================================================================")
    else:
        continue
print("AREA:")

print(df.AREA.agg(['min','mean','median','max','std']).T)


如图:
房源:丰台区域房源最多2947套,石景山最少房源1947套。
房数:2房最多7971套,5房最少102套。
厅数:1厅最多11082套,3厅最少85套。
楼层:几乎相等。
地铁:有地铁13419套,没地铁2791套。
学校:有学校4913套,没学校11297套。(稀缺)
面积:最高299平方米,最低30平方米。
总结:学区房最稀缺。

(2)、图表基本情况

#解决中文乱码问题
plt.rcParams['font.sans-serif']=['SimHei']
sns.distplot(df.price,color='lightblue',bins=20,kde=True)
plt.xlabel("单位面积房价(万元/平方米)")
plt.ylabel("密度")
plt.title('房价密度直方图')
plt.show()

如图,直方图曲线图右侧有较多异常值,属于正偏或右偏正态曲线,不能使用平均值,需要使用中位数,房价中位数是5.7万每平方米。

(3)、盒须图

①、单因素分析

df.groupby('dist').median().price.sort_values(ascending=False)
df.boxplot(column='price',by='dist')
plt.show()

如图,显示各区价格盒须图,盒须图高低无序,通过什么方法让视图清晰可见,容易分析?

#显示各区中位数从高到低排序。
print(df.groupby('dist').median().price.sort_values(ascending=False))
df.dist=df.dist.astype('category')
#根据各区中位数排序,调整区域先后顺序。
df.dist.cat.set_categories(['西城','东城','海淀','朝阳','丰台','石景山'],inplace=True)
df.boxplot(column='price',by='dist')
plt.show()

如图,区域明显与价格成强相关。区域差异最大是西城与石景山,故后面分析时采用西城与石景山的分析。

print(df.groupby('roomnum').median().price.sort_values(ascending=False))
df.roomnum=df.roomnum.astype('object')
df.roomnum=df.roomnum.astype('category')
df.roomnum.cat.set_categories([4,1,5,3,2],inplace=True)
df.boxplot(column='price',by='roomnum')
plt.show()

如图,房间数与价格成弱相关。

print(df.groupby('halls').median().price.sort_index(ascending=False))
df.halls=df.halls.astype('category')
df.halls.cat.set_categories([0,1,2,3],inplace=True)
df.boxplot(column='price',by='halls')
plt.show()

如图,大厅数与价格成弱相关。

df.plot.scatter(x='price',y='AREA')
plt.show()

如图,面积与价格关系暂时无法确定。

print(df.groupby('floor').median().price.sort_index(ascending=False))
df.floor=df.floor.astype('category')
df.floor.cat.set_categories(['middle','low','high'],inplace=True)
df.boxplot(column='price',by='floor')
plt.show()

如图,楼层与价格成弱相关。

print(df.groupby('subway').median().price.sort_index(ascending=False))
df.subway=df.subway.astype('category')
df.subway.cat.set_categories([1,0],inplace=True)
df.boxplot(column='price',by='subway')
plt.show()

如图,地铁与价格成强相关。

print(df.groupby('school').median().price.sort_index(ascending=False))
df.school=df.school.astype('category')
df.school.cat.set_categories([1,0],inplace=True)
df.boxplot(column='price',by='school')
plt.show()

如图,学校与价格成强相关。

综上可知,区域、地铁、学校与价格关系密切,其余因素关系不密切,忽略不计。

②、双因素分析

print(df.groupby(['dist','school']).median().price.sort_index(ascending=False).unstack())
df.boxplot(column='price',by=['dist','school'],figsize=(12,6))
plt.show()

如图可知,
1、(西城,1)-(西城,0)>(西城,1)-(东城,1),可知学区因素>区域因素,分析其余情况基本类似。
2、(石景山,1)价格<(石景山,0),明显存在被低估的价格,很可能是潜力股,可以先调查后投资。

print(df.groupby(['school','subway']).median().price.sort_index(ascending=False).unstack())
df.boxplot(column='price',by=['school','subway'],figsize=(12,6))
plt.show()

如图可知,(1,1)-(1,0)<(1,1)-(0,1),因此学区因素>地铁因素。

print(df.groupby(['dist','subway']).median().price.sort_index(ascending=False).unstack())
df.boxplot(column='price',by=['dist','subway'],figsize=(12,6))
plt.show()

如图,(西城,1)-(西城,0)>(西城,1)-(东城,1),因此学区因素>区域因素。

③、多因素分析

print(df.groupby(['dist','school','subway']).median().price.sort_index(ascending=False).unstack())
df.boxplot(column='price',by=['dist','school','subway'],figsize=(20,10))
plt.xticks(rotation=90)
plt.show()

如图可知,(丰台,1,0)与(石景山,1,1)和(石景山,1,0)明显存在低估,可以先调查,然后投资。

综合如上分析可知:
1、单因素、双因素和多因素分析,可知学区因素>地区因素>地铁因素>其他因素。
2、(丰台,1,0)与(石景山,1,1)和(石景山,1,0)明显存在低估,可以先调查,然后投资。

五、完整代码

#导入库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns


#读取数据
df=pd.read_csv(r"C:\Users\41174\Desktop\sndHsPr.csv")
#价格单位元转化成万元
df.price=df.price/10000

#数据分析开始3部曲

print(df.head())

print(df.info())

print(df.describe())

from scipy import stats
print(df.price.describe())
print('众数',stats.mode(df.price)[0][0])

dict1 = {
        u'chaoyang' : "朝阳",
        u'dongcheng' : "东城",
        u'fengtai' :  "丰台",
        u'haidian' : "海淀",
        u'shijingshan' : "石景山",
        u'xicheng': "西城"
        }
#将拼音转化成中文
df.dist=df.dist.apply(lambda x:dict1[x])

print(pd.concat([(df[df.price==min(df.price)]),(df[df.price==max(df.price)])]))


for i in range(7):
    if i !=3:
        print(df.columns.values[i],";")
        print(df[df.columns[i]].agg(['value_counts']).T)
        print("=======================================================================")
    else:
        continue
print("AREA:")

print(df.AREA.agg(['min','mean','median','max','std']).T)

#解决中文乱码问题
plt.rcParams['font.sans-serif']=['SimHei']
sns.distplot(df.price,color='lightblue',bins=20,kde=True)
plt.xlabel("单位面积房价(万元/平方米)")
plt.ylabel("密度")
plt.title('房价密度直方图')
plt.show()

df.groupby('dist').median().price.sort_values(ascending=False)
df.boxplot(column='price',by='dist')
plt.show()

#显示各区中位数从高到低排序。
print(df.groupby('dist').median().price.sort_values(ascending=False))
df.dist=df.dist.astype('category')
#根据各区中位数排序,调整区域先后顺序。
df.dist.cat.set_categories(['西城','东城','海淀','朝阳','丰台','石景山'],inplace=True)
df.boxplot(column='price',by='dist')
plt.show()

print(df.groupby('roomnum').median().price.sort_values(ascending=False))
df.roomnum=df.roomnum.astype('object')
df.roomnum=df.roomnum.astype('category')
df.roomnum.cat.set_categories([4,1,5,3,2],inplace=True)
df.boxplot(column='price',by='roomnum')
plt.show()

print(df.groupby('halls').median().price.sort_index(ascending=False))
df.halls=df.halls.astype('category')
df.halls.cat.set_categories([0,1,2,3],inplace=True)
df.boxplot(column='price',by='halls')
plt.show()

df.plot.scatter(x='price',y='AREA')
plt.show()

print(df.groupby('floor').median().price.sort_index(ascending=False))
df.floor=df.floor.astype('category')
df.floor.cat.set_categories(['middle','low','high'],inplace=True)
df.boxplot(column='price',by='floor')
plt.show()

print(df.groupby('subway').median().price.sort_index(ascending=False))
df.subway=df.subway.astype('category')
df.subway.cat.set_categories([1,0],inplace=True)
df.boxplot(column='price',by='subway')
plt.show()

print(df.groupby('school').median().price.sort_index(ascending=False))
df.school=df.school.astype('category')
df.school.cat.set_categories([1,0],inplace=True)
df.boxplot(column='price',by='school')
plt.show()

print(df.groupby(['dist','school']).median().price.sort_index(ascending=False).unstack())
df.boxplot(column='price',by=['dist','school'],figsize=(12,6))
plt.show()

print(df.groupby(['school','subway']).median().price.sort_index(ascending=False).unstack())
df.boxplot(column='price',by=['school','subway'],figsize=(12,6))
plt.show()

print(df.groupby(['dist','subway']).median().price.sort_index(ascending=False).unstack())
df.boxplot(column='price',by=['dist','subway'],figsize=(12,6))
plt.show()

print(df.groupby(['dist','school','subway']).median().price.sort_index(ascending=False).unstack())
df.boxplot(column='price',by=['dist','school','subway'],figsize=(20,10))
plt.xticks(rotation=90)
plt.show()

六、备注
若有错误,还望指出,谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 首先看一则百度百科——气场。网页链接为:https://baike.baidu.com/item/%E6%B0%9...
    花匠豆爸阅读 610评论 0 2
  • ——陈怀恨 多年之后我这断线风筝 又回到那个小城 记忆中的模样全变了 最熟悉的西关和城里 却成了是最陌生的 那条独...
    怀恨同学阅读 184评论 0 2