程式新手的Python教學 – 用Seaborn繪製非農就業數據

什麼是美國非農就業數據

美國非農就業數據為美國非農業人口的的就業數據(就業人數、各產業部門就業數據等等),由美國勞工局進行調查,這也是投資人觀察的重點指標!

美國非農數據為何重要

非農就業是觀察美國經濟表現的重要指標,主要的理由大概有兩點
1.非農就業與經濟表現高度相關,但是公布的頻率較高
 相較於GDP,非農就業每個月都會公布,這讓我們可以更即時更新對市場的看法
2.非農就業是聯準會觀察的重點指標,聯準會在決定利率時,非農就業的好壞都是一個重要的參考依據

內容

1. 用requests抓取Fred資料庫經濟數據
2. 用pandas以及io讀取抓下來存入內存的csv檔案
3. 繪製非農就業圖表
4.美國的經濟

在之前的影片中,我們使用requests抓取非農數據,並練習使用Seaborn來繪製散步圖。 在這裡,將會結合這兩個工具來抓取非農數據並繪製分析圖表!

首先,在之前的影片中我們使用requests.get這個指令來抓取fred資料庫的csv檔案
譬如說,非農數據的csv檔案連結為頁面的DOWNLOAD的CSV(data)(如下圖),對這個部分按右鍵並按複製連結

非農數據(Fred)

然後我們即可使用requests.get(‘複製的連結’)來取得檔案,程式碼如下:

import requests

non_farm_page = requests.get('https://fred.stlouisfed.org/graph/fredgraph.csv?bgcolor=%23e1e9f0&chart_type=line&drp=0&fo=open%20sans&graph_bgcolor=%23ffffff&height=450&mode=fred&recession_bars=on&txtcolor=%23444444&ts=12&tts=12&width=1168&nt=0&thu=0&trc=0&show_legend=yes&show_axis_titles=yes&show_tooltip=yes&id=PAYEMS&scale=left&cosd=1939-01-01&coed=2019-11-01&line_color=%234572a7&link_values=false&line_style=solid&mark_type=none&mw=3&lw=2&ost=-99999&oet=99999&mma=0&fml=a&fq=Monthly&fam=avg&fgst=lin&fgsnd=2009-06-01&line_index=1&transformation=lin&vintage_date=2019-12-17&revision_date=2019-12-17&nd=1939-01-01')

注意:
1. 這邊我們引入了requests這個套件,如果沒有安裝這個套件的話,會顯示import error,此時需要使用我們之前提到的pip install這個指令在終端機安裝requests這個套件。
2. 我們將讀下來的資料存為變數名non_farm_page,用non_farm_page.text這個指令即可讀出資料

為了更好的處理資料,我們這邊要使用一個新的套件:pandas,這個套件是一個開源的python套件,裡面內建很多資料分析的工具,因此,我們第一步便是需要將資料轉為pandas可以處理的格式,pandas有針對表格資料建立一個叫DataFrame的資料格式。所以我們必須將non_farm_page.text這個文字檔案轉為DataFrame這個資料格式,這邊我們必須結合兩個函數,一個是pandas所內建的read_csv函數,這個函數就是被設計來讀取csv檔案,基本用法為

pandas.read_csv(‘檔案路徑’)

我們給定檔案路徑後,pandas便可以抓到這個檔案,並將其轉為DataFrame的資料格式,但是現在我們並沒有檔案路徑,因為我們已經將文字檔案讀進來了,為了解決這個問題,我們引入io這個套件,並使用裡面的方法 StringIO 將在內存的文字檔轉為一個虛擬的檔案,這時候read_csv方法就可以認出檔案,並成功讀入,如下。

import pandas as pd
import io
non_farm_data = pd.read_csv(io.StringIO(page.text))

接下來,我們來看一下非農數據的走勢,要繪製非農就業人數的線圖,可使用下列指令

import matplotlib.pyplot as plt
non_farm_data['DATE'] = pd.to_datetime(non_farm_data['DATE'])
plt.figure(figsize=(20,10))
sns.lineplot(data=non_farm_data,x='DATE',y='PAYEMS')
plt.xticks(rotation=30)
plt.show()

非農就業VS時間

可以看到就業人數隨著時間不斷上升,這也反映了美國人口上升的趨勢!接下來我們來觀察非農每月的月增量,其程式碼如下:

non_farm_data['Year_Increase'] = non_farm_data['PAYEMS'].diff(periods=12)
non_farm_data = non_farm_data.dropna()
non_farm_data['Date_ax'] = non_farm_data['DATE'].dt.strftime('%Y-%m')
plt.figure(figsize=(15,10))
sns.barplot(data=non_farm_data.iloc[-12:],x='Date_ax',y='Year_Increase')
plt.xticks(rotation=30)
plt.plot(non_farm_data['Date_ax'].iloc[-12:].values,12*[2000])
plt.show()

可以看到近一年來非農年增都在兩百萬以上,而且失業率也來到了歷史低點,事實上,從各個經濟實質指標來說:GDP、耐久財以及失業率等等,美國經濟表現都是越來越好,如果我們把股價當作是對未來實質經濟面的預測值的話,目前美股不斷創高的表現也是反應了目前目前的經濟增長!

Share

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *