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

1. 导言

1.1 任务要求:

本节,咱们持续完善北京市租房数据处理实战,数据集基本处理请参阅本系列文章:【数据处理】北京市租房案例实战(1) – ()。

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

2. 代码演示

2.1 户型数量剖析

从原数据表中查看户型数据,并赋值给新变量:

house_data = file_data["户型"]
house_data.head()

运转成果如下图所示:

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

接下来,咱们需求定义一个函数完成以下要求:

  • 函数任务主要便是去计算每种户型的数量
    1. 先对户型数据进行去重
    2. 计算每种户型的数量
    3. 将键值对写入字典
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

调用函数写入数据:

house_info = all_house(house_data)
house_info

运转成果如下图所示:

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

下面,咱们将筛选出户型数量大于50的数据

  • 从字典中筛选数据
  • 输出还是字典形式
# 去掉计算数量较少的值
# 筛选出大于50的数据
house_data = dict((key, value) for key, value in house_info.items() if value > 50) 

然后,将字典转为表格形式:

  • 运用pd.DataFrame写入数据
# 字典转为列表
show_houses = pd.DataFrame({"户型":[x for x in house_data.keys()], 
                "数量":[x for x in house_data.values()]})
show_houses

运转成果如下图所示:

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

2.2 户型数量可视化

咱们将要对刚才计算好的户型数量进行条形图绘制

  • plt.barh:横向的柱状图

  • plt.xlabel:增加x轴标签名称

  • plt.yticks:增加y轴刻度显现

    • range(11):11个刻度
    • house_type:刻度名称
  • plt.title:为图像增加名称

  • 前三行代码表示敞开支持中文显现

  • y+0.5,x-0.2:调节柱上数字显现位置

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()

运转成果如下图所示:

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