前言

数据来源于成都市公共数据开放平台。
数据集: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. OpenVINO + OpenCV实现点头与摇头识别验证
  2. 图像浏览软件_FastStone Image Viewer5.5版
  3. 独家 | 是什么让数据科学家从优秀变得伟大?
  4. java 获取文件所在的文件夹_【Java视频教程】day32-文件IO??
  5. 2016第七届蓝桥杯省赛C/C++ B组试题解析整理
  6. (精)【ACM刷题之路】POJ题目详细多角度分类及推荐题目
  7. Java 重写与重载
  8. linux系统 安卓系统安装教程,Linux系统下安装android sdk的方法步骤
  9. 源码安装php时出现configure: error: xml2-config not found. Please check your libxml2 installation...
  10. Linux 内核里的数据结构——基数树
  11. Python模块——matplotlib模块详解
  12. Web前端开发工具(编辑器)汇总
  13. 基于JAVA SSM框架的酒店客房管理系统设计
  14. matlab排队模型和排队系统仿真
  15. 【CSS】水滴动画|水滴融合效果
  16. 英语语法汇总(4.数量词)
  17. 微信小程序:页面路由
  18. 【大学生软件测试基础】三角形构成问题 - 决策表
  19. ORA-01034: ORACLE not available Process ID: 0 Session ID: 0 Serial number: 0
  20. 网页设计HTML个人笔记

热门文章

  1. 解决微信小程序开发vendor.js文件超过500kb问题
  2. 酒店数据集退订分析与预测
  3. 晨控带您了解RFID发展历史
  4. java优先队列二叉_二叉堆与Java中的优先队列
  5. CNNIC发布《第20次中国互联网络发展状况统计报告》
  6. 拒绝QQ空间-手把手教你美化博客
  7. 微软服务器延迟,Windows 10X开发进度严重落后:微软无限推迟Surface Neo
  8. 永磁同步电机高频方波电压注入法(V0)
  9. 清单革命这本书说了什么?
  10. Redis缓存机制(详解)