Python数据分析及可视化案例--2018成都市公共租赁住房家庭(个人)配租信息分析
前言
数据来源于成都市公共数据开放平台。
数据集: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
正文
- 导入数据
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()
可以看出,锦江区的租赁数量最高,高新区数量最少。和城区的产业结构有很大关系。如,高新区是以办公为主,所以住房小区数相对来说是最少的。
- 分析最受欢迎的小区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()
- 分析最受欢迎的户型
# 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()
- 按城区分组-最受欢迎的户型
# 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()
- 分析每个城区最受欢迎的户型–六张图
# 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()
这里只贴两张图:
- 分析每个城区最受欢迎的户型–一张图
# 一张图-按照城区单独分析最受欢迎的户型
#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张图-六城区总的房间大小分区统计
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()
- 分析租赁房按分组大小占比–条形图
# 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成都市公共租赁住房家庭(个人)配租信息分析相关推荐
- python数据分析可视化实例-Python数据分析与可视化从入门到精通
(1)没有高深理论,每章都以实例为主,读者参考书中源码运行,就能得到与书中一样的结果.(2)专注于Python数据分析与可视化操作中实际用到的技术.相比大而全的书籍资料,本书能让读者尽快上手,开始项目 ...
- python可视化数据分析-Python数据分析与可视化从入门到精通
(1)没有高深理论,每章都以实例为主,读者参考书中源码运行,就能得到与书中一样的结果.(2)专注于Python数据分析与可视化操作中实际用到的技术.相比大而全的书籍资料,本书能让读者尽快上手,开始项目 ...
- python数据分析与可视化清华大学_Python数据分析与可视化
讲解Python数据分析与可视化中的九大模块,内容全面详实: 提供11个课程实训和2个完整的项目案例,理论结合实践 : 赠送420分钟的教学视频及丰富的配套资源,便于教师教学. 超值赠送: 教学大纲. ...
- [转载] Python数据分析与可视化学习笔记(一)数据分析与可视化概述
参考链接: Python | 数据分析的数学运算 数据分析与可视化(一) 1.1 数据分析1.1.1 数据.信息与数据分析1.1.2数据分析与数据挖掘的区别1.1.3数据分析的流程 1.2 数据可视化 ...
- 【Python数据分析与可视化】Pandas统计分析-实训
[Python数据分析与可视化]Pandas统计分析-实训 文章目录 [Python数据分析与可视化]Pandas统计分析-实训 导包 读取数据 分析数据 1.查看数据的描述和统计信息: 2.修改列名 ...
- python数据分析与可视化【一】python基础实例
用python做数据分析与可视化(一) python编程基础 这一块前面我写过博客,奉上链接:python基础 这篇就来看看几个小实例 后面有python很基础的知识点和例子 后面数据分析能用上 下一 ...
- 【Python数据分析与可视化】期末复习笔记整理(不挂科)
[Python数据分析与可视化]期末复习笔记 1. 数据分析与可视化概述 对比 概念 常用工具 Python常用类库 Jupyter notebook中的常用快捷方式 2. Python编程基础 co ...
- Python数据分析-数据可视化(二)
欢迎大家访问个人博客:https://jmxgodlz.xyz 文章目录 前言 Matplotlib 折线图格式调整 标签 线条颜色 线条形状 折点样式 线条透明度 前言 看到有些论文插图十分简洁美观 ...
- Python数据分析与可视化学习笔记(一)数据分析与可视化概述
数据分析与可视化(一) 1.1 数据分析 1.1.1 数据.信息与数据分析 1.1.2数据分析与数据挖掘的区别 1.1.3数据分析的流程 1.2 数据可视化 1.3 数据分析与可视化常用工具 1.4 ...
最新文章
- modelsim-win64-10.1c的安装和基本使用
- LiveGBS-GB28181流媒体服务如何实现跨域鉴权
- [密码学] RSA同模攻击与选择密文攻击
- with dlz mysql 条件_Flask Bind-DLZ + Mysql DNS管理平台
- 我太难了!男子打赏女主播被骗9.6万,求助“好心人”再度被骗...
- 浏览器怪异模式和标准模式之间的区别 DTD
- 最前沿的容器技术有哪些?腾讯、华为、思科等 6 位顶尖专家为你解答!
- 蓝桥每日真题之完全平方数
- activity和service之间的相互通信方法
- 网卡bonding配置
- ubuntu 14.04 root破解
- vivadohlsdsp_FPGA硬件加速学习vivado hls-----------------卷积加速
- CA系统的加解扰与接收控制
- android测试基站,Android iPhone 手机查看基站信息
- Ubuntu 配置磁盘挂载到指定目录
- 【Proteus仿真】HC-SRF04超声波测距传感器数码管显示
- Androidadb驱动实现原理
- 用监控摄像机搭建视频直播系统的方式
- 自制51单片机烧不进代码各种原因
- 服务器连无线路由器视频教程,远程服务器路由器设置教程视频
热门文章
- 《JAVA编程思想》学习笔记:第19章(枚举)
- MySQL的Limit 性能差?真的不能再用了?
- hashMap线程安全
- 目录导航《100天精通Python丨快速入门到黑科技》
- Ubuntu搭建web服务
- xacro: Traditional processing is deprecated问题解决
- vue之 watch 监听数据变化 watch的使用、watch监听数据加载完成后执行、watch不触发、不生效的解决办法及原理
- 如何搭建团队知识库?试试这款开源项目
- 班级管理之常见“奖惩”方式
- 方舟手游怎么看最新服务器机柜销售,方舟生存进化PVX服务器怎么玩 PVX服务器规则一览...