链家北京租房数据分析
1、读取数据
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
data_dframe = pd.read_csv('链家北京租房数据.csv',header=0,encoding='gbk')
data_dframe
区域 | 小区名称 | 户型 | 面积(㎡) | 价格(元/月) | |
---|---|---|---|---|---|
0 | 东城 | 万国城MOMA | 1室0厅 | 59.11平米 | 10000 |
1 | 东城 | 北官厅胡同2号院 | 3室0厅 | 56.92平米 | 6000 |
2 | 东城 | 和平里三区 | 1室1厅 | 40.57平米 | 6900 |
3 | 东城 | 菊儿胡同 | 2室1厅 | 57.09平米 | 8000 |
4 | 东城 | 交道口北二条35号院 | 1室1厅 | 42.67平米 | 5500 |
… | … | … | … | … | … |
8218 | 顺义 | 怡馨家园 | 3室1厅 | 114.03平米 | 5500 |
8219 | 顺义 | 旭辉26街区 | 4房间2卫 | 59平米 | 5000 |
8220 | 顺义 | 前进花园玉兰苑 | 3室1厅 | 92.41平米 | 5800 |
8221 | 顺义 | 双裕小区 | 2室1厅 | 71.81平米 | 4200 |
8222 | 顺义 | 樱花园二区 | 1室1厅 | 35.43平米 | 2700 |
8223 rows × 5 columns
2、数据预处理
2.1 删除数据中的重复值和缺失值
data_dframe = data_dframe.dropna()#删除缺失值
data_dframe = data_dframe.drop_duplicates()#删除重复值
data_dframe
区域 | 小区名称 | 户型 | 面积(㎡) | 价格(元/月) | |
---|---|---|---|---|---|
0 | 东城 | 万国城MOMA | 1室0厅 | 59.11平米 | 10000 |
1 | 东城 | 北官厅胡同2号院 | 3室0厅 | 56.92平米 | 6000 |
2 | 东城 | 和平里三区 | 1室1厅 | 40.57平米 | 6900 |
3 | 东城 | 菊儿胡同 | 2室1厅 | 57.09平米 | 8000 |
4 | 东城 | 交道口北二条35号院 | 1室1厅 | 42.67平米 | 5500 |
… | … | … | … | … | … |
8218 | 顺义 | 怡馨家园 | 3室1厅 | 114.03平米 | 5500 |
8219 | 顺义 | 旭辉26街区 | 4房间2卫 | 59平米 | 5000 |
8220 | 顺义 | 前进花园玉兰苑 | 3室1厅 | 92.41平米 | 5800 |
8221 | 顺义 | 双裕小区 | 2室1厅 | 71.81平米 | 4200 |
8222 | 顺义 | 樱花园二区 | 1室1厅 | 35.43平米 | 2700 |
5773 rows × 5 columns
我们可以看到,现在的数据中,户型那一列不太规范,有4房间2卫、3室1厅这种,我们统一改成“x室x厅”格式
2.2 将“户型”一列统一调整为“x室x厅”格式
# 第一种改法
housetype=data_dframe['户型']
htlist=[]
# print(housetype)
for i in housetype:
new_info=i.replace('房间','室')
htlist.append(new_info)
data_dframe.loc[:,'户型']=htlist
htlist=[]
for i in housetype:
new_info=i.replace('卫','厅')
htlist.append(new_info)
data_dframe.loc[:,'户型']=htlist
data_dframe
# 第二种改法
data_dframe['户型'] = data_dframe['户型'].str.replace('房间','室')
data_dframe['户型'] = data_dframe['户型'].str.replace('卫','厅')
data_dframe
区域 | 小区名称 | 户型 | 面积(㎡) | 价格(元/月) | |
---|---|---|---|---|---|
0 | 东城 | 万国城MOMA | 1室0厅 | 59.11平米 | 10000 |
1 | 东城 | 北官厅胡同2号院 | 3室0厅 | 56.92平米 | 6000 |
2 | 东城 | 和平里三区 | 1室1厅 | 40.57平米 | 6900 |
3 | 东城 | 菊儿胡同 | 2室1厅 | 57.09平米 | 8000 |
4 | 东城 | 交道口北二条35号院 | 1室1厅 | 42.67平米 | 5500 |
… | … | … | … | … | … |
8218 | 顺义 | 怡馨家园 | 3室1厅 | 114.03平米 | 5500 |
8219 | 顺义 | 旭辉26街区 | 4室2厅 | 59平米 | 5000 |
8220 | 顺义 | 前进花园玉兰苑 | 3室1厅 | 92.41平米 | 5800 |
8221 | 顺义 | 双裕小区 | 2室1厅 | 71.81平米 | 4200 |
8222 | 顺义 | 樱花园二区 | 1室1厅 | 35.43平米 | 2700 |
5773 rows × 5 columns
2.3 将“面积”一列调整为数值格式
# 第一种方法
data_dframe['面积(㎡)'] = data_dframe['面积(㎡)'].str.replace('平米',' ')
data_dframe['面积(㎡)'] = data_dframe['面积(㎡)'].astype(dtype='float64'