我报名参与金石方案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

运转成果部分展示如下所示:

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

接下来,核算出总价格与总面积

  • 使用分组聚合的方法
  • 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

运转成果如下图所示:

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

核算每个区域的均匀房租:

  • 总价格/总房子面积=均匀每平米租金
  • round()是会将数字保留有效个位数并趋向于最近的偶数
# 核算各个区域每平方米的房租
df_all["每平米租金(元)"] = round(df_all["房租总金额"] / df_all["总面积"], 2) # 保留两位小数
df_all

运转成果如下图所示:

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

兼并两列表:

  • 使用merge进行兼并列表
df_merge = pd.merge(new_df, df_all)
df_merge

运转成果如下图所示:

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

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

运转成果如下图所示:

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