2015-05-30 34 views
0

如何使用Python API(https://www.quandl.com/help/python)從Quandl數據集中獲取最新價格?在https://www.quandl.com/help/api上,它表示「您可以使用rows = n來獲取數據集的前n行,使用rows = 1獲取任何數據集的最新觀察值。」但如果我使用rows=1,我會得到第一個觀察結果,而不是最新的。使用Python從Quandl檢索數據

此外,我需要得到美元匯率但從https://www.quandl.com/resources/api-for-currency-data看來我需要檢索的匯率每一種貨幣,而不是隻具有所有最新匯率每種貨幣兌美元的數據集。這不可能嗎?

回答

0
import Quandl 

首先,您需要按降序排列,以獲得最新的價值排序的數據集:

Quandl.get("FRED/DEXUSEU", rows=1, sort_order='desc') 
      Value 
Date    
2015-05-15 1.1428 

您還需要單獨申請匯率每種貨幣:

fred_rates = pd.DataFrame({'Currency': {'DEXBZUS': 'Brazilian Real (BRL)', 
             'DEXCAUS': 'Canadaian Dollar (CAD)', 
             'DEXCHUS': 'Chinese Yuan (CNY))', 
             'DEXDNUS': 'Denish Krone (DKK)', 
             'DEXHKUS': 'Hong Kong Dollar (HKD)', 
             'DEXINUS': 'Indian Rupee (INR)', 
             'DEXJPUS': 'Japanese Yen (JPY)', 
             'DEXKOUS': 'South Korean Won (KRW)', 
             'DEXMAUS': 'Malaysian Ringgit (MYR)', 
             'DEXMXUS': 'Mexican Peso (MXN)', 
             'DEXNOUS': 'Norwegian Krone(NOK)', 
             'DEXSDUS': 'Swedish Krona (SEK)', 
             'DEXSFUS': 'South African Rand(ZAR)', 
             'DEXSIUS': 'Singapore Dollar (SGD)', 
             'DEXSLUS': 'Sri Lankan Rupee(LKR)', 
             'DEXSZUS': 'Swiss Franc (CHF)', 
             'DEXTAUS': 'New Taiwan Dollar (TWD)', 
             'DEXTHUS': 'Thai Baht (THB)', 
             'DEXUSAL': 'Australian Dollar (AUD)', 
             'DEXUSEU': 'Euro (EUR)', 
             'DEXUSNZ': 'New Zealand Dollar (NZD)', 
             'DEXUSUK': 'British Pound (GBP)', 
             'DEXVZUS': 'Venezuelan Bolivar (VEF)'}}) 
fred_rates['symbol'] = frates.Currency.map(lambda x: x[-4:-1]) 

rates = [Quandl.get("FRED/{0}".format(fx)) for fx in fred_rates.index] 
fx_rates = pd.concat(rates, axis=1) 
fx_rates.columns = [fx for fx in fred_rates.symbol] 

>>> fx_rates.info() 
<class 'pandas.core.frame.DataFrame'> 
DatetimeIndex: 11168 entries, 1971-01-04 to 2015-05-15 
Data columns (total 23 columns): 
AUD 11130 non-null float64 
BRL 5120 non-null float64 
GBP 11137 non-null float64 
CAD 11143 non-null float64 
NY) 8577 non-null float64 
DKK 11145 non-null float64 
EUR 4116 non-null float64 
HKD 8637 non-null float64 
INR 10629 non-null float64 
JPY 11131 non-null float64 
MYR 11115 non-null float64 
MXN 5405 non-null float64 
TWD 7650 non-null float64 
NZD 11121 non-null float64 
NOK 11136 non-null float64 
SGD 8636 non-null float64 
ZAR 11110 non-null float64 
KRW 8523 non-null float64 
LKR 10277 non-null float64 
SEK 11136 non-null float64 
CHF 11137 non-null float64 
THB 8556 non-null float64 
VEF 5114 non-null float64 
dtypes: float64(23) 
memory usage: 2.0 MB 

>>> fx_rates.tail() 
       AUD  BRL  GBP  CAD  NY) DKK  EUR  HKD Date                  
2015-05-11 0.7899 3.0385 1.5593 1.2107 6.2086 NaN 1.1142 7.7535 
2015-05-12 0.7989 3.0223 1.5685 1.1987 6.2086 NaN 1.1240 7.7528 
2015-05-13 0.8118 3.0265 1.5748 1.1950 6.2043 NaN 1.1372 7.7517 
2015-05-14 0.8082 2.9910 1.5766 1.1991 6.2013 NaN 1.1368 7.7505 
2015-05-15 0.8053 2.9779 1.5772 1.2009 6.2051 NaN 1.1428 7.7505 

       INR  JPY ...  NZD  NOK  SGD  ZAR  KRW Date      ...            
2015-05-11 63.96 120.05 ... 0.7350 7.5605 1.3361 12.0820 1095.39 
2015-05-12 64.19 119.80 ... 0.7377 7.4720 1.3336 12.0430 1093.81 
2015-05-13 63.88 119.09 ... 0.7488 7.3597 1.3239 11.8760 1089.72 
2015-05-14 63.47 119.20 ... 0.7500 7.3829 1.3199 11.8220 1089.46 
2015-05-15 63.36 119.36 ... 0.7489 7.3113 1.3195 11.7645 1083.05 

       LKR  SEK  CHF THB  VEF 
Date            
2015-05-11 133.3 8.2950 0.9344 33.71 6.2842 
2015-05-12 133.5 8.3022 0.9266 33.70 6.2842 
2015-05-13 133.5 8.2085 0.9162 33.51 6.2842 
2015-05-14 133.4 8.2531 0.9146 33.50 6.2842 
2015-05-15 133.4 8.2174 0.9174 33.48 6.2842 

[5 rows x 23 columns] 
+1

看起來不錯,但速度很慢。我已經看到,我可以用'Quandl.get(['set1','set2',...])''獲取多個數據集。我可以通過'rates = Quandl.get([fred_rates.index]中的[「FRED/{0}」.fx格式(fx)])來優化您的腳本嗎?我只需要用最新的費率填充我的Django數據庫。我怎樣才能改變你的腳本只給我最新的利率,所以我可以插入我的數據庫?謝謝! – Jamgreen

+0

rates = [Quidl.get(「FRED/{0}」.format(fx),rows = 1,sort_order ='desc')for fx in fred_rates.index]。我認爲Quandl的利率滯後了幾個星期,所以它可能不是您最近數據的最佳來源。 – Alexander