[B4]链家二手房价格预测
“这篇博客主要分享一个数据分析初级项目,基本概括了一个完整项目的各个分析阶段,但是数据获取是直接在链家官网爬取的,这部分先不分享了。过程中还有很多不足的地方,希望各位大佬多多指点。”
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]链家二手房价格预测相关推荐
- Python二手房价格预测(二)——数据处理及数据可视化
系列文章目录 数据获取部分:Python二手房价格预测(一)--数据获取 文章目录 系列文章目录 一.数据清洗 二.数据可视化 总结 一.数据清洗 1.先导入需要的库: import pandas a ...
- python分析链家二手房信息----数据分析实战(一)
链家二手房信息 # 导入需要的库:科学计算包numpy, pandas 可视化包matplotlib, seaborn 机器学习包 sklearn import numpy as np import ...
- 【大作业项目】二手房价格预测 Python
大家早上好,本人姓吴,大家也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我或者我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 其实一开始自己没怎么接触过数 ...
- 大数据信息资料采集:房产链家二手房新房源出售买卖交易信息采集
在这里插入图片描述 大数据信息资料采集:房产链家二手房新房源出售买卖交易信息采集 数据采集满足多种业务场景:适合产品.运营.销售.数据分析.政府机关.电商从业者.学术研究等多种身份职业. 舆情监控:全 ...
- Python爬虫框架Scrapy入门(三)爬虫实战:爬取长沙链家二手房
Item Pipeline介绍 Item对象是一个简单的容器,用于收集抓取到的数据,其提供了类似于字典(dictionary-like)的API,并具有用于声明可用字段的简单语法. Scrapy的It ...
- 北京链家二手房数据分析
首先我们需要将链家二手房的数据抓取下来,用我们上课学的内容,很容易实现(bs4,re,urllib,搞定!): import re import csv from bs4 import Beautif ...
- python关于二手房的课程论文_基于python爬取链家二手房信息代码示例
基本环境配置 python 3.6 pycharm requests parsel time 相关模块pip安装即可 确定目标网页数据 哦豁,这个价格..................看到都觉得脑阔 ...
- 武汉链家二手房数据分析
爬取链家二手房武汉地区的成交数据,共23292条记录,利用Excel.MySQL.Power BI等工具对影响武汉二手房交易价格的因素进行了分析 分析思路 分析目的 武汉哪个区的二手房交易最多? 哪种 ...
- Python 爬取链家二手房,我在北京买房的经历
本节所讲内容: 链家网站前期分析 利用requests爬取数据 爬取数据存储MongoDB(代码请看最后) 链家网站前期分析 今天我们主要对链家二手房数据爬取,看下我们目前的资金能买那一套.链家二手房 ...
最新文章
- 全网唯一一个可以复现成功的光流计算项目
- 可以考的python方面的证书-python有证书的加密解密实现方法
- 记录解决二次编码问题
- python 替换字符串
- Leetcode--695. 岛屿的最大面积
- 服务器导流板的作用,前保险杠下导流板的作用是什么?
- 高性能Javascript重绘和重排学习笔记
- Android沉浸式(侵入式)标题栏(状态栏)Status(三)
- MAC 外接键盘卡顿处理
- 微信小程序排坑:请选择含app.json / project.config.json的目录
- 注册页面提交验证-密保问题实现
- AprilTags图像识别定位实例
- Pandas 元素选取
- python干货:如何使用Python对音频进行特征提取?
- kaggle比赛记录——ieee_fraud_detection问题
- 利用注册表处理计算机故障骤,第七章WINDOWS注册表及其维护-江苏大学.ppt
- IC设计工程师的职业规划
- 引用类型属性自动注入-byName,byType,多个配置文件
- 夯实Java基础系列15:Java注解简介和最佳实践
- 《嵌入式Linux软硬件开发详解——基于S5PV210处理器》——2.5 WM8960音频编解码芯片...