美國超2200萬人失業,根據數據用Python實現可視化圖,最後有結果有點嚇人

前言

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

目前,我國新冠疫情已經大幅度好轉,各省市在3到4月份已經開始復產復工,連受災最嚴重的武漢也解封了,全國的情況逐漸步入正軌。

但同時全球疫情十分嚴峻, 根據美國約翰斯.霍普金斯大學統計的數據顯示,截至北京時間19日晚6時38分,全球新冠死亡病例超過16萬例,達到161,324例,全球確診病例突破230萬,達2,343,293例。

 

根據數據,目前死亡病例最多的國家是美國,爲33,903例。美國同時還是全球確診病例最多的國家,累計確診病例突破70萬,達到722,761例。

 

疫情給全球人民帶來的不僅僅是生命的威脅,同樣還有經濟上的困境以及失業危機。因爲疫情的影響,美國陷入了“裁員潮”,很多美國人不得不因爲這次疫情被辭退,從而申請失業救濟金。

 

 

美國失業人數超2200萬,抹去11年來所有新增就業

美國勞工部16日公佈的數據顯示,受新冠疫情在美國蔓延影響,上週美國首次申請失業救濟人數達到524.5萬,這意味着過去四周美國首次申請失業救濟人數已累計達到約2200萬,這約佔美國勞動力總數的八分之一,基本抹去了08年金融危機以來過去11年所有的新增就業。

 

 

 

特別是這個由美國勞工部統計的失業救濟人數動態圖,也是引爆全網,從中可以看到自六十年代來,美國的失業救濟人數一直是上下波動。而受這次疫情影響,美國失業救濟人數像坐了火箭一般,一路飆升。

(結尾高能,一定要看到最後!)

美國每週首次申請失業救濟人數

來源:美國勞工部 United States Department of Labor

那麼作爲一個技術號,我們就來探討一下這個動態圖怎麼做。今天我們就教你用Python來實現!

 教你用Python繪製美國申請失業險人數動態圖

我們使用pyecharts包進行美國申請失業保險人數的動態趨勢圖的繪製,如果你沒有安裝pyecharts,可以使用以下代碼進行pip安裝。

pip install pyecharts

製作這樣的一個動態圖使用的是Pyecharts中的的TimeLine(時間線輪播圖)的類。使用TimeLine的方法,你可以輕鬆地將繪製帶有時間序列的動態圖形,比如動態條形圖、動態餅圖、動態桑基圖、動態地圖等等。

首先需要導入我們需要使用的包,其中pandas用於數據整理,pyecharts用於繪圖。

# 導入包
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Timeline, Line

首先使用pandas讀入數據,我們選取的數據來自於美國勞工部官方網站,數據包含了從1967年07月01日~2020年04月04日的申請失業保險人數,這是一份帶有時間序列的面板數據,適合進行動態可視化繪圖使用。

# 讀入數據
df = pd.read_excel('USA_UI_1967_2020.xlsx')
df.head() 

 

在繪圖之前,首先我們需要梳理一下生成動圖的邏輯和思路。

我們將繪圖數據分爲維度和度量來思考,在這個條形圖的繪製中,時間就是維度,S.A.(申請失業保險人數)就是度量值,繪製動態折線圖就是把每天的數據製作成一張截止到當天的折線圖然後輪動,下面使用Pandas對時間數據進行簡單的處理,並選取2000年以後的數據進行圖形的繪製,處理後的數據如下所示:

# 時間處理
df['time_index'] = pd.to_datetime(df['time_index'])
df['time_index'] = df['time_index'].dt.date.astype('str')

# 選取子集
df_sel = df.loc[:, ['time_index', 'S.A.']]
df_sel['time_2'] = df_sel['time_index'].copy()
df_sel = df_sel.set_index('time_index') 
df_sel = df_sel.loc[(df_sel.index>='2000-01-01')] 
df_sel.head() 

 

接下來使用Pyecharts庫中的TimeLine和Line類進行圖形的繪製,代碼說明如下,其中的配置項可以看到pyecharts官網 https://pyecharts.org 進行查看。

圖形生成在本地的html網頁中。

代碼實現:

# 實例化一個timeline
t1 = Timeline(init_opts=opts.InitOpts(width='1350px', height='750px'))
# 添加配置項
t1.add_schema(play_interval=1,  # 播放的速度
              is_loop_play=False,  # 是否循環播放
              linestyle_opts=opts.LineStyleOpts(width=0.5),
              )

# 時間數據
time_date = df_sel.index.values.tolist()

for i in time_date:
    # 繪製線形圖
    line = Line()
    line.add_xaxis(df_sel.loc[:i, 'time_2'].values.tolist())
    line.add_yaxis('', df_sel.loc[:i, 'S.A.'].values.tolist())
    line.set_global_opts(title_opts=opts.TitleOpts('美國申請失業保險{}日人數'.format(i))
                        )
    line.set_series_opts(label_opts=opts.LabelOpts(is_show=False),
                         linestyle_opts=opts.LineStyleOpts(width=2)
                         )
    # 添加到t1中
    t1.add(line, '{}'.format(i))

# 生成HTML文檔
t1.render('美國申請失業保險動態折線圖.html') 

這裏我們選取2000年以後的數據進行繪製,最後讓我們看到繪製後的成品:最後有結果有點嚇人

 

歡迎點擊左上角關注小編,除了分享技術文章之外還有很多福利,私信學習資料可以領取包括不限於Python實戰演練、PDF電子文檔、面試集錦、學習資料等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章