数据处理实战(三):让你的北京租房数据展现异彩
2023-09-29 06:00:55
1. 导言
1.1 项目需求:
本节,我们继续完善北京市租房数据处理实战,数据集基本处理请参考本系列上篇文章:【数据处理实战(二):巧用Python梳理你的北京租房数据】。
-
本节主要目标:
-
特征工程:
- 进一步探索数据集中可能存在的潜在关系,并利用Python强大的数据处理工具对数据进行特征工程,包括缺失值处理、数据类型转换、特征标准化等。
-
可视化分析:
- 将数据可视化,以帮助我们更直观地理解数据中的模式和趋势,并从中发现有价值的洞察。
-
模型构建:
- 基于处理后的数据,尝试建立一个简单的预测模型来预测租金价格,并评估模型的性能。
2. 特征工程
2.1 缺失值处理
在我们的数据集中,存在一些缺失值,我们需要对这些缺失值进行处理。对于数值型特征,我们可以使用平均值、中位数或众数等方法来填充缺失值;对于分类型特征,我们可以使用众数或缺失值编码等方法来填充缺失值。
import numpy as np
import pandas as pd
# 读取数据
df = pd.read_csv('beijing_rent.csv')
# 缺失值处理
df['rent'] = df['rent'].fillna(df['rent'].median())
df['area'] = df['area'].fillna(df['area'].mean())
df['room_num'] = df['room_num'].fillna(df['room_num'].mode()[0])
df['floor'] = df['floor'].fillna(df['floor'].median())
2.2 数据类型转换
在我们的数据集中,有些特征的数据类型不正确,我们需要对这些特征的数据类型进行转换。例如,我们将rent
特征的数据类型从object
转换为float
,将area
特征的数据类型从object
转换为int
。
df['rent'] = df['rent'].astype(float)
df['area'] = df['area'].astype(int)
2.3 特征标准化
在我们的数据集中,有些特征的取值范围差别很大,这可能会影响模型的性能。为了避免这种影响,我们需要对这些特征进行标准化。特征标准化的方法有很多种,我们这里使用最常用的StandardScaler
方法。
from sklearn.preprocessing import StandardScaler
# 特征标准化
scaler = StandardScaler()
df[['rent', 'area', 'room_num', 'floor']] = scaler.fit_transform(df[['rent', 'area', 'room_num', 'floor']])
3. 可视化分析
在对数据进行特征工程之后,我们可以对数据进行可视化分析。可视化分析可以帮助我们更直观地理解数据中的模式和趋势,并从中发现有价值的洞察。我们可以使用matplotlib
和seaborn
等库来进行数据可视化。
3.1 房租价格与地理位置的关系
我们可以通过散点图来可视化房租价格与地理位置的关系。
import matplotlib.pyplot as plt
# 房租价格与地理位置的关系
plt.scatter(df['longitude'], df['latitude'], c=df['rent'], cmap='jet')
plt.colorbar()
plt.xlabel('经度')
plt.ylabel('纬度')
plt.title('房租价格与地理位置的关系')
plt.show()
从散点图中,我们可以看出,房租价格与地理位置之间存在一定的相关性。房租价格较高的区域主要集中在市中心及其周边地区,而房租价格较低的区域则主要集中在郊区。
3.2 房租价格与房屋类型的关系
我们可以通过箱线图来可视化房租价格与房屋类型的关系。
import seaborn as sns
# 房租价格与房屋类型的关系
sns.boxplot(x='house_type', y='rent', data=df)
plt.xlabel('房屋类型')
plt.ylabel('房租价格')
plt.title('房租价格与房屋类型的关系')
plt.show()
从箱线图中,我们可以看出,不同房屋类型的房租价格存在一定的差异。公寓的房租价格最高,而平房的房租价格最低。
3.3 房租价格与房屋面积的关系
我们可以通过散点图来可视化房租价格与房屋面积的关系。
# 房租价格与房屋面积的关系
plt.scatter(df['area'], df['rent'])
plt.xlabel('房屋面积')
plt.ylabel('房租价格')
plt.title('房租价格与房屋面积的关系')
plt.show()
从散点图中,我们可以看出,房租价格与房屋面积之间存在一定的正相关关系。房屋面积越大的房屋,房租价格越高。
4. 模型构建
在对数据进行特征工程和可视化分析之后,我们可以尝试建立一个简单的预测模型来预测租金价格。这里,我们使用线性回归
模型来进行预测。
from sklearn.linear_model import LinearRegression
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(df[['area', 'room_num', 'floor']], df['rent'], test_size=0.2)
# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)
# 评估模型
score = model.score(X_test, y_test)
print('模型得分:', score)
# 预测租金价格
y_pred = model.predict(X_test)
# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print('均方误差:', mse)
从结果中,我们可以看出,模型的得分和均方误差都比较低,这说明模型的预测效果还是不错的。
5. 总结
在本文中,我们继续完善了北京市租房数据处理实战,对数据进行了特征工程、可视化分析和模型构建。通过这些步骤,我们对北京市租房市场有了更深入的了解,并建立了一个简单的模型来预测租金价格。希望本文对读者有所帮助。