作为北漂中的一员,我们都明白,租房是不能回避的问题。租房被坑,也是难以避免的。多数人都有那么一段不堪回首的与黑中介面对面的往事。其实,就是贪图便宜。
便宜可以占,但是我们要理性地占便宜。要有全局观、大局观。
所以,爬取链家网的租房数据,一起来看一看,有哪些性价比高的房子。让我们用科学的手段来选择房子,拒绝黑中介,拒绝撞大运和异想天开。
数据源可至百度网盘提取,永久有效。
链接:https://pan.baidu.com/s/1EqfsnGlb63HeUlKlQfGEgg
提取码:i20b
本项目分为两部分,数据清洗、可视化探索。本文为第一部分,第二部分可前往查看。
链家网北京市租房数据python实战——可视化探索
以下是数据清洗的正文内容,大部分图是jupyter截图或导出图片。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.style.use('ggplot')
data = pd.read_csv('data_lianjia.csv', encoding='gbk', index_col=False)
data.head()
# 默认语言'gbk',另外要设置inex_col = False 默认原数据无行索引,不然会导致URL默认为行索引。
# 补充:header = False, 默认原数据无列索引。
了解一下数据的基本情况。共有3330条数据。
经纪人有33条缺失,其他字段无缺失。 对于经纪人的缺失,我们不做处理。
data.info()
data.duplicated().sum() # 本语句可以看到项目有396条重复值
data = data.drop_duplicates() # 移除重复数据
对于各字段做针对性处理。
# 更改部分字段列名,方便记忆
data.rename(columns={'房屋类型厅室': '户型', '房屋类型精装修': '装修'}, inplace=True)
# 区域,拆分为行政区、商圈、小区
data['行政区'] = data['区域'].apply(lambda x: x.split(' ')[0])
data['商圈'] = data['区域'].apply(lambda x: x.split(' ')[1])
data['小区'] = data['区域'].apply(lambda x: x.split(' ')[2])
# 户型
data['户型'] =data['户型'].str.replace('房间', '室')
data['户型'] = data['户型'].replace(['1室1卫', '2室1卫', '3室1卫', '1室0卫', '2室2卫', '3室2卫', '1室2卫', '5室2卫', '4室2卫'],
['1室0厅1卫', '2室0厅1卫', '3室0厅1卫', '1室0厅0卫', '2室0厅2卫', '3室0厅2卫', '1室0厅2卫', '5室0厅2卫', '4室0厅2卫'])
# 面积,房屋类型面积去掉单位,保留数字
data['面积'] = data['房屋类型面积'].str[:-1] # 面积拆分
# 装修
data['装修'] = data['装修'].str.replace('精装修', '精装')
data['装修'] = data['装修'].str.replace('#', '简装')
# 楼层,拆分为楼层位置、总楼层
data['楼层位置'] = data['楼层'].apply(lambda x: x.split('/')[0]) # 楼层拆分
data['总楼层'] = data['楼层'].apply(lambda x: x.split('/')[1]).str[:-1]
把部分字段的格式转换为 float 格式,楼层转换为 int 整数格式。并计算单价。
col = ['面积','租金', '押金', '服务费', '中介费']
data[col] = data[col].astype(float)
data['总楼层'] = data['总楼层'].astype(int)
data['单价'] = data['租金']/data['面积']
查看数据情况。
data.describe()
选择需要的字段(列)组成新的数据源,并重设索引
data_cleaned = data[['房源编号', '行政区', '商圈', '小区', '户型', '面积', '租金', '单价',
'装修', '朝向', '楼层位置', '总楼层', '电梯', '车位',
'用水', '用电', '燃气', '采暖', '经纪人']]
data_cleaned = data_cleaned.reset_index(drop=True) # 重设索引
data_cleaned.to_csv('data_cleaned.csv') # 导出清洗后的数据到新的csv
链家网爬取的数据是比较干净的,只需要做一些基础的处理即可。
下一部分我们开始可视化探索。