前言

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

作者: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. Redis 的 5 种数据类型的基本使用

    Redis 中的 5 种数据类型 Redis 中 有 5 种数据结构,分别是 "字符串/string","列表/list","集合/set" ...

  2. Linux环境下搭建禅道

    如何在Linux下搭建禅道 查看Linux版本信息 # cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) 禅道官网下载Linux ...

  3. 微信小程序-工具的下载与安装

    QQ讨论群:785071190 安装开发工具 前往 开发者工具下载页面 ,根据自己的操作系统下载对应的安装包进行安装,有关开发者工具更详细的介绍可以查看 <开发者工具介绍> .工具安装非常 ...

  4. 初识Java Java基础知识

    今天给大家带来的是初级Java基础部分的知识:包括初识Java.变量.常量.数据类型.运算符.各种选择结构.循环结构.数组等Java的基础语法部分!!!内容.步骤超详细,附有各种案例的源代码(可以直接 ...

  5. 在采用K8S之前您必须了解的5件事情

    作者简介 Christopher Tozzi,自2008年来以自由职业者的身份对Linux.虚拟化.容器.数据存储及其相关主题进行报道. 时至今日,Kubernetes已然成为风靡一时的容器编排调度工 ...

  6. js基础练习题(1)

    1.字符串 视频教程地址: js基础练习题 1.如何连接两个或者两个以上字符串? var cssname = 'box' var num = 1 var html = '<div class=& ...

  7. 如何在 asp.net core 3.x 的 startup.cs 文件中获取注入的服务

    一.前言 从 18 年开始接触 .NET Core 开始,在私底下.工作中也开始慢慢从传统的 mvc 前后端一把梭,开始转向 web api + vue,之前自己有个半成品的 asp.net core ...

  8. mac安装Hadoop,mysql,hive,sqoop教程

    在安装Hadoop,mysql,hive之前,首先要保证电脑上安装了jdk 一.配置jdk 1. 下载jdk http://www.oracle.com/technetwork/java/javase ...

  9. 编辑器之神_vim

    01vim简介 1.什么是vim: 文本编辑器 2.vim特点: 没有图形界面;只能是编辑文本内容;没有菜单 ;只有命令 3.在很多linux发行版中,直接把vi作为vim的软连接 02打开和新建文件 ...

  10. LNMP(Linux+Nginx+MySQL+PHP) yum方式安装Redis

    一.环境信息 CentOS Linux release 8.1.1911 (Core) Redis server v=5.0.3 二.yum方式安装 1.添加EPEL仓库 sudo yum insta ...