“这篇博客主要分享一个数据分析初级项目,基本概括了一个完整项目的各个分析阶段,但是数据获取是直接在链家官网爬取的,这部分先不分享了。过程中还有很多不足的地方,希望各位大佬多多指点。”

1.数据预处理
首先导入科学计算包

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib
import matplotlib.pyplot as pltfrom IPython.display import display
plt.style.use('fivethirtyeight')
sns.set_style({'font.sans-serif':['simhei','Arial']})
%matplotlib inline

读取数据,对数据进行初步观察,查看缺失值和异常值,并进行描述性统计

#导入数据,查看前三行
lianjia_df = pd.read_csv("C:\Jupyter_working_path\Projects\lianjia.csv")
display(lianjia_df.head(3))


初步观察到有11个特征变量,Price为目标变量

#检查缺失值情况

#检查缺失值情况
lianjia_df.info()


很明显Elevator特征有缺失值

#描述性统计

lianjia_df.describe()


可见,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(3))


2.特征分析
接下来对特征变量进行逐一分析
(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()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)ax2.set_title('北京各区二手房房屋总价',fontsize=15)ax2.set_xlabel('区域')ax2.set_ylabel('房屋总价')plt.savefig("C:\Jupyter_working_path\Projects\picture")


区域特征可视化过程直接采用seaborn来完成,颜色使用调色板palette参数,渐变,越浅表示越少。

可见: 1)二手房均价:西城区房价最贵大约11万/平,其次是东城大约10万/平,然后海淀区8.5万/平,其他地方均低于8万/平;
2)二手房数量:海淀区和朝阳区二手房数量最多,需求量也大。
3)二手房总价:各大区域总价中位数都在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.savefig("C:\Jupyter_working_path\Projects\pictures")


#探索Size和price的关系

通过regplot绘制size和price之间的散点图,发现size特征基本和price特征程线性关系,即房屋越大价格越贵。但有明显的异常点需要进一步观察:

df.loc[df['Size']<10]

df.loc[df['Size']>1000]

df=df[(df['Layout']!='叠拼别墅') & (df['Size']<1000)]

(3)Layout特征分析

f, ax1 = plt.subplots(figsize=(20,20))
sns.countplot(y='Layout', data = df, ax=ax1)
ax1.set_title('房屋户型',fontsize=15)
ax1.set_xlabel('数量')
ax1.set_ylabel('户型')
plt.savefig("C:\Jupyter_working_path\Projects\picture1")


可见2室1厅占绝大部分,其次是3室1厅,2室2厅,3室2厅。

(4)Renovation特征分析

df['Renovation'].value_counts()


#画幅设置

f,[ax1,ax2,ax3] = plt.subplots(1,3,figsize=(20,5))
sns.countplot(df['Renovation'],ax=ax1)
sns.barplot(x='Renovation',y='Price', data=df, ax=ax2)
sns.boxplot(x='Renovation',y='Price', data=df, ax=ax3)
plt.savefig("C:\Jupyter_working_path\Projects\picture3")

``

观察到,精装修的二手房数量最多,简装其次。毛坯类的价格最高,其次是精装。

(5)Elevator特征分析

查看缺失值

misn = len(df.loc[(df['Elevator'].isnull()),'Elevator'])
print('Elevator缺失值数量为:'+ str(misn))


这么多缺失值肯定不能直接移除,这里考虑填补法。
根据楼层来判断是否有电梯,一般楼层大于6的都有电梯,小于6就无电梯。

#由于存在个别类型错误,故需要移除
df['Elevator']=df.loc[(df['Elevator'] =='有电梯')|(df['Elevator'] =='无电梯'),'Elevator']
#填补缺失值
df.loc[(df['Floor']>6)&(df['Elevator'].isnull()), 'Elevator'] ='有电梯'
df.loc[(df['Floor']<=6)&(df['Elevator'].isnull()), 'Elevator'] ='无电梯'
f, [ax1,ax2] = plt.subplots(1,2,figsize=(20,10))
sns.countplot(df['Elevator'], ax=ax1)
ax1.set_title('有无电梯数量对比',fontsize=15)
ax1.set_xlabel('是否有电梯')
ax1.set_ylabel('数量')
sns.barplot(x='Elevator',y='Price', data=df, ax=ax2)
ax2.set_title('有无电梯房价对比',fontsize=15)
ax2.set_xlabel('是否有电梯')
ax2.set_ylabel('总价')
plt.show()


可见,有电梯的二手房更多,但是有电梯的二手房价格也高,这个很容易理解。
(5)Year特征分析

grid = sns.FacetGrid(df, row='Elevator', col='Renovation', palette='seismic', size=4)
grid.map(plt.scatter, 'Year', 'Price')
grid.add_legend()
plt.savefig("C:\Jupyter_working_path\Projects\picture6")


在Renovation和Elevator的分类条件下,使用FaceGrid分析Year特征,结果显示:
整个二手房房价趋势随着时间增长而增长;
2000年后建造的二手房价格比之前的明显上涨;
1980年前几乎没有电梯房数据,说明那个年代还没有普遍安装电梯

