python pandas,面板结构中的股票数据

时间:2015-03-17 18:40:21

标签: python indexing pandas panel vectorization

我已从csv文件中提取日期和股票价格数据,并且我正在学习使用python / pandas进行分析。我开始在dict中创建基本数据,然后我用它填充一个面板。我有Wes McKinney的书和2014年12月的0.15.2文档 - 我知道面板功能略微落后于数据帧/系列,但我决定试一试,因为我不想要数量列失控。但是,我已经碰壁了,似乎无法对现有的SO内容进行故障排除。

每个股票应代表面板中的数据框 - 我正在添加列。



# data_raw = df with 4 columns = 'Date' and prices for 3 stocks
list_stocks = ['AAPL','MSFT','NEM']
per_ma = 5
price = 'PX'
ma = 'MvgAvg'

dict_main = {}
for stock in list_stocks:
    dict_main[stock] = {}
    dict_main[stock]['Date'] = data_raw['Date'] 
    dict_main[stock][price] = data_raw[stock]    
    dict_main[stock][ma] = pd.rolling_mean(dict_main[stock][price], per_ma)

pan = pd.Panel(dict_main)




然后我尝试使用具有滚动回顾窗口的基本公式来进一步构建面板中的数据。如果价格>在这里,我试图在pan [stock] [overund]中填充+1。 ma OR -1如果价格< ma ...但只有在过去的per_ma期间它没有相同的值。



for stock in list_stocks:
    pan[stock][overund] = 0
    pan[stock].ix[pan[stock][price] > pan[stock][ma], pan[stock][overund]] = 1
    pan[stock].ix[pan[stock][price] < pan[stock][ma], pan[stock][overund]] = -1
    for i in pan[stock][overund].index:
        if pan[stock].ix[i, pan[stock][signal]] not in tuple(pan[stock].ix[i-per_ma:i-1, pan[stock][overund]]):
            pan[stock].ix[i,pan[stock][signal]] = pan[stock].ix[i,pan[stock][overund]]
        else:
            pan[stock].ix[i,pan[stock][signal]] = 0                                                        
&#13;
&#13;
&#13;

非常奇怪 - 上面的第一部分用全0来填充pan [stock] [overund],第一列全部为+ 1 / -1s。这是墙。我甚至都不知道,如果我在pan [stock] [overund] .index&#34;造成了问题。

希望我的编码轻率并没有过多冒犯编程之神。我只是一个简单的交易者,希望在研究方面更加自给自足。请帮忙。感谢。

1 个答案:

答案 0 :(得分:0)

我认为你的主要问题是没有定义,我认为你的意思

pan[stock]['overund'] = 0

完成你的任务是简单的

pan[stock]['overund'] = pan[stock][price] > pan[stock][ma]

另外,如果您只关注股票价格,请看一下: http://pandas.pydata.org/pandas-docs/dev/remote_data.html#remote-data-yahoo

如果您正在寻求更多帮助,我很乐意提供帮助:engineerededge@gmail.com