【问题标题】:Portfolio tracker in pythonpython中的投资组合跟踪器
【发布时间】:2016-11-06 17:40:27
【问题描述】:

我正在使用pandas 远程数据功能制作投资组合跟踪器,但是在传递多个股票名称和股票代码时遇到了问题。

我想按公司名称创建单独的数据框,我正在尝试使用 **kwargs,但对它的工作原理有点模糊。

我想我已经很接近了,但在某个地方缺少了一些东西。

def portfolio(startDateYE, startDateMonth, startDateDay, end_dateYE,
              end_dateMonth, end_dateDay,  **kwargs):
    '''insert desired started and ending date as 2014,1,1 and key value pairs
    of the stock you would like to look up, i.e. ford = "f" '''
    start = datetime.datetime(startDateYE, startDateMonth, startDateDay)
    end = datetime.datetime(end_dateYE, end_dateMonth, end_dateDay)
    for key, value in kwargs.items():
        key = web.DataReader("%s" % value,'yahoo', start, end)

我将如何传递可变数量的变量的示例:

portfolio(2010,1,1,2011,1,1,ford="f",google="googl")

我的目标是:

In [6]: ford.ix['2010-01-04']
Out[6]: 
Open         1.017000e+01
High         1.028000e+01
Low          1.005000e+01
Close        1.028000e+01
Volume       6.085580e+07
Adj Close    8.755953e+00
Name: 2010-01-04 00:00:00, dtype: float64

已编辑:

def portfolio(startDateYE, startDateMonth, startDateDay, end_dateYE,
              end_dateMonth, end_dateDay,  **kwargs):
    '''insert desired started and ending date as 2014,1,1 and key value pairs
    of the stock you would like to look up, i.e. ford = "f" '''
    start = datetime.datetime(startDateYE, startDateMonth, startDateDay)
    end = datetime.datetime(end_dateYE, end_dateMonth, end_dateDay)
    results = {}  # this is an empty dictionary
    for key, value in kwargs.iteritems():
        results[key] = web.DataReader(value, key, 'yahoo', start, end)

    print(results)

编辑:

现在我收到以下错误:

`---------------------------------------------------------------------------

ValueError Traceback(最近一次调用最后一次) 在 () 34 ''' 35 ---> 36 个投资组合(2012,1,1,2013,1,1,facebook="f",google="googl") 37 38 # Adjusted_f = f['Adj Close']

在投资组合中(startDateYE、startDateMonth、startDateDay、end_dateYE、end_dateMonth、end_dateDay、**kwargs) 27 results = {} # 这是一个空字典 28 为键,kwargs.iteritems() 中的值: ---> 29 个结果[key] = web.DataReader(value, key, 'yahoo', start, end) 30 31'''

/Users/andrewclark/anaconda2/lib/python2.7/site-packages/pandas/io/data.pyc in DataReader(name, data_source, start, end, retry_count, pause) 86 ff = DataReader(“F-F_ST_Reversal_Factor”,“famafrench”) 87 """ ---> 88 开始,结束 = _sanitize_dates(开始,结束) 89 90 if data_source == "yahoo":

/Users/andrewclark/anaconda2/lib/python2.7/site-packages/pandas/io/data.pyc in _sanitize_dates(start, end) 104 def_sanitize_dates(开始,结束): 105 从 pandas.core.datetools 导入 to_datetime --> 106 开始 = to_datetime(开始) 107 结束 = to_datetime(结束) 108 如果开始为无:

/Users/andrewclark/anaconda2/lib/python2.7/site-packages/pandas/util/decorators.pyc in wrapper(*args, **kwargs) 89 其他: 90 kwargs[new_arg_name] = new_arg_value ---> 91 返回函数(*args,**kwargs) 92返回包装 93 返回_deprecate_kwarg

/Users/andrewclark/anaconda2/lib/python2.7/site-packages/pandas/tseries/tools.pyc in to_datetime(arg, errors, dayfirst, yearfirst, utc, box, format, exact, coerce, unit,推断日期时间格式) 第285章 第286章 --> 287 单位=单位,推断日期时间格式=推断日期时间格式) 288 289

/Users/andrewclark/anaconda2/lib/python2.7/site-packages/pandas/tseries/tools.pyc in _to_datetime(arg, errors, dayfirst, yearfirst, utc, box, format, exact, unit, freq,推断日期时间格式) 第414章 415 --> 416 return _convert_listlike(np.array([arg]), box, format)[0] 417 第418章

/Users/andrewclark/anaconda2/lib/python2.7/site-packages/pandas/tseries/tools.pyc in _convert_listlike(arg, box, format, name) 400 返回 DatetimeIndex._simple_new(值,名称=名称,tz=tz) 401 除了(ValueError,TypeError): --> 402 提高 e 403 404 如果 arg 为无:

ValueError: 未知的字符串格式

谢谢!

【问题讨论】:

  • 这是一个纯粹的编程问题,因此我将其迁移到Stack Exchange。你仍然需要通过定义你的方法的完整签名来增强它(它返回什么,即你如何获得你的 ford 变量以及你所指的 web 模块是什么)。

标签: python python-2.7 pandas yahoo-finance


【解决方案1】:

问题在于您不断覆盖键值,因此您实际上只保存了最后一个数据集。

您应该单独跟踪键及其结果,如下所示:

results = {}  # this is an empty dictionary
for key, value in kwargs.iteritems():
    results[key] = web.DataReader(value, key, start, end)

print(results)

【讨论】:

  • 我试过这段代码,但现在它给了我一个“ValueError:未知字符串格式”错误。有什么想法吗?感谢您的帮助!
  • 你能发布整个错误信息吗? (更新您的问题)。
猜你喜欢
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多