在上一篇文章的代码中,我们看到了,有些步骤是重复,看看能不能将其合并在一起。我们期待的效果,应该是,我们只要输入symbols和dates就能得到特定股票在特定时间内的数据。
def test_run():
# Define a date range
dates = pd.date_range('2013-01-22', '2013-01-26')
# Choose stock symbols to read
symbols = ['GOOG', 'IBM', 'GLD']
# Get stock data
df = get_data(symbols, dates)
print df
if __name__ == "__main__":
test_run()
希望使用get_data函数就能够完成整个过程。
我可以把这个函数分成三个步骤来完成:
- 读取特定股票的数据。
- 改好相应的名字。
- 将数据合并在一起。
import pandas as pd
def get_data(symbols,dates):
df = pd.DataFrame(index = dates)
if 'SPY' not in symbols: #为了防止失去参考
symbols.insert(0,'SPY')
for symbol in symbols:
#1读取数据
df_temp = pd.read_csv("data/{}.csv".format(symbol),index_col = 'Date',
parse_dates=True,usecols=['Date','Adj Close'],
na_values = ['nan'])
#2改名字
df_temp = df_temp.rename(columns={'Adj Close':symbol})
#3把数据合并到一个表上
df=df.join(df_temp,how = 'inner')
return df
def test_run():
# Define a date range
dates = pd.date_range('2013-01-22', '2013-01-30')
# Choose stock symbols to read
symbols = ['GOOG', 'IBM', 'GLD']
# Get stock data
df = get_data(symbols, dates)
print df
if __name__ == '__main__':
test_run()
得到了非常漂亮的数据。
以上,基本上实现了,选择特定股票在特定时间的数据了!
接下来我们就可以对输入的数据进行分析与处理!