Storing the results from a function into a retrievable DataFrame in Python
本问题已经有最佳答案,请猛点这里访问。
我是python的新手,刚学过几本关于数据分析/机器学习的书籍和教程。
我想建立一个分类,并试图刮取实时股票数据。
以下功能可以提取实时数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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时,我收到以下错误:
1 2 3 4 5 6 7 8 | --------------------------------------------------------------------------- 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 |
问题是我希望能够将其存储到单独的日期框架中并稍后调用它。 该功能似乎运行而不是存储在任何地方。 我将很感激这方面的指导。
我对计算机科学术语不够熟悉,无法向您详细解释这一点,但基本上,当您调用具有返回值的函数时,该值必须保存为变量。
df仅存在于您的函数中。 (我认为这称为范围)。 当你离开这个功能时,df就消失了
你在做
1 | get_intraday_data(symbol, 301,10) |
因此,在运行该函数之后,返回的变量就消失了
相反,请执行以下操作:
1 | df = get_intraday_data(symbol, 301,10) |
然后你就可以用它做点什么了
或者,您可以腌制它而不是返回df。 在你的"get_intraday_symbol"中
1 2 3 | fname = 'file1.P' df.to_pickle(fname) return fname |
然后,后续代码必须读取pickle数据帧
1 2 | fname = get_intraday_data(symbol, 301,10) df = pd.read_pickle(fname) |