本篇文章利用爬到数据的进行数据分析。
在这篇文章中,用到pandas、seaborn、Matplotlib等工具,分析工具用到提琴图、箱型图、散点图等。
描述性分析
首先导入各种需要的库方便后续一切操作,并读取数据表,直接描述一下看看情况
- import numpy as np
- import pandas as pd
- import matplotlib.pyplot as plt
- import seaborn as sns
- import warnings
- # 这部分是超参数提前设置sns.set(style='darkgrid')
- plt.rcParams['font.family']='Arial Unicode MS'
- plt.rcParams['axes.unicode_minus']=False
- warnings.filterwarnings('ignore')
- data =pd.read_csv('链家新房100个.csv')
- data.describe()
最贵和最便宜
从上面输出表格可以看到初步结论如下:
这些二手房最小面积9.6平米,最大718平米,最便宜的56万,最贵的5200万。面积大概集中在59-102平,价格大概集中在325-630万,初步信息看完了有个印象,下边进行详细分析。
首先我对这个9.6平的房子很感兴趣,提取出来看看,但是运行下边代码看到,CBD核心区,别墅,9.64平,56W,估计是从厕所拆出来卖的。。
作罢。跳过他继续分析
- data.min()
而最贵的呢在鼓楼大街(二环边上)联排别墅,售价5200万。emmm
- data.max()
价格分布&面积分布粗看
现在我想直观的看一下售价分布,从下图可以看到,售价主要集中在1000万之内
- sns.distplot(data['钱'].dropna())
同样的思路看一下面积,可以看到这些二手房源面积主要集中在100平米左右
- sns.distplot(data['面积'].dropna())
此处其实也可以两张图一块看,代码如下:(都有点右偏)
- fig, ax =plt.subplots(1,2) #2个子区域
- sns.distplot(data['钱'],ax=ax[0])
- sns.distplot(data['面积'],ax=ax[1])
- plt.show()
那么合理的数据分别是什么呢?可以参考以下代码
- mean, std = data['钱'].mean() , data['钱'].std()
- # 得到上下限
- lower , upper =mean -3*std , mean+3*std
- print('均值',mean)
- print('标准差',std)
- print('下限',lower)
- print('上限',upper)
打印结果可以看到的是标准差集中在358万,合理上限是1613万。对现实的指导就是:如果有358万,买一套房子就够了,1613万以上的房买起来就是坑爹了。
均值 538.44
标准差 358.47
下限 -536.9763753150206
上限 1613.8755022458467
价格最低的20套
通过这段代码可以看一下这些房子分布在哪里。
结论见代码下截图,如果你对北京熟悉,可以看到,这些房子主要分布在5环外,部分在顺义、昌平、门头沟等地。
- t=data[['小区','地区','钱']].sort_values('钱')
- display(t.iloc[:20])
通过对装修状态做价格分布图可以看到,精装修的集中在400±100万左右,简装稍微便宜一丢丢,毛坯房二手很少,其他形式的很多,价格集中在300-500万左右
对装修状态进行楼房形式的拆解后做箱型图如上,得到结论是板楼、塔楼、板楼塔楼结合是最多的,不论是精装简装还是其他信息不明的装修状态的。
对建筑形式连同装修状态和价格关系可以看到,不论什么类型的建筑形式,都存在精装修、简装修、毛坯。板楼价格横跨100万-1000万之间,集中在300-600万之间,板楼塔楼结合的价格集中在350万-700万之间,塔楼集中在380-700万之间。
初步结论,如果能搞到300万以上,精装修的板楼或塔楼随便选。
但若没这么多钱,也可以有50-300万之间的选择,只是选项少一些,但并不是没有选择。
在这个初步结论基础上提问:我有xxx万,那么我能买到多少平的房子呢?
价格面积分析
先将面积分组,分组函数如下
- def value_to_level(area):
- if area >= 0 and area <=40:
- return '40内'
- elif area >= 41 and area <=60:
- return '41-60'
- elif area >= 61 and area <=80:
- return '61-80'
- elif area >= 81 and area <=130:
- return '81-110'
- elif area >= 81 and area <=130:
- return '111-130'
- elif area >= 131 and area <=180:
- return '131-180'
- elif area >= 181 and area <=250:
- return '181-250'
- else :
- return '250以上'
- level= data['面积'].apply(value_to_level)
- display(level.value_counts())
- sns.countplot(x=level , order=['40内','41-60','61-80','81-110','111-130','131-180','181-250','250以上'])
分组后作图如下:
面积主要集中在40-110平之间。
做一张散点图,表明价格、面积的分布,限定横坐标50-500万之间,纵坐标40-120平之间
- sns.scatterplot(data['钱'], data['面积'])
- plt.xlim(50,500)
- plt.ylim(40,120)
- plt.show()
所以,到这里,有大概多少钱,能买多少平的房子,一目了然。
其实可以看到:180万以上就有很多选择了。
如果只是想先买一套100万左右也有满足的情况
今天的分析就到这里。
希望对您带来帮助。