文章目录
前言
自学数据分析已经三个月了,就想着着手做一些相关的项目,恰好现在在深圳市,虽然这边的房价对我来说就是个天文数字,但是不妨我们拿来分析分析
一、数据获取
使用scrapy框架,编写网络爬虫代码,这里就选择58同城里面的数据进行爬取,总共爬取了6000多条二手房数据,将其导出为csv格式,以便进行后续的分析处理
二、 数据预处理
使用jupyter book对二手房数据进行后续的处理分析,首先看下数据整体信息
//导入相关库
import numpy as np
import pandas as pd
import re
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong']
data=pd.read_csv(r'C:\szfj\szhouse2.csv')//读取数据
data.info()//查看信息
查看下数据的前五行
data.head(5)
这里可以看到,我们爬取的数据包含7个特征:面积(area)、房屋朝向(direction)、所在市区(district)、单价(price)、居室数量(room)、地铁站距离(subway);总共爬取了6602套二手房数据,其中direction、floor、subway列中有缺失值。而area以及price列的数据也不是我们想要的数值类型,district列的市区拼音也要转换为汉字形式
1、缺失值处理:
direction和floor列的缺失值只有两个,我们直接做删除处理;而subway列的数据缺失值较多,分析原因,缺失值代表的应该
是该房屋没有相邻近的地铁站,这里我们做一下标记
data.dropna(subset=["direction","floor"],inplace=True)//删除缺失值
data["subway"].fillna("不靠近地铁站",inplace=True)//将subway缺失值标记为‘不靠近地铁站’
2、数据转换
将房屋面积以及房价转化为数值类型
data["area"]=data["area"].map(lambda x:float(re.match(('(\d+).*'),x).group(1)))//将面积转化为数值
data["price"]=data["price"].map(lambda x:float(re.match(('(\d+).*'),x).group(1)))//将平均价格转化为数值
将市区的拼音转化为汉字
district={
"luohu":"罗湖",'futian':'福田','longgang':'龙岗','nanshan':'南山','baoan':'宝安','buji':'布吉','yantian':'盐田'}
data['district']=data['district'].map(district)
三、数据探索
1、房价整体分析
首先对深圳市的整体房价进行处理,包括平均价格、中位数价格和价格分布:
price = data['price']
max_price = price.max()
min_price = price.min()
mean_price = price.