我报名参与金石计划1期挑战——分割10万奖池,这是我的第9篇文章,点击查看活动详情
1. 导言
1.1 任务要求:
本节,咱们持续完善北京市租房数据处理实战,数据集基本处理请参阅本系列文章:【数据处理】北京市租房案例实战(1) – ()。
本节的主要任务是对北京市租房数据中的户型数量进行剖析,跟着人们日子水平的提高,以及各住户的日子需求,开发商设计出了各式各样的户型供人们居住。接下来,咱们来剖析一下户型,计算租房市场中哪种户型的房源数量偏多,并筛选出数量大于50%的户型。
2. 代码演示
2.1 户型数量剖析
从原数据表中查看户型数据,并赋值给新变量:
house_data = file_data["户型"]
house_data.head()
运转成果如下图所示:
接下来,咱们需求定义一个函数完成以下要求:
- 函数任务主要便是去计算每种户型的数量
- 先对户型数据进行去重
- 计算每种户型的数量
- 将键值对写入字典
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
运转成果如下图所示:
下面,咱们将筛选出户型数量大于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
运转成果如下图所示:
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()
运转成果如下图所示: