前言

数据来源于成都市公共数据开放平台。
数据集:http://www.cddata.gov.cn/odweb/catalog/catalogDetail.htm?cata_id=fRa2EWB1EeeM9JrcteruXg434

通过分析该数据集,对成都市的租赁情况有一个基本了解,给需要租房的人们提供一定的参考。

运行环境:Jupyter Notebook
完整代码及数据集:
https://github.com/GYT0313/JupyterNotebook/tree/master/JupyterNotebook/matplotlib/data_visualization/shiyan/sheji2

正文

  1. 导入数据
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt# 设置中文显示
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False# load data
data = pd.read_excel("./k_fgj_ggzfzl_gr_1.xls")
data.head()

数据预览:

2. 重设索引
因为数据的行索引是中文,在处理中可能会比较麻烦,这里设置为英文索引。

# 重设索引
data.columns = ["name", "id", "partition", "infos", "location", "type", "size"]
columns = data.columns
data.head()


3. 分析各城区租赁数量分布

# 1. 分析各城区租赁信息
data_groupby_partition = data.groupby(columns[2])[columns].count()
partition_city_count = data_groupby_partition["name"]
# print(partition_city_count)
# print(partition_city_count.values)
# print(partition_city_count.index)# 饼图
# 距离圆心的距离-图上效果就是突出
explode = [0,0,0,0.1,0,0]
plt.figure(figsize=(6,6))
plt.pie(partition_city_count.values, explode=explode,labels=partition_city_count.index, autopct='%1.1f%%')
plt.title("成都市六大城区公共住房租赁数量统计")
plt.savefig("./成都市六大城区公共住房租赁数量统计-饼图.jpg")
plt.show()# 条形图
x = range(6)
plt.bar(x, partition_city_count.values)
for x,y in zip(range(6), partition_city_count.values):plt.text(x+0.05,y+0.05,'%d'%y, ha='center',va='bottom')
plt.title("成都市六大城区公共住房租赁数量统计")
plt.xticks(range(6), partition_city_count.index)
plt.savefig("./成都市六大城区公共住房租赁数量统计-条形图.jpg")
plt.show()



可以看出,锦江区的租赁数量最高,高新区数量最少。和城区的产业结构有很大关系。如,高新区是以办公为主,所以住房小区数相对来说是最少的。

  1. 分析最受欢迎的小区Top-15
# 2.分析最受欢迎的小区
data.groupby([columns[2], columns[3]])[columns[3]].count().sort_values(ascending=False)\
.head(15).sort_values().plot(kind='barh', figsize=(8,4))
plt.title("最受欢迎的小区Top-15")
plt.tight_layout()
plt.ylabel("城区/小区")
plt.xlabel("租赁数")
plt.savefig("./最受欢迎的小区Top-15.jpg")
plt.show()

  1. 分析最受欢迎的户型
# 3. 分析最受欢迎的户型
data.groupby(columns[5])[columns[5]].count().sort_values(ascending=False)\
.head(15).sort_values().plot(kind='barh', figsize=(8,4))
plt.title("最受欢迎的户型")
plt.tight_layout()
plt.ylabel("户型")
plt.xlabel("数量")
plt.savefig("./最受欢迎的户型.jpg")
plt.show()

  1. 按城区分组-最受欢迎的户型
# 3. 按城区分析最受欢迎的户型
data.groupby([columns[2], columns[5]])[columns[5]].count().sort_values(ascending=False)\
.head(15).sort_values().plot(kind='barh', figsize=(8,4))
plt.title("六城区最受欢迎的户型Top15")
plt.tight_layout()
plt.ylabel("城区/户型")
plt.xlabel("数量")
plt.savefig("./六城区最受欢迎的户型Top15.jpg")
plt.show()

  1. 分析每个城区最受欢迎的户型–六张图
# 6张图-按照城区单独分析最受欢迎的户型
#print(data.groupby([columns[2], columns[5]])[columns[2]].count().loc["成华区"])
partitions = pd.unique(data["partition"])# 遍历六个城区
for p,i in zip(partitions, range(6)):data.groupby([columns[2], columns[5]])[columns[2]].count().loc[p].sort_values()\.head(10).plot(kind='barh', figsize=(8,4))plt.title("{}最受欢迎的户型".format(p))plt.tight_layout()plt.ylabel("户型")plt.xlabel("数量")plt.savefig("./{}最受欢迎的户型Top15.jpg".format(p))plt.show()

