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

语言: CN / TW / HK

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

1. 引言

1.1 任务要求:

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

本节的主要任务是对北京市租房数据中的户型数量进行分析,随着人们生活水平的提高,以及各住户的生活需求,开发商设计出了各种各样的户型供人们居住。接下来,我们来分析一下户型,统计租房市场中哪种户型的房源数量偏多,并筛选出数量大于50%的户型。

2. 代码演示

2.1 户型数量分析

从原数据表中查看户型数据,并赋值给新变量: python house_data = file_data["户型"] house_data.head() 运行结果如下图所示:

image.png

接下来,我们需要定义一个函数完成以下要求: - 函数任务主要就是去统计每种户型的数量 1. 先对户型数据进行去重 2. 统计每种户型的数量 3. 将键值对写入字典 ```python def all_house(arr): """ 统计每个户型有多少 构造键值对 """ # 去重处理 key = np.unique(arr) result = {} # 空字典

for k in key:
    mask = (arr == k)

    arr_new = arr[mask]
    v = arr_new.size
    result[k] = v

return result

``` 调用函数写入数据:

python house_info = all_house(house_data) house_info 运行结果如下图所示:

image.png

下面,我们将筛选出户型数量大于50的数据 - 从字典中筛选数据 - 输出还是字典形式 ```python

去掉统计数量较少的值

筛选出大于50的数据

house_data = dict((key, value) for key, value in house_info.items() if value > 50) ``` 然后,将字典转为表格形式: - 使用pd.DataFrame写入数据

```python

字典转为列表

show_houses = pd.DataFrame({"户型":[x for x in house_data.keys()], "数量":[x for x in house_data.values()]}) show_houses ``` 运行结果如下图所示:

image.png

2.2 户型数量可视化

我们将要对刚才统计好的户型数量进行条形图绘制 - plt.barh:横向的柱状图 - plt.xlabel:添加x轴标签名称 - plt.yticks:添加y轴刻度显示 - range(11):11个刻度 - house_type:刻度名称

  • plt.title:为图像添加名称
  • 前三行代码表示开启支持中文显示
  • y+0.5,x-0.2:调节柱上数字显示位置 ```python from matplotlib.font_manager import FontProperties myfont=FontProperties(fname=r'/usr/share/fonts/fangzheng/FZSYJW.TTF',size=12) sns.set(font=myfont.get_name())

图形展示:房屋类型

house_type = show_houses["户型"] house_type_num = show_houses["数量"] plt.barh(range(11), house_type_num) plt.yticks(range(11), house_type) plt.xlim(0,2500) plt.title("北京市各区租房数量统计")

plt.xlabel("数量") plt.ylabel("房屋类型")

给每个条上面添加具体数字

for x,y in enumerate(house_type_num): print(x,y) plt.text(y+0.5,x-0.2,"%s" %y) plt.show() ``` 运行结果如下图所示:

image.png