我报名参与金石方案1期应战——分割10万奖池,这是我的第10篇文章,点击查看活动概况
1. 导言
1.1 任务描绘:
本节,咱们继续完善北京市租房数据处理实战,数据集基本处理请参考本系列文章:【数据处理】北京市租房事例实战(1) – ()。
- 数据集是有关于租房信息的揭露数据。
- 详细特征包括所属区域、小区称号、房子、价格、房子面积、户型等等。
本节主要任务是来分析一下各地区目前均匀租金状况,并进行数据可视化。简略概括如下:
- 核算总房子面积
- 核算总价格
- 使用 总价格/总房子面积=均匀每平米租金
- 兼并表
- 可视化
留意:本事例使用Jupyter Notebook进行事例演示
2. 代码演示
为了进一步剖析房子的状况,接下来,咱们来分析一下各地区目前均匀租金状况。
- 首先创立一个DataFrame
- 用于后续对其进行填充
- 将原表中的区域去重填入这个新的DataFrame
df_all = pd.DataFrame({"区域": file_data["区域"].unique(),
"房租总金额": [0]*13,
"总面积": [0]*13})
df_all
运转成果部分展示如下所示:
接下来,核算出总价格与总面积
- 使用分组聚合的方法
- groupby([file_data[“区域”]]):以区域进行分组
-
file_data["价格(元/月)"].groupby([file_data["区域"]])
:对file_data中”价格(元/月)”这列以区域进行分组 - .sum():核算每组的总和
sum_price = file_data["价格(元/月)"].groupby([file_data["区域"]]).sum()
sum_area = file_data["面积(㎡)"].groupby([file_data["区域"]]).sum()
为DataFrame赋值:
df_all["房租总金额"] = sum_price.values
df_all["总面积"] = sum_area.values
df_all
运转成果如下图所示:
核算每个区域的均匀房租:
- 总价格/总房子面积=均匀每平米租金
-
round()
是会将数字保留有效个位数并趋向于最近的偶数
# 核算各个区域每平方米的房租
df_all["每平米租金(元)"] = round(df_all["房租总金额"] / df_all["总面积"], 2) # 保留两位小数
df_all
运转成果如下图所示:
兼并两列表:
- 使用merge进行兼并列表
df_merge = pd.merge(new_df, df_all)
df_merge
运转成果如下图所示:
2.2 均匀租金可视化
- add_subplot(111):一行一列的画布中的第一张图
- enumerate多用于在for循环中得到计数,利用它能够同时获得索引和值,即需求index和value值的时候能够使用enumerate
- zip(l, price:该函数用于将多个可迭代目标作为参数,顺次将目标中对应的元素打包成一个个元组,然后回来由这些元组组成的目标。
# 图形可视化
num = df_merge["数量"]
price = df_merge["每平米租金(元)"]
ls = df_merge["区域"]
l = [i for i in range(13)] # 长度
fig = plt.figure(figsize=(18, 8), dpi=100)
# 显示折线图
ax1 = fig.add_subplot(111)
ax1.plot(l, price, "or-", label='价格')
for i, (_x, _y) in enumerate(zip(l, price)):
print( i, (_x, _y))
plt.text(_x+0.2, _y, price[i])
ax1.set_ylim([0,160]) # y坐标轴规模
ax1.set_ylabel("价格") # y轴标签
plt.legend(loc="upper") # 图例方位
# 显示条形图
ax2 = ax1.twinx()
plt.bar(l, num, label='数量',alpha=0.2, color="green") # alpha=0.2透明度
ax2.set_ylabel("数量")
plt.legend(loc="upper left")
plt.xticks(l,ls) # 修改x轴
plt.show()
运转成果如下图所示: