【数据处理】北京市租房案例实战(3)

语言: CN / TW / HK

我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第8篇文章,点击查看活动详情

1. 引言

1.1 项目需求:

本节,我们继续完善北京市租房数据处理实战,数据集基本处理请参考本系列上篇文章:【数据处理】北京市租房案例实战(1) - 掘金 (juejin.cn)

本节将主要任务是对项目进行数据预处理,统一一下表格中某些列的表达方式,比如将“几房间”替换成“几室”,转换数据类型,方便后续进行数据处理。

2. 案例演示

2.1 户型表达方式替换

在“户型”一列中,大部分数据显示的是“室厅”,只有个别数据显示的是“房间”“卫”,为了方便后期的使用,需要将“房间”替换成“室”,以保证数据的一致性。

  • pandas.replace()方法可以完成替换数据的操作
  • 使用for循环遍历,对每个值进行替换并追加到新的空数组内
  • 将新的数组赋值给表格中的指定列,完成替换

获取数据集:

python file_data = pd.read_csv("链家北京租房数据.csv") file_data 原数据集大体内容展示如下:原数据集“户型那一列”表达方式不同意,需要进行替换。

image.png

```python

获取户型

house_data = file_data["户型"] temp_list = [] # 创建空列表

for i in house_data: # print(i) new_info = i.replace("房间", "室") # 将房间替换成室 temp_list.append(new_info) temp_list ``` 部分运行结果展示如下:

image.png

替换原表格数据:

```python

替换原表格

file_data.loc[:,"户型"] = temp_list file_data ``` 运行结果如下所示:可以看出,“户型”那一列已经被替换。

image.png

2.2 房源数量&位置分布分析

如果希望统计各个区域的房源数量,以及查看这些房屋的分布情况,则需要先获取各个区的房源,为了实现这个需求,可以将整个数据按照“区域”一列进行分组。

为了能够准确地看到各区域的房源数量,这里只需要展示“区域”和是“数量”这两列的数据即可。因此,先创建一个空的DataFrame对象,然后再将各个区域计算的总数量作为该对象的数据进行展示。 - 新建DataFrame - file_data["区域"].unique():筛选出区域,同样的区域保留一个 - DataFrame包含"区域和"数量"两列

python new_df = pd.DataFrame({"区域": file_data["区域"].unique(), "数量":[0]*13}) new_df 运行结果:运行结果部分展示

image.png

然后,我们使用分组聚合计数的方法,来统计每个区域的房源数量 - groupby(by="区域"):以原表格中“区域”这一列进行分组 - .count()将分组结果中的每组数据进行计数(每个类别有多少样本) ```python

获取每个区域房源数量

分组聚合 计数聚合

area_count = file_data.groupby(by="区域").count() ``` 接下来,为列赋值,将分组的结果赋值给刚才新建的DataFrame中的“数量”那一列

```python

为列赋值

new_df["数量"] = area_count.values new_df ``` 运行结果如下图所示:可以看出已经分组好了并添加到DataFrame中了,但是还没有排序。

image.png

对“数量”那一列进行排序: - 降序排列:ascending=False ```python

排序

降序排列

new_df.sort_values(by="数量", ascending=False) ``` 运行结果如下图所示:可以看出区域的房源量已经从大到小排序了。

image.png