前言

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

作者: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. SpringBoot -- 项目结构+启动流程

    一.简述: 项目结构 二.简述:启动流程 说springboot的启动流程,当然少不了springboot启动入口类 @SpringBootApplication public class Sprin ...

  2. Flutter开发初探

    目前跨端开发比较热门的就是 React Native 和 Flutter 了,到底该选哪门技术似乎也快成了大前端圈的一个热门话题.对于web前端来说,基于web生态的 React Native 应该是 ...

  3. pycharm中导入包失败的解决办法

    将鼠标移动到requests处,出现如下提示 按住alt+enter键,点击install package requests即可安装requests包 安装成功后

  4. 前端工程化的的理解,浅谈web工程化的开发流程

    1. 什么是前端工程化 自有前端工程师这个称谓以来,前端的发展可谓是日新月异.相比较已经非常成熟的其他领域,前端虽是后起之秀,但其野蛮生长是其他领域不能比的.虽然前端技术飞快发展,但是前端整体的工程生 ...

  5. 「疫期集训day12」阴雨

    我们走进了泥泞的雨林----阿尔贡森林里艰难前进的士兵 今天考试一般,T1T2签到题没啥好说的,剩下三个小时全肛T3(我脑子有泡,前几天刚做了一道类似T4的难题,公式更难推),9:00->10: ...

  6. 读CSAPP第一章的收获

    这个系列只写了CSAPP第三版对于我的收获. 里面的内容很多,我只写我以前不知道的,然后现在又觉得挺有用的内容. 没有很好的排版,将就看. Amadhl定律:主要观点,想要显著加速整个系统,必须提升全 ...

  7. CentOS 7 的防火墙开启2

    在虚拟机 CentOS 7 上装了 Nginx,结果发现另一台电脑无法访问其默认页面,通过 telnet 192.168.1.88 80 监听发现是 http 80 端口被 CentOS 7 的防火墙 ...

  8. Jenkins Pipeline 部署 SpringBoot 应用

    一. 安装依赖包 yum install -y wget yum install -y gcc-c++ yum install -y zlib-devel perl-ExtUtils-MakeMake ...

  9. Redis的主从复制(基本入门)

    描述 从主节点(主机)到从节点(从机)单向的数据复制 特性(主从复制是Redis高可用的基础) 数据冗余 故障恢复 负载均衡 读写分离(主节点有读写权限,从节点只有读的权限) 注:以下操作都是在cen ...

  10. [设计模式]工厂方法模式(Factory Method)

    模式目的 定义一个用于创建对象的接口,让其子类来决定实例化哪个类. 工厂方法模式将类的实例化延迟到了子类中进行. 模式结构 组成部分 产品(Product) - 定义了产品功能的接口 具体产品(Con ...