10放入数据的完整版

在上一篇文章的代码中,我们看到了,有些步骤是重复,看看能不能将其合并在一起。我们期待的效果,应该是,我们只要输入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函数就能够完成整个过程。
我可以把这个函数分成三个步骤来完成:

  1. 读取特定股票的数据。
  2. 改好相应的名字。
  3. 将数据合并在一起。
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()
10放入数据的完整版_第1张图片
运行结果

得到了非常漂亮的数据。
以上,基本上实现了,选择特定股票在特定时间的数据了!
接下来我们就可以对输入的数据进行分析与处理!

你可能感兴趣的:(10放入数据的完整版)