这里只贴两张图:

  1. 分析每个城区最受欢迎的户型–一张图
# 一张图-按照城区单独分析最受欢迎的户型
#print(data.groupby([columns[2], columns[5]])[columns[2]].count().loc["成华区"])
partitions = pd.unique(data["partition"])
pf = plt.figure(figsize=(10,12), dpi=80)
# 设置标题
plt.title("各城区最受欢迎的户型\n", fontsize=18)
plt.xlabel("\n数量", fontsize=15)
plt.ylabel("户型\n\n\n\n\n", fontsize=15)
# 避免坐标重叠
plt.xticks([])
plt.yticks([])# 便利6个城区,并添加子图
for p,i in zip(partitions, range(6)):pf.add_subplot(3,2,i+1)data.groupby([columns[2], columns[5]])[columns[2]].count().loc[p].sort_values()\.head(10).plot(kind='barh', figsize=(10,10))plt.tight_layout()plt.title("{}".format(p))plt.ylabel("")pf.savefig("./各城区最受欢迎的户型Top10.jpg")
pf.show()

  1. 分析租赁房按分组大小占比–饼图
# 1张图-六城区总的房间大小分区统计
max = data["size"].max()
min = data["size"].min()
# 设置分组
limit = range(int(min-min%10), int(max+10), 10)
# 进行分组
size_limit_group = pd.cut(data["size"], limit, right=False)
# 分组后的计数
size_group_count = size_limit_group.value_counts()
# 是否需要取样、排序。。。
data_sort = size_limit_group.value_counts()#.sample(frac=1)#.sort_values()
# 按照大小间隔排序,避免重叠
# 如:1 2 3 4 5 6 7  ->  7 2 5 4 3 6 1
print(data_sort)
length = len(data_sort.values)
indexs = [str(x) for x in data_sort.index]
for i, j in zip(range(0, length, 2), range(length-1, 0, -2)):if j <= i:breakdata_sort.iloc[i],data_sort.iloc[j] = data_sort.iloc[j],data_sort.iloc[i]indexs[i], indexs[j] = indexs[j], indexs[i]data_sort = pd.Series(data_sort.values, index=indexs)
print(data_sort)# 绘图
plt.pie(data_sort.values, labels=[str(x) for x in data_sort.index],autopct='%1.1f%%')
plt.title("租赁房大小比例(m^2)")
plt.tight_layout()
plt.savefig("./租赁房大小比例(m^2).jpg")
plt.show()

  1. 分析租赁房按分组大小占比–条形图
# 6张图-六城区总的房间大小分区统计
max = data["size"].max()
min = data["size"].min()
limit = range(int(min-min%10), int(max+10), 10)# 按照城区分组
size_group_by_partition = data.groupby("partition")
# 每个城区的分组频数统计
partitions_limit_group = []
# 强转  --> [("高新区", DataFrame), ("锦江区", DataFrame), ...]
size_group_by_partition = list(size_group_by_partition)# 遍历统计
for partition_df in size_group_by_partition:partitions_limit_group.append(pd.cut(partition_df[1]["size"], limit, right=False).value_counts())# 绘图
pf = plt.figure(figsize=(10,8), dpi=80)
# 设置标题
plt.title("各城区租赁房大小分组统计\n", fontsize=18)
plt.xlabel("\n数量", fontsize=15)
plt.ylabel("分组\n\n\n\n", fontsize=15)
# 避免坐标重叠
plt.xticks([])
plt.yticks([])# 遍历6个城区,并添加子图
for p,i in zip(partitions_limit_group, range(6)):pf.add_subplot(3,2,i+1)p.sort_values().plot(kind='barh')plt.tight_layout()plt.title("{}".format(size_group_by_partition[i][0]))plt.ylabel("")
pf.savefig("./各城区租赁房大小统计.jpg")
pf.show()


最后这张图感觉可有可无,分组占比顺序几乎一样。。。

完!

