| 
                        副标题[/!--empirenews.page--]
                         数据初探 
首先导入要使用的科学计算包numpy,pandas,可视化matplotlib,seaborn,以及机器学习包sklearn。 
- import pandas as pd 
 - import numpy as np 
 - import seaborn as sns 
 - import matplotlib as mpl 
 -  
 - import matplotlib.pyplot as plt 
 - from IPython.display import display 
 - plt.style.use("fivethirtyeight") 
 - sns.set_style({'font.sans-serif':['simhei','Arial']}) 
 - %matplotlib inline 
 -  
 -  
 - # 检查Python版本 
 - from sys import version_info 
 - if version_info.major != 3: 
 -     raise Exception('请使用Python 3 来完成此项目') 
 
  
然后导入数据,并进行初步的观察,这些观察包括了解数据特征的缺失值,异常值,以及大概的描述性统计。 
- # 导入链家二手房数据 
 - lianjia_df = pd.read_csv('lianjia.csv') 
 - display(lianjia_df.head(n=2)) 
 
  
  
初步观察到一共有11个特征变量,Price 在这里是我们的目标变量,然后我们继续深入观察一下。 
- # 检查缺失值情况 
 - lianjia_df.info() 
 
  
   
发现了数据集一共有23677条数据,其中Elevator特征有明显的缺失值。 
- lianjia_df.describe() 
 
  
   
上面结果给出了特征值是数值的一些统计值,包括平均数,标准差,中位数,最小值,最大值,25%分位数,75%分位数。这些统计结果简单直接,对于初始了解一个特征好坏非常有用,比如我们观察到  Size 特征  的最大值为1019平米,最小值为2平米,那么我们就要思考这个在实际中是不是存在的,如果不存在没有意义,那么这个数据就是一个异常值,会严重影响模型的性能。 
当然,这只是初步观察,后续我们会用数据可视化来清晰的展示,并证实我们的猜测。 
- # 添加新特征房屋均价 
 - df = lianjia_df.copy() 
 - df['PerPrice'] = lianjia_df['Price']/lianjia_df['Size'] 
 -  
 - # 重新摆放列位置 
 - columns = ['Region', 'District', 'Garden', 'Layout', 'Floor', 'Year', 'Size', 'Elevator', 'Direction', 'Renovation', 'PerPrice', 'Price'] 
 - df = pd.DataFrame(df, columns = columns) 
 -  
 - # 重新审视数据集 
 - display(df.head(n=2) 
 
  
我们发现 Id 特征其实没有什么实际意义,所以将其移除。由于房屋单价分析起来比较方便,简单的使用总价/面积就可得到,所以增加一个新的特征  PerPrice(只用于分析,不是预测特征)。另外,特征的顺序也被调整了一下,看起来比较舒服。 
   
数据可视化分析 
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() 
 -  
 - f, [ax1,ax2,ax3] = plt.subplots(3,1,figsize=(20,15)) 
 - sns.barplot(x='Region', y='PerPrice', palette="Blues_d", data=df_house_mean, ax=ax1) 
 - ax1.set_title('北京各大区二手房每平米单价对比',fontsize=15) 
 - ax1.set_xlabel('区域') 
 - ax1.set_ylabel('每平米单价') 
 -  
 - sns.barplot(x='Region', y='Price', palette="Greens_d", data=df_house_count, ax=ax2) 
 - ax2.set_title('北京各大区二手房数量对比',fontsize=15) 
 - ax2.set_xlabel('区域') 
 - ax2.set_ylabel('数量') 
 -  
 - sns.boxplot(x='Region', y='Price', data=df, ax=ax3) 
 - ax3.set_title('北京各大区二手房房屋总价',fontsize=15) 
 - ax3.set_xlabel('区域') 
 - ax3.set_ylabel('房屋总价') 
 -  
 - plt.show() 
 
  
  
   
  
                                                (编辑:52站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |