2016-10-07 26 views
1

可回收的数据帧我是新来的Python和刚刚经历了几个有关数据分析/机器学习书籍和教程。存储从一个函数的结果将在Python

我想建立一个分类器,并试图刮掉实时股票数据。

下面的函数来拉实时数据

from googlefinance import getQuotes 
import json 
import pandas as pd 
import datetime 
import requests 

def get_intraday_data(symbol, interval_seconds=301, num_days=10): 
    # Specify URL string based on function inputs. 
    url_string = 'http://www.google.com/finance/getprices?q= {0}'.format(symbol.upper()) 
    url_string += "&i={0}&p={1}d&f=d,o,h,l,c,v".format(interval_seconds,num_days) 

    # Request the text, and split by each line 
    r = requests.get(url_string).text.split() 

    # Split each line by a comma, starting at the 8th line 
    r = [line.split(',') for line in r[7:]] 

    # Save data in Pandas DataFrame 
    df = pd.DataFrame(r, columns= ['Datetime','Close','High','Low','Open','Volume']) 

    # Convert UNIX to Datetime format 
    df['Datetime'] = df['Datetime'].apply(lambda x: datetime.datetime.fromtimestamp(int(x[1:]))) 

    return df 

当我尝试调用DF,我得到以下错误:

--------------------------------------------------------------------------- 
    NameError         Traceback (most recent call last) 
<ipython-input-40-db884686c2f6> in <module>() 
    18  return df 
    19 
---> 20 symbol = pd.DataFrame(df) 

NameError: name 'df' is not defined 

的问题是,我希望能够存储这到一个单独的日期框架,并在稍后调用它。该功能似乎运行并不存储在任何地方。我会很欣赏这方面的指导。

+0

我已经试过这一点。 Didnt解决我的问题,因为我仍然得到错误说DF是不添加到存储在HDFS的结果@ user2539738 –

回答

1

我不是计算机专业术语非常熟悉,彻底此向您解释,但基本上,当你调用具有返回值的函数,该值必须保存为一个变量。

df只存在于你的函数中。 (我认为这就是所谓的范围)。当你离开的功能,DF走了

你做

get_intraday_data(symbol, 301,10) 

所以,运行该功能后,返回的变量消失了

代替,做到以下几点:

df = get_intraday_data(symbol, 301,10) 

然后你可以做它的东西

另外,而不是ret如果你想要df,你可以把它腌一下。在你的 “get_intraday_symbol”

fname = 'file1.P' 
df.to_pickle(fname) 
return fname 

然后,后面的代码具有读取腌数据帧

fname = get_intraday_data(symbol, 301,10) 
df = pd.read_pickle(fname) 
+0

就像一个魅力的程序后确定的功能!谢谢!! –

相关问题