Sargent數量經濟學:Pandas
Pandas
概述
近幾年,它越來越流行,這與數據分析和機器學習領域的發展一致
這個包與STATA和SAS的流行程度比較如下圖
就像NumPy提供了基本的數組數據類型與核心運算一樣,Pandas
定義了數據處理的基本結構
結合數據處理方法來促進下列運算
l讀取數據
l調整指標
l處理日期和時間序列
l歸類、分組、排序和一般數據管理
l處理缺失值,等等
更加專業的統計函數就交給別的包去處理,例如statsmodels(http://www.statsmodels.org/stable/index.html)和scikit-learn(http://scikit-learn.org/),它們都是架構在Pandas基礎上
本講提供了pandas的基礎介紹
在本講推進的整個過程中,我們都假設下列包已經調用
Series
Pandas定義的兩個重要的數據類型為Series和DataFrame
你們能把Series想成一「列」數據,例如單變數的觀測值集合
DataFrame則是儲存相關數據列的對象
我們先從Series開始
此處,你可以把指標0,1,2,3想像成指代四家公司,且對應的值公司股票的日收益
PandasSeries構建於NumPy數組基礎上,並支持許多類似的運算
但Series提供的功能比NumPy數組更多
除此之外,它們還包含另外的一些方法
且它們的指標更加靈活
事實上,你們可以用許多與Python dictionaries相同的命令
DataFrames
Series是單列數據,DataFrame是多列,每列一個變數
其實,pandas中的DataFrame與Excel的電子表格類似,或者線性回歸中儲存在X矩陣中的結構類似
我們來看一個例子,即從CSV文件中讀取數據pandas/data/test_pwt.csv,數據下載地址https://lectures.quantecon.org/_downloads/test_pwt.csv
test_pwt.csv的內容如下
假設你把這些數據保存在當期的工作路徑中,且命名為test_pwt.csv(在Jupyter中輸入%pwd可以查看),讀取數據如下
要選擇列,我們能通過一個包含所要列的名字列表來獲取,列名字是字元型
要選擇列和行,用整數型,iloc屬性應該以.iloc[rows,columns]格式使用
用整數型和標籤混合來選擇行和列,loc屬性以相同的方式使用
我們可以試想一下,我們僅僅對人口和GDP感興趣(tcgdp)
出掉數據框df直至僅有感興趣的變數為止的一種方式是用上面所描述的選擇方法來重新數據框
指標0,1,...,7是多餘的,因為我們能用國家名作為指標
要這麼做,我們把指標設立為變數country
我們為列去一個稍微好點的名字
人口數以千計,我們將其單位轉化一下
下面,我們增加一列來現實人均實際GDP,然後乘以1000000,因為總GDP以百萬為單位
有關pandasDataFrame和Series對象的非常棒的東西之一是他們可以通過Matplotlib來作圖和可視化
例如,我么能容易的創造人均GDP的柱狀圖
產生的圖如下
此時,數據按照國家的字母順序排列——讓我們按照人均GDP來排序
那麼,圖就變成了
在線數據資源
Python能直接以編程的方式獲取在線資料庫
對於經濟學家來說,一個重要的資料庫就是FRED——許多時間序列數據
例如,假設我們對失業率感興趣
通過FRED,在瀏覽器中輸入網址,美國公民的失業率序列都能獲得(注意這要求連接網路)
(等價的,點擊https://research.stlouisfed.org/fred2/series/UNRATE/downloaddata/UNRATE.csv))
這就要求返回CSV文件
另外一種方式就是通過Python程序來獲取CSV
有許多方法可以實現
我們從低級別方法開始介紹,然後回到pandas
用requests獲取數據
一種方法就是用requests(http://docs.python-requests.org/en/master/),獲取網上數據的標準Python包
首先,在你的計算機里實施下列代碼
如果沒有錯誤信息,那麼就說明調用成功
如果有錯誤,可能的原因是
你沒有聯網——希望不要發生這種事
你的機器通過代理伺服器聯網,而Python並沒有意識到這一點
如果是第二種情形,你要麼
用另一台機器
要麼解決代理問題,詳情閱讀http://docs.python-requests.org/en/master/
假設所有事情就緒,你就能用source對象來返回
requests.get( http://research.stlouisfed.org/fred2/series/UNRATE/downloaddata/UNRATE.csv )
現在我們可以寫一些代碼來解析文本,並將其儲存為數組
但是重新編寫代碼並不必要,因為pandas的read_csv函數可以為我們處理這個問題
我們使用parse_dates=True,以使得pandas知道日期列,並執行簡單的日期過濾
讀取進pandas DataFrame的數據稱為data,我們就可以按照通常的方式來處理數據了
我們也可以用下列代碼來畫出2006-2012的失業率
圖如下
獲取世界銀行的數據
我們來看看獲取世界銀行的數據,並處理它
例如,有一些政府債務與GDP比率的數據
如果你點擊「下載數據」,你就可以獲得下載excel格式的數據選項
下面的程序也可以為你做這件事,將Excel文件讀入pandas DataFrame,並作出法國、德國、美國和澳大利亞的圖
這個數據文件下載地址https://lectures.quantecon.org/_downloads/wb_download.py,名字pandas/wb_download.py
圖為
※Sargent數量經濟學:SciPy
※Sargent的量化經濟學(9):NumPy
TAG:宏觀經濟研學會 |
※歧視經濟學,Discrimination bad?
※Princeton Makes,Stockholm Takes-諾貝爾經濟學獎得主好書精選
※Esther Kinsky muses on a river in England 經濟學人.Jan18th2018
※經濟學法則?!Marvel 迷挑戰 24 小時內觀看《Avengers: Endgame》五次
※經濟學人翻譯練習 The Economist
※經濟學人精讀 The Economist62上
※The digital proletariat 經濟學人.Jan 12th 2018
※上海紐約大學NYU商學和經濟學客座教授廖明確認出席 Morketing Brand Summit 2019品牌高峰會
※第一課 Jose Galvez 與性別經濟學
※經濟學家Tuur Demeester:區塊鏈是具有里程碑意義的發明
※金融時報|經濟學人 詞伙素材|Microsoft
※諾貝爾經濟學獎得主Robert Shiller:比特幣是一場流行潮
※Open Source 101:開源經濟學原理
※抵押獲得穩定資產收益?深入探討 Horuspay的Token 經濟學
※以太坊核心開發者Karl Floersch:像黑客帝國那樣學習加密經濟學!
※從Token經濟學看PoS共識機制
※Ultrain Nova新星重磅發布並與經濟學家金刻羽正式簽約
※對抗詐騙的新武器?Vitalik Buterin提出加密經濟學提案懲罰虛假信息
※為什麼economics翻譯為「經濟學」是個錯誤?
※比特幣經濟學家Jeffrey Wernick:投資於人 並讓每個人意識到自身價值