使用Python Yahoo-Finance API输出历史数据的结构如下:
{u'Adj_Close': u'63.209999',
u'Close': u'63.209999',
u'Date': u'2015-08-27',
u'High': u'63.259998',
u'Low': u'61.080002',
u'Open': u'61.459999',
u'Symbol': u'CAM',
u'Volume': u'22808600'}
处理这些数据的最佳方法是什么?例如,我如何获得63.209999的收盘价?我应该使用正则表达式吗?
答案 0 :(得分:0)
如图所示,您有dictionary;使用键来访问字典中的值:
>>> d={u'Adj_Close': u'63.209999',
... u'Close': u'63.209999',
... u'Date': u'2015-08-27',
... u'High': u'63.259998',
... u'Low': u'61.080002',
... u'Open': u'61.459999',
... u'Symbol': u'CAM',
... u'Volume': u'22808600'}
>>>
>>>
>>> d['Close']
u'63.209999'
>>> d['High']
u'63.259998'
但是,您可能有一个JSON字符串。如果是这样,您可以使用json.loads()
将JSON字符串转换为字典:
>>> s = '{"High": "63.259998", "Volume": "22808600", "Low": "61.080002", "Date": "2015-08-27", "Close": "63.209999", "Symbol": "CAM", "Open": "61.459999", "Adj_Close": "63.209999"}'
>>> import json
>>> d = json.loads(s)
>>> d['Close']
u'63.209999'
答案 1 :(得分:0)
Pandas
是处理此类表格问题的优秀库。
你可以这样做
>>> import pandas as pd
>>>
>>> data = {u'Adj_Close': u'63.209999',
... u'Close': u'63.209999',
... u'Date': u'2015-08-27',
... u'High': u'63.259998',
... u'Low': u'61.080002',
... u'Open': u'61.459999',
... u'Symbol': u'CAM',
... u'Volume': u'22808600'}
>>>
>>> df = pd.DataFrame(data.items())
>>> print df.head()
0 1
0 High 63.259998
1 Volume 22808600
2 Low 61.080002
3 Date 2015-08-27
4 Close 63.209999
注意:请注意u'Symbol': u'CAM'
,因为它是scalar value。