Python数据分析及可视化案例--2018成都市公共租赁住房家庭(个人)配租信息分析相关推荐

  1. python数据分析可视化实例-Python数据分析与可视化从入门到精通

    (1)没有高深理论,每章都以实例为主,读者参考书中源码运行,就能得到与书中一样的结果.(2)专注于Python数据分析与可视化操作中实际用到的技术.相比大而全的书籍资料,本书能让读者尽快上手,开始项目 ...

  2. python可视化数据分析-Python数据分析与可视化从入门到精通

    (1)没有高深理论,每章都以实例为主,读者参考书中源码运行,就能得到与书中一样的结果.(2)专注于Python数据分析与可视化操作中实际用到的技术.相比大而全的书籍资料,本书能让读者尽快上手,开始项目 ...

  3. python数据分析与可视化清华大学_Python数据分析与可视化

    讲解Python数据分析与可视化中的九大模块,内容全面详实: 提供11个课程实训和2个完整的项目案例,理论结合实践 : 赠送420分钟的教学视频及丰富的配套资源,便于教师教学. 超值赠送: 教学大纲. ...

  4. [转载] Python数据分析与可视化学习笔记(一)数据分析与可视化概述

    参考链接: Python | 数据分析的数学运算 数据分析与可视化(一) 1.1 数据分析1.1.1 数据.信息与数据分析1.1.2数据分析与数据挖掘的区别1.1.3数据分析的流程 1.2 数据可视化 ...

  5. 【Python数据分析与可视化】Pandas统计分析-实训

    [Python数据分析与可视化]Pandas统计分析-实训 文章目录 [Python数据分析与可视化]Pandas统计分析-实训 导包 读取数据 分析数据 1.查看数据的描述和统计信息: 2.修改列名 ...

  6. python数据分析与可视化【一】python基础实例

    用python做数据分析与可视化(一) python编程基础 这一块前面我写过博客,奉上链接:python基础 这篇就来看看几个小实例 后面有python很基础的知识点和例子 后面数据分析能用上 下一 ...

  7. 【Python数据分析与可视化】期末复习笔记整理(不挂科)

    [Python数据分析与可视化]期末复习笔记 1. 数据分析与可视化概述 对比 概念 常用工具 Python常用类库 Jupyter notebook中的常用快捷方式 2. Python编程基础 co ...

  8. Python数据分析-数据可视化(二)

    欢迎大家访问个人博客:https://jmxgodlz.xyz 文章目录 前言 Matplotlib 折线图格式调整 标签 线条颜色 线条形状 折点样式 线条透明度 前言 看到有些论文插图十分简洁美观 ...

  9. Python数据分析与可视化学习笔记(一)数据分析与可视化概述

    数据分析与可视化(一) 1.1 数据分析 1.1.1 数据.信息与数据分析 1.1.2数据分析与数据挖掘的区别 1.1.3数据分析的流程 1.2 数据可视化 1.3 数据分析与可视化常用工具 1.4 ...

最新文章

  1. modelsim-win64-10.1c的安装和基本使用
  2. LiveGBS-GB28181流媒体服务如何实现跨域鉴权
  3. [密码学] RSA同模攻击与选择密文攻击
  4. with dlz mysql 条件_Flask Bind-DLZ + Mysql DNS管理平台
  5. 我太难了!男子打赏女主播被骗9.6万,求助“好心人”再度被骗...
  6. 浏览器怪异模式和标准模式之间的区别 DTD
  7. 最前沿的容器技术有哪些?腾讯、华为、思科等 6 位顶尖专家为你解答!
  8. 蓝桥每日真题之完全平方数
  9. activity和service之间的相互通信方法
  10. 网卡bonding配置
  11. ubuntu 14.04 root破解
  12. vivadohlsdsp_FPGA硬件加速学习vivado hls-----------------卷积加速
  13. CA系统的加解扰与接收控制
  14. android测试基站,Android iPhone 手机查看基站信息
  15. Ubuntu 配置磁盘挂载到指定目录
  16. 【Proteus仿真】HC-SRF04超声波测距传感器数码管显示
  17. Androidadb驱动实现原理
  18. 用监控摄像机搭建视频直播系统的方式
  19. 自制51单片机烧不进代码各种原因
  20. 服务器连无线路由器视频教程,远程服务器路由器设置教程视频

热门文章

  1. 《JAVA编程思想》学习笔记:第19章(枚举)
  2. MySQL的Limit 性能差?真的不能再用了?
  3. hashMap线程安全
  4. 目录导航《100天精通Python丨快速入门到黑科技》
  5. Ubuntu搭建web服务
  6. xacro: Traditional processing is deprecated问题解决
  7. vue之 watch 监听数据变化 watch的使用、watch监听数据加载完成后执行、watch不触发、不生效的解决办法及原理
  8. 如何搭建团队知识库?试试这款开源项目
  9. 班级管理之常见“奖惩”方式
  10. 方舟手游怎么看最新服务器机柜销售,方舟生存进化PVX服务器怎么玩 PVX服务器规则一览...