99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)大數(shù)據(jù)時(shí)代誰(shuí)在崛起,誰(shuí)在沒(méi)落?新一線城市競(jìng)爭(zhēng)力盤(pán)點(diǎn),用python繪制動(dòng)態(tài)圖帶你看懂!
誰(shuí)在崛起,誰(shuí)在沒(méi)落?新一線城市競(jìng)爭(zhēng)力盤(pán)點(diǎn),用python繪制動(dòng)態(tài)圖帶你看懂!
2020-07-20
收藏



   CDA數(shù)據(jù)分析師 出品 

作者:Mika

數(shù)據(jù):真達(dá)  

后期:澤龍

【導(dǎo)讀】今天我們用數(shù)據(jù)來(lái)聊一聊新一線城市。

Show me data,用數(shù)據(jù)說(shuō)話

今天我們聊一聊 新一線城市

提到一線城市,大家馬上會(huì)想到北上廣深這四個(gè)超級(jí)大都市。除此之外,近年來(lái)新一線城市這個(gè)概念也越來(lái)越被大眾所熟知。

2013年,財(cái)經(jīng)媒體第一財(cái)經(jīng)提出了提出“新一線城市”的概念,以商業(yè)資源集聚度、城市樞紐性、城市人活躍度、生活方式多樣性以及未來(lái)可塑性作為評(píng)判的五大指標(biāo),針對(duì)全國(guó)幾百個(gè)地級(jí)市進(jìn)行了全新的排名,將未來(lái)最有潛力晉升傳統(tǒng)一線城市的15個(gè)城市稱為“新一線城市”。

作為距離一線城市最近的梯隊(duì),新一線城市的榜單可以說(shuō)含金量十足,每年的評(píng)選都備受關(guān)注。

(來(lái)自維基百科)

2020年15座新一線城市包括成都、重慶、杭州、武漢、西安、天津、蘇州、南京、鄭州、長(zhǎng)沙、東莞、沈陽(yáng)、青島、合肥、佛山。

(來(lái)自21世紀(jì)報(bào)道)

其中在人口增量方面:西安由于大幅降低落戶門(mén)檻,且將西咸新區(qū)人口納入人口總數(shù)后,在近3年以新增128.87萬(wàn)常住人口,排名15個(gè)新一線城市常住人口增量第一位。常住人口增量連年提升的杭州,則以近3年117.2萬(wàn)的增量,排名新一線城市第二位。

和它們相比,天津近3年以來(lái)出現(xiàn)常住人口-0.29萬(wàn)的增長(zhǎng),沈陽(yáng)3年增長(zhǎng)了3萬(wàn),勢(shì)頭微弱。

那么這15座新一線城市

近20年來(lái)的GDP變化趨勢(shì)如何?

人口競(jìng)爭(zhēng)力如何排座次?

房?jī)r(jià)又是怎樣的?

今天我們就來(lái)用數(shù)據(jù)全面解讀這15座城市。

這次我們使用Python的動(dòng)態(tài)可視化庫(kù)plotly,對(duì)這15座城市從2000年到2019年這20年的GDP、人口以及房?jī)r(jià)數(shù)據(jù)進(jìn)行了可視化。下面就讓我們來(lái)一起看看吧!

我們的數(shù)據(jù)從以下四個(gè)維度展開(kāi):

  • 新一線城市2000-2019年GDP變化趨勢(shì)
  • 新一線城市2000-2019年GDP和人口變化趨勢(shì)
  • 新一線城市2001-2019年人口增量數(shù)據(jù)
  • 新一線城市近10年平均房?jī)r(jià)走勢(shì)圖

01 數(shù)據(jù)獲取

我們使用Python的可視化庫(kù)Plotly對(duì)15座新一線城市的人口/GDP/房?jī)r(jià)數(shù)據(jù)進(jìn)行動(dòng)態(tài)可視化展示。plotly是一個(gè)基于javascript的繪圖庫(kù),繪圖種類(lèi)豐富,效果美觀,使用Plotly可以畫(huà)出很多媲美Tableau的高質(zhì)量圖。

