2015-06-21 68 views
0

我正在研究一個實現股票數據的項目,(它在python 2.7中)。我使用(雅虎財經https://pypi.python.org/pypi/yahoo-finance)模塊將用此格式返回的歷史數據:如何從這個「列表」中獲取Python中的數據2.7

print yahoo.get_historical('2014-04-25', '2014-04-29') 
[{u'Volume': u'28720000', u'Symbol': u'YHOO', u'Adj_Close': u'35.83', u'High': u'35.89', u'Low': u'34.12', u'Date': u'2014-04-29', u'Close': u'35.83', u'Open': u'34.37'}, {u'Volume': u'30422000', u'Symbol': u'YHOO', u'Adj_Close': u'33.99', u'High': u'35.00', u'Low': u'33.65', u'Date': u'2014-04-28', u'Close': u'33.99', u'Open': u'34.67'}, {u'Volume': u'19391100', u'Symbol': u'YHOO', u'Adj_Close': u'34.48', u'High': u'35.10', u'Low': u'34.29', u'Date': u'2014-04-25', u'Close': u'34.48', u'Open': u'35.03'}] 

有沒有什麼方法來分析這些數據就像一個列表?我不認識它的格式。有沒有簡單的方法可以將高分隔開?我想只是使它成爲一個字符串,並使用像

string = yahoo.get_historical('2014-04-25', '2014-04-29') 
string[13] + string[14] + string[15] ... + string[21] = Volume 

但我知道必須有一個更好的方式來做到這一點。希望這很簡單,我錯過了。

+1

它是[字典](https://docs.python.org/2/tutorial/datastructures.html#dictionaries)的列表。 – Alik

回答

4

這是一個詞典列表,列表中的三個項目。看看容易,如果使用pprint.pprint()模塊功能:

[{u'Adj_Close': u'35.83', 
    u'Close': u'35.83', 
    u'Date': u'2014-04-29', 
    u'High': u'35.89', 
    u'Low': u'34.12', 
    u'Open': u'34.37', 
    u'Symbol': u'YHOO', 
    u'Volume': u'28720000'}, 

{u'Adj_Close': u'33.99', 
    u'Close': u'33.99', 
    u'Date': u'2014-04-28', 
    u'High': u'35.00', 
    u'Low': u'33.65', 
    u'Open': u'34.67', 
    u'Symbol': u'YHOO', 
    u'Volume': u'30422000'}, 

{u'Adj_Close': u'34.48', 
    u'Close': u'34.48', 
    u'Date': u'2014-04-25', 
    u'High': u'35.10', 
    u'Low': u'34.29', 
    u'Open': u'35.03', 
    u'Symbol': u'YHOO', 
    u'Volume': u'19391100'}] 

你可以閱讀他們喜歡:

readings = yahoo.get_historical('2014-04-25', '2014-04-29') 
for reading in readings: 
    print reading['Volume'] 

高的日子可能是:

high_reading = max(readings, key=lambda reading: float(reading['High'])) 

(這是max()函數返回一個序列中最大的東西,提供一個自定義函數來說明比較項目時應該看到的內容)。

+1

非常感謝!這真的幫助我。 –

3

爲什麼不使用類似如下語法:for dayData in dict來分隔每天的值,並在for循環中執行類似dayDict ['Volume']的處理。然後,您可以將任何詳細信息添加到循環外的主數組中,以便稍後在代碼中進行進一步處理或分析。

相關問題