前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者:CDA数据分析师

提到一线城市,大家马上会想到北上广深这四个超级大都市。除此之外,近年来新一线城市这个概念也越来越被大众所熟知。

2013年,财经媒体第一财经提出了提出“新一线城市”的概念,以商业资源集聚度、城市枢纽性、城市人活跃度、生活方式多样性以及未来可塑性作为评判的五大指标,针对全国几百个地级市进行了全新的排名,将未来最有潜力晋升传统一线城市的15个城市称为“新一线城市”。

作为距离一线城市最近的梯队,新一线城市的榜单可以说含金量十足,每年的评选都备受关注。

2020年15座新一线城市包括成都、重庆、杭州、武汉、西安、天津、苏州、南京、郑州、长沙、东莞、沈阳、青岛、合肥、佛山。

其中在人口增量方面:西安由于大幅降低落户门槛,且将西咸新区人口纳入人口总数后,在近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年平均房价走势图

数据获取

我们使用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()
 

数据可视化

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的方法即可。

绘图主要参数解释:

  1. data_frame:数据框名称
  2. x:列名,展示的维度
  3. y:列名,展示的度量
  4. color:颜色
  5. text:条形图标记文本
  6. title:标题
  7. range_y:y轴的刻度范围
  8. 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')

可视化效果

下面我们来具体看下可视化效果:

新一线城市

2000-2019年GDP变化趋势

新一线城市

2000-2019年GDP和人口变化趋势

新一线城市

2001-2019年人口增量数据

新一线城市近10年平均房价走势图

用Python把20年的GDP、人口以及房价数据进行了可视化的更多相关文章

  1. 二十. Python基础(20)--面向对象的基础

    二十. Python基础(20)--面向对象的基础 1 ● 类/对象/实例化 类:具有相同属性.和方法的一类人/事/物 对象(实例): 具体的某一个人/事/物 实例化: 用类创建对象的过程→类名(参数 ...

  2. python day 20: 线程池与协程,多进程TCP服务器

    目录 python day 20: 线程池与协程 2. 线程 3. 进程 4. 协程:gevent模块,又叫微线程 5. 扩展 6. 自定义线程池 7. 实现多进程TCP服务器 8. 实现多线程TCP ...

  3. 用Python爬取《王者荣耀》英雄皮肤数据并可视化分析,用图说话

    大家好,我是辰哥~ 今天辰哥带大家分析一波当前热门手游<王者荣耀>英雄皮肤,比如皮肤上线时间.皮肤类型(勇者:史诗:传说等).价格. 1.获取数据 数据来源于<王者荣耀官方网站> ...

  4. 用 Python 带你看各国 GDP 变迁

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 周萝卜 源自:萝卜大杂烩 PS:如有需要Python学习资料的小伙伴 ...

  5. Python学习--20 Web开发

    HTTP格式 HTTP协议是基于TCP和IP协议的.HTTP协议是一种文本协议. 每个HTTP请求和响应都遵循相同的格式,一个HTTP包含Header和Body两部分,其中Body是可选的. HTTP ...

  6. Python学习(20):Python函数(4):关于函数式编程的内建函数

    转自http://www.cnblogs.com/BeginMan/p/3178103.html 一.关于函数式编程的内建函数 apply()逐渐被舍弃,这里不讨论 1.filter() #filte ...

  7. python学习(20) 网络编程

    原文链接:http://www.limerence2017.com/2018/01/02/python20/ python 网络编程和基本的C语言编程一样,效率不是很高,如果为了封装通信库建议采用C/ ...

  8. python笔记-20 django进阶 (model与form、modelform对比,三种ajax方式的对比,随机验证码,kindeditor)

    一.model深入 1.model的功能 1.1 创建数据库表 1.2 操作数据库表 1.3 数据库的增删改查操作 2.创建数据库表的单表操作 2.1 定义表对象 class xxx(models.M ...

  9. python常用20库

    python核心库和统计 简述 1. Requests.最着名的http库由kenneth reitz编写.这是每个python开发人员必备的. 2. Scrapy.如果您参与webscraping, ...

随机推荐

  1. Docker拉取镜像加速

    关于Docker拉取镜像加速 打开桌面 docker 小图标 选中框框 根据下图 添加国内的加速源即可 Docker加速源 #网易 http://hub-mirror.c.163.com #Docke ...

  2. 记一次mysql小版本升级

    最近护网操作比较紧,基线和漏洞检查比较频繁,新扫描出来的mysql漏洞需要修复,没有啥好的修复方法,只剩下升级版本这一条路,生产环境是5.7.12,二进制文件直接解压使用的,看了一下现在最新的版本,5 ...

  3. 使用Jmeter如何测试下载接口

    性能测试过程中,有时候需要对下载类的功能做压测,有些同学没有这方面的测试经验,比较迷茫,本文简单介绍下如何测试下载类的请求1.首先使用fiddler抓包,知道是一个http类型的请求,有一个post请 ...

  4. GitHub 热点速览 Vol.25:距离优雅编程你差个它

    作者:HelloGitHub-小鱼干 摘要:如何优雅地夸一个程序员呢?vscode-rainbow-fart 作为一个彩虹屁的项目,深得程序员心,能在你编程时疯狂称赞你的除了你自己,还有它.除了鼓励之 ...

  5. Maven全局配置文件settings.xml详解(转)

    Maven全局配置文件settings.xml详解   目录 一.概要 1.settings.xml的作用2.settings.xml文件位置3.配置的优先级 二.settings.xml元素详解 1 ...

  6. 触发器_实现ORACEL自动增长字段

    实现XX表的字段code,为自动增长字段? 1.创建一个sequence,如图: 输入如下数据: S_COUNTRY为sequence名称 2.创建一个触发器,目的是在插入数据之前插入自动增长的数字, ...

  7. HashMap的基本使用

    常用方法 首先,我们应该知道HashMap类实现了Map接口,所以实现了Map常用的一些方法. (1) 插入键值对数据 public V put(K key, V value) (2)根据键值获取键值 ...

  8. 重学ASP.NET Core 中的标记帮助程序

    标记帮助程序是什么 标记帮助程序使服务器端代码可以在 Razor 文件中参与创建和呈现 HTML 元素. 例如,内置的 ImageTagHelper 可以将版本号追加到图片名称.  每当图片发生变化时 ...

  9. 入门大数据---Kafka消费者详解

    一.消费者和消费者群组 在 Kafka 中,消费者通常是消费者群组的一部分,多个消费者群组共同读取同一个主题时,彼此之间互不影响.Kafka 之所以要引入消费者群组这个概念是因为 Kafka 消费者经 ...

  10. nova api报错network问题

    安装openstack Rocky版本的时候,在未安装网络服务前,创建虚拟机,报以下错误 [root@controller2 nova]# openstack server create --flav ...