如果你沒(méi)有安裝plotly,可以使用以下代碼進(jìn)行pip安裝:

pip install plotly -i https://pypi.tuna.tsinghua.edu.cn/simple

首先導(dǎo)入我們需要使用的包,其中pandas用于數(shù)據(jù)整理,plotly用于數(shù)據(jù)可視化。

# 導(dǎo)入包
import pandas as pd

import plotly as py 
import plotly.graph_objs as go 
import plotly.express as px 
from plotly import tools

使用pandas讀入并合并數(shù)據(jù)集,我們選取的數(shù)據(jù)來(lái)自于國(guó)家統(tǒng)計(jì)局網(wǎng)站,該數(shù)據(jù)包含了15座新一線城市自2000年~2019年20年期間的GDP和人口數(shù)據(jù),這是一份帶有時(shí)間序列的面板數(shù)據(jù),適合進(jìn)行動(dòng)態(tài)可視化繪圖使用。

# 讀入數(shù)據(jù)
df_gdp = pd.read_excel('../data/新一線城市人口和GDP.xlsx', sheet_name=0)
df_pop = pd.read_excel('../data/新一線城市人口和GDP.xlsx', sheet_name=1)

# 合并數(shù)據(jù)
df_all = pd.merge(left=df_gdp, right=df_pop, on=['城市', '年份']) 
df_all = df_all.sort_values(['城市','年份']) 
df_all.head()  

02 數(shù)據(jù)可視化

Plotly有兩個(gè)很常用的繪圖模塊,分別是graph_objs和express,此次我們主要使用express進(jìn)行動(dòng)態(tài)可視化圖形的繪制,使用它可以輕松繪制如散點(diǎn)圖、條形圖漏斗圖、桑基圖等圖形。

使用官網(wǎng):

https://plotly.com/python/plotly-express/

繪圖的步驟也非常簡(jiǎn)單:

  • 直接使用px調(diào)用某個(gè)繪圖方法,會(huì)自動(dòng)創(chuàng)建畫(huà)布,并畫(huà)出圖形。
  • 展示圖形,可以直接在notebook中展示,也可以使用py.offline.plot(fig,filename="XXX.html")代碼保存成html網(wǎng)頁(yè)動(dòng)態(tài)圖片。

接下來(lái)我們演示使用plotly.express繪制動(dòng)態(tài)條形圖散點(diǎn)圖。

首先繪制一個(gè)動(dòng)態(tài)條形圖,用于展示15座城市隨時(shí)間走勢(shì)的GDP變化趨勢(shì),調(diào)用bar的方法即可。

繪圖主要參數(shù)解釋:

  1. data_frame:數(shù)據(jù)框名稱
  2. x:列名,展示的維度
  3. y:列名,展示的度量
  4. color:顏色
  5. text:條形圖標(biāo)記文本
  6. title:標(biāo)題
  7. range_y:y軸的刻度范圍
  8. animation_frame:列名,控制動(dòng)畫(huà)幀
條形圖
fig2 = px.bar(df_all, x='城市', y='GDP', color='城市', text='GDP', 
             title='新一線城市近20年GDP變化趨勢(shì)',
             range_y=[300, 25000],
             animation_frame='年份',
             ) 
fig2.update_layout(yaxis_title='GDP(億元)')  # 更新布局配置
py.offline.plot(fig2, filename='2000-2019年GDP變化趨勢(shì).html')

然后繪制一個(gè)動(dòng)態(tài)散點(diǎn)圖,用于展示15座城市隨時(shí)間走勢(shì)的GDP和人口變化趨勢(shì),調(diào)用scatter的方法即可。繪圖步驟和上述類(lèi)似。

散點(diǎn)圖
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和人口變化趨勢(shì)', 
                ) 
fig3.update_layout(xaxis_title='GDP(億元)', yaxis_title='人口(萬(wàn)人)')
py.offline.plot(fig3, filename='2000-2019年GDP和人口變化趨勢(shì).html')

03 可視化效果



想要獲取具體的數(shù)據(jù)代碼和可視化效果圖,可以給小編留言或者私信哦!


數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }