项目分享目的:在学习完Numpy,Pandas,matplotlib后,熟练运用它们的最好方法就是实践并总结。在下面的分享中,我会将每一步进行分析与代码展示,

       希望能对大家有所帮助。

项目名称:链家二手房数据分析

项目概述:本项目主要利用上面提到的三个工具进行数据的处理,从不同的维度对北京各区二手房市场情况进行可视化分析,为后续

     数据挖掘建模预测房价打好基础。

数据链接:链接:https://pan.baidu.com/s/1v7MXARXxFdMmniyW7aNuAA  密码:kucd

 

分析步骤:工具库导入—>数据加载—>数据清洗—>数据可视化分析

 

导包

# 数据分析三剑客
import numpy as np
import seaborn as sns
import pandas as pd
from pandas import Series,DataFrame

import matplotlib.pyplot as plt
sns.set_style({\'font.sans-serif\':[\'simhei\',\'Arial\']})
%matplotlib inline
# 设置忽略警告
import warnings

warnings.filterwarnings(\'ignore\')
# 设置全局字体
plt.rcParams[\'font.sans-serif\'] = \'Songti SC\'
plt.rcParams[\'axes.unicode_minus\'] = False

数据载入

lj_data = pd.read_csv(\'./lianjia.csv\')

display(lj_data.head(),lj_data.shape)

查看数据概况

display(lj_data.info(),lj_data.describe())

\'\'\'
通过观察:
    1. Elevator列存在严重的数据缺失情况
    2. Size列最小值为2平米,最大值为1019平米,跟据常识,初步判断为异常值
\'\'\'

添加新属性房屋均价(PerPrice),并且重新排列列位置

\'\'\'
观察发现:
    1. ID属性对于本次分析没有什么意义,所以可以将其移除;
    2. 由于房屋单价分析起来比较方便,简单使用总价/面积即可得到,所以增加一列PerPrice(只用于分析,不是预测特征);
    3. 原数据属性的顺序比较杂乱,所以可以调整一下。
\'\'\'
# 添加 PerPrice(单位均价) 列
df = lj_data.copy()
df[\'PerPrice\'] = (lj_data[\'Price\']/lj_data[\'Size\']).round(2)

# 重新摆放列位置
columns = [\'Region\',\'District\',\'Garden\',\'Layout\',\'Floor\',\'Year\',\'Size\',\'Elevator\',
           \'Direction\',\'Renovation\',\'PerPrice\',\'Price\']
df = pd.DataFrame(df,columns = columns)

# 重新查看数据集
df.head(3)

 

数据可视化分析 

1. Region特征分析

对于区域特征,我们可以分析不同区域房价和数量的对比

# 对二手房区域分组,对比二手房数量和每平米房价

df_house_count = df.groupby(\'Region\')[\'Price\'].count().sort_values(ascending = False).to_frame().reset_index()
df_house_mean = df.groupby(\'Region\')[\'PerPrice\'].mean().sort_values(ascending = False).to_frame().reset_index()

# display(df_house_count.head(2),df_house_mean.head(2))

绘图

 1 # 创建子视图对象
 2 f,[ax1,ax2,ax3] = plt.subplots(3,1,figsize = (20,18))
 3 
 4 # 设置绘图参数
 5 sns.barplot(x=\'Region\',y=\'PerPrice\',palette=\'Blues_d\',data=df_house_mean,ax=ax1)
 6 ax1.set_title(\'北京各区二手房单位平米价格对比\',fontsize=15)
 7 ax1.set_xlabel(\'区域\')
 8 ax1.set_ylabel(\'单位平米价格\')
 9 
10 sns.barplot(x=\'Region\',y=\'Price\',palette=\'Greens_d\',data=df_house_count,ax=ax2)
11 ax2.set_title(\'北京各区二手房数量对比\',fontsize=15)
12 ax2.set_xlabel(\'区域\')
13 ax2.set_ylabel(\'数量\')
14 
15 sns.boxplot(x=\'Region\',y=\'Price\',data=df,ax=ax3)
16 ax3.set_title(\'北京各区二手房房屋总价\',fontsize=15)
17 ax3.set_xlabel(\'区域\')
18 ax3.set_ylabel(\'房屋总价\')
19 
20 # 展示
21 plt.show()

分析报告

  可以观察到:

  二手房均价:西城区房价最贵均价大约11万/平,因为西城在二环以里,且是热门学区房聚集地。
            其次是东城约10万/平,海淀约8.5万/平,其他均低于8万/平。

  二手房数量:从数量统计来看,可以看到目前二手房市场比较火热的区域。海淀和朝阳区二手房数量最多,
            差不多都接近3000套。然后是丰台区,近几年正在改造建设,有赶超之势。

  二手房总价:通过箱型图看到,各大区房屋总价中位数都在1000万以下,而且房屋总价离散值较高,
            西城最高达到了6000万,说明房屋价格不是理想的正态分布。

2. Size特征分析

# 创建子视图
f,[ax1,ax2] = plt.subplots(1,2,figsize=(15,5))

# 房屋面积分布情况
sns.distplot(df[\'Size\'],bins=20,ax=ax1,color=\'r\')
sns.kdeplot(df[\'Size\'],shade=True,ax=ax1)

# 房屋面积和出售价格的关系
sns.regplot(x=\'Size\',y=\'Price\',data=df,ax=ax2)

# 展示
plt.show()

注:下面
版权声明:本文为Rms-Blog原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Rms-Blog/p/13586891.html