2015-06-21 222 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']的处理。然后,您可以将任何详细信息添加到循环外的主数组中,以便稍后在代码中进行进一步处理或分析。

相关问题