(6)Floor特征分析

f, ax1=plt.subplots(figsize=(20,5))
sns.countplot(x='Floor',data=df, ax=ax1)
ax1.set_title('房屋户型',fontsize=15)
ax1.set_xlabel('数量')
ax1.set_ylabel('户型')
plt.savefig("C:\Jupyter_working_path\Projects\picture8")


可见:6层二手房数量最多。根据中国的习俗,七上八下,所以显然7层比8层受欢迎;而且4层和18层一般不受欢迎。楼层特征影响因素众多故不一一分析。

本次先分享到这里,其实还可以深入对一些特征进行分析,通过这次学习更加锻炼了我的数据分析思维。特征工程是一件复杂的事情,后续还应努力学习。

[B4]链家二手房价格预测相关推荐

  1. Python二手房价格预测(二)——数据处理及数据可视化

    系列文章目录 数据获取部分:Python二手房价格预测(一)--数据获取 文章目录 系列文章目录 一.数据清洗 二.数据可视化 总结 一.数据清洗 1.先导入需要的库: import pandas a ...

  2. python分析链家二手房信息----数据分析实战(一)

    链家二手房信息 # 导入需要的库:科学计算包numpy, pandas 可视化包matplotlib, seaborn 机器学习包 sklearn import numpy as np import ...

  3. 【大作业项目】二手房价格预测 Python

    大家早上好,本人姓吴,大家也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我或者我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 其实一开始自己没怎么接触过数 ...

  4. 大数据信息资料采集:房产链家二手房新房源出售买卖交易信息采集

    在这里插入图片描述 大数据信息资料采集:房产链家二手房新房源出售买卖交易信息采集 数据采集满足多种业务场景:适合产品.运营.销售.数据分析.政府机关.电商从业者.学术研究等多种身份职业. 舆情监控:全 ...

  5. Python爬虫框架Scrapy入门(三)爬虫实战:爬取长沙链家二手房

    Item Pipeline介绍 Item对象是一个简单的容器,用于收集抓取到的数据,其提供了类似于字典(dictionary-like)的API,并具有用于声明可用字段的简单语法. Scrapy的It ...

  6. 北京链家二手房数据分析

    首先我们需要将链家二手房的数据抓取下来,用我们上课学的内容,很容易实现(bs4,re,urllib,搞定!): import re import csv from bs4 import Beautif ...

  7. python关于二手房的课程论文_基于python爬取链家二手房信息代码示例

    基本环境配置 python 3.6 pycharm requests parsel time 相关模块pip安装即可 确定目标网页数据 哦豁,这个价格..................看到都觉得脑阔 ...

  8. 武汉链家二手房数据分析

    爬取链家二手房武汉地区的成交数据,共23292条记录,利用Excel.MySQL.Power BI等工具对影响武汉二手房交易价格的因素进行了分析 分析思路 分析目的 武汉哪个区的二手房交易最多? 哪种 ...

  9. Python 爬取链家二手房,我在北京买房的经历

    本节所讲内容: 链家网站前期分析 利用requests爬取数据 爬取数据存储MongoDB(代码请看最后) 链家网站前期分析 今天我们主要对链家二手房数据爬取,看下我们目前的资金能买那一套.链家二手房 ...

最新文章

  1. 全网唯一一个可以复现成功的光流计算项目
  2. 可以考的python方面的证书-python有证书的加密解密实现方法
  3. 记录解决二次编码问题
  4. python 替换字符串
  5. Leetcode--695. 岛屿的最大面积
  6. 服务器导流板的作用,前保险杠下导流板的作用是什么?
  7. 高性能Javascript重绘和重排学习笔记
  8. Android沉浸式(侵入式)标题栏(状态栏)Status(三)
  9. MAC 外接键盘卡顿处理
  10. 微信小程序排坑:请选择含app.json / project.config.json的目录
  11. 注册页面提交验证-密保问题实现
  12. AprilTags图像识别定位实例
  13. Pandas 元素选取
  14. python干货:如何使用Python对音频进行特征提取?
  15. kaggle比赛记录——ieee_fraud_detection问题
  16. 利用注册表处理计算机故障骤,第七章WINDOWS注册表及其维护-江苏大学.ppt
  17. IC设计工程师的职业规划
  18. 引用类型属性自动注入-byName,byType,多个配置文件
  19. 夯实Java基础系列15:Java注解简介和最佳实践
  20. 《嵌入式Linux软硬件开发详解——基于S5PV210处理器》——2.5 WM8960音频编解码芯片...

热门文章

  1. windows10怎么重装系统|重装windows10步骤是怎样的
  2. 51Nod 1013-3的幂的和
  3. qcc304x笔记之ota升级(十)
  4. 序列到序列的网络seq2seq
  5. 【轻量级】轻量级网络结构总结
  6. 爱快软路由NAT-VMware-esxi-vsphere-虚拟机共享上网
  7. 西祠胡同社区彻底消失
  8. piix4_smbus SMBus Host Controller not enabled
  9. 巴布森商学院教授:CDO要在进攻和防守间找到平衡
  10. 原来这就是笔杆子公文写作常用句式