谁在崛起,谁在没落?新一线城市竞争力盘点,用Python绘制动态图带你看懂!
CDA数据分析师 出品
作者:Mika
数据:真达
后期:泽龙
【导读】今天我们用数据来聊一聊新一线城市。
Show me data,用数据说话
今天我们聊一聊 新一线城市
点击下方视频,先睹为快:
提到一线城市,大家马上会想到北上广深这四个超级大都市。除此之外,近年来新一线城市这个概念也越来越被大众所熟知。
2013年,财经媒体第一财经提出了提出“新一线城市”的概念,以商业资源集聚度、城市枢纽性、城市人活跃度、生活方式多样性以及未来可塑性作为评判的五大指标,针对全国几百个地级市进行了全新的排名,将未来最有潜力晋升传统一线城市的15个城市称为“新一线城市”。
作为距离一线城市最近的梯队,新一线城市的榜单可以说含金量十足,每年的评选都备受关注。
(来自维基百科)
2020年15座新一线城市包括成都、重庆、杭州、武汉、西安、天津、苏州、南京、郑州、长沙、东莞、沈阳、青岛、合肥、佛山。
(来自21世纪报道)
其中在人口增量方面:西安由于大幅降低落户门槛,且将西咸新区人口纳入人口总数后,在近3年以新增128.87万常住人口,排名15个新一线城市常住人口增量第一位。常住人口增量连年提升的杭州,则以近3年117.2万的增量,排名新一线城市第二位。
和它们相比,天津近3年以来出现常住人口-0.29万的增长,沈阳3年增长了3万,势头微弱。
那么这15座新一线城市
近20年来的GDP变化趋势如何?
人口竞争力如何排座次?
房价又是怎样的?
今天我们就来用数据全面解读这15座城市。
这次我们使用Python的动态可视化库plotly,对这15座城市从2000年到2019年这20年的GDP、人口以及房价数据进行了可视化。下面就让我们来一起看看吧!
我们的数据从以下四个维度展开:
- 新一线城市2000-2019年GDP变化趋势
- 新一线城市2000-2019年GDP和人口变化趋势
- 新一线城市2001-2019年人口增量数据
- 新一线城市近10年平均房价走势图
01 数据获取
我们使用Python的可视化库Plotly对15座新一线城市的人口/GDP/房价数据进行动态可视化展示。plotly是一个基于javascript的绘图库,绘图种类丰富,效果美观,使用Plotly可以画出很多媲美Tableau的高质量图。
如果你没有安装plotly,可以使用以下代码进行pip安装:
pip install plotly -i https://pypi.tuna.tsinghua.edu.cn/simple
首先导入我们需要使用的包,其中pandas用于数据整理,plotly用于数据可视化。
# 导入包
import pandas as pd
import plotly as py
import plotly.graph_objs as go
import plotly.express as px
from plotly import tools
使用pandas读入并合并数据集,我们选取的数据来自于国家统计局网站,该数据包含了15座新一线城市自2000年~2019年20年期间的GDP和人口数据,这是一份带有时间序列的面板数据,适合进行动态可视化绘图使用。
# 读入数据
df_gdp = pd.read_excel('../data/新一线城市人口和GDP.xlsx', sheet_name=0)
df_pop = pd.read_excel('../data/新一线城市人口和GDP.xlsx', sheet_name=1)
# 合并数据
df_all = pd.merge(left=df_gdp, right=df_pop, on=['城市', '年份'])
df_all = df_all.sort_values(['城市','年份'])
df_all.head()
02 数据可视化
Plotly有两个很常用的绘图模块,分别是graph_objs和express,此次我们主要使用express进行动态可视化图形的绘制,使用它可以轻松绘制如散点图、条形图、漏斗图、桑基图等图形。
使用官网:
https://plotly.com/python/plotly-express/
绘图的步骤也非常简单:
- 直接使用px调用某个绘图方法,会自动创建画布,并画出图形。
- 展示图形,可以直接在notebook中展示,也可以使用py.offline.plot(fig,filename="XXX.html")代码保存成html网页动态图片。
接下来我们演示使用plotly.express绘制动态条形图和散点图。
首先绘制一个动态条形图,用于展示15座城市随时间走势的GDP变化趋势,调用bar的方法即可。
绘图主要参数解释:
- data_frame:数据框名称
- x:列名,展示的维度
- y:列名,展示的度量
- color:颜色
- text:条形图标记文本
- title:标题
- range_y:y轴的刻度范围
- animation_frame:列名,控制动画帧
# 条形图
fig2 = px.bar(df_all, x='城市', y='GDP', color='城市', text='GDP',
title='新一线城市近20年GDP变化趋势',
range_y=[300, 25000],
animation_frame='年份',
)
fig2.update_layout(yaxis_title='GDP(亿元)') # 更新布局配置
py.offline.plot(fig2, filename='2000-2019年GDP变化趋势.html')
然后绘制一个动态散点图,用于展示15座城市随时间走势的GDP和人口变化趋势,调用scatter的方法即可。绘图步骤和上述类似。
# 散点图
fig3 = px.scatter(df_all, x='GDP', y='人口', animation_frame='年份', animation_group='城市',
size='人口', color='城市', hover_name='城市', size_max=50, text='城市',
range_x=[300, 25000], range_y=[150, 4000],
title='新一线城市近20年GDP和人口变化趋势',
)
fig3.update_layout(xaxis_title='GDP(亿元)', yaxis_title='人口(万人)')
py.offline.plot(fig3, filename='2000-2019年GDP和人口变化趋势.html')
03 可视化效果
下面我们来具体看下可视化效果:
新一线城市
新一线城市
新一线城市
参考文献:
新一线城市人口竞争力大盘点:杭州亮了,3年激增百万!有地方却负增长,这些指标很关键!
https://mp.weixin.qq.com/s/btYEttPoeCQ8hOyiRaoPAw
维基百科-一线城市
https://zh.wikipedia.org/wiki/%E4%B8%80%E7%BA%BF%E5%9F%8E%E5%B8%82
- 程序员必知之SEO
- 进程监控工具supervisor 启动Mongodb
- 祭奠那些年,我弃坑的开源轮子
- 这些奇技浮巧,助你优化前端应用性能
- Stepping.js——两步完成前后端分离架构设计
- 我的职业是前端工程师【十】客户端存储艺术:数据存储与模型
- 【开源】2md:将复制的内容、网页转成 markdown
- React Native 持续部署实践— push 代码构建出新版的 Growth
- 技巧 - 如何好一个 Git 提交信息及几种不同的规范
- React、Vue、Ember 及其他前端开发者,请暂缓更新到 Chrome 59 浏览器
- 微软开源全新的文档生成工具DocFX
- 使用 MimeKit 和 MailKit 发送邮件
- 使用 React Native 重写大型 Ionic 应用后,我们想分享一下这八个经验
- 基于OWin的Web服务器Katana发布版本3
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法