1. 程式人生 > 實用技巧 >用Python把20年的GDP、人口以及房價資料進行了視覺化

用Python把20年的GDP、人口以及房價資料進行了視覺化

前言

本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯絡我們以作處理。

作者: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年平均房價走勢圖