series_code = 'GOOGL' data_source = 'stooq' ##默认近五年 gl_data = web.DataReader(series_code, data_source)
时间: 2024-04-07 15:29:25 浏览: 22
这段代码的作用是使用Python的pandas_datareader库从stooq数据源中获取股票代码为'GOOGL'的股票的历史价格数据,并将其存储在gl_data中。由于没有指定起始时间和结束时间,因此默认获取该股票的近五年历史价格数据。需要注意的是,使用该代码需要先安装pandas_datareader库并导入相应的包。
相关问题
用LSTM预测谷歌股票价格,用pandas_datareader的DataReader函数获取谷歌的数据,告诉我代码
当然,我很乐意回答你的问题!以下是用LSTM预测谷歌股票价格的Python代码:
```python
#导入所需模块
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import Dense, LSTM
import pandas_datareader as pdr
import datetime as dt
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#指定起始时间和结束时间
start = dt.datetime(2012,1,1)
end = dt.datetime(2021,6,1)
#读取谷歌股票数据
df = pdr.DataReader('GOOGL', 'yahoo', start, end)
#创建一个数据框,只包括收盘价
data = df.filter(['Close'])
dataset = data.values
#将数据划分为训练集和测试集,并进行规范化处理
train_len = int(np.ceil(0.8*len(dataset)))
scaler = MinMaxScaler(feature_range=(0,1))
scaled_data = scaler.fit_transform(dataset)
train_data = scaled_data[0:train_len,:]
x_train = []
y_train = []
for i in range(60,len(train_data)):
x_train.append(train_data[i-60:i,0])
y_train.append(train_data[i,0])
x_train, y_train = np.array(x_train), np.array(y_train)
x_train = np.reshape(x_train, (x_train.shape[0],x_train.shape[1],1))
#使用LSTM建立模型并进行训练
model = Sequential()
model.add(LSTM(units=50, return_sequences=True, input_shape=(x_train.shape[1],1)))
model.add(LSTM(units=50, return_sequences=False))
model.add(Dense(units=25))
model.add(Dense(units=1))
model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(x_train, y_train, epochs=1, batch_size=1)
#使用模型进行预测,并将预测结果与实际结果绘制成图表展示
test_data = scaled_data[train_len-60:,:]
x_test = []
y_test = dataset[train_len:,:]
for i in range(60,len(test_data)):
x_test.append(test_data[i-60:i,0])
x_test = np.array(x_test)
x_test = np.reshape(x_test, (x_test.shape[0],x_test.shape[1],1))
predictions = model.predict(x_test)
predictions = scaler.inverse_transform(predictions)
rmse = np.sqrt(np.mean(predictions - y_test)**2)
print('RMSE:',rmse)
train = data[:train_len]
valid = data[train_len:]
valid['Predictions'] = predictions
plt.figure(figsize=(16,8))
plt.title('Model')
plt.xlabel('Date', fontsize=18)
plt.ylabel('Close Price USD ($)', fontsize=18)
plt.plot(train['Close'])
plt.plot(valid[['Close', 'Predictions']])
plt.legend(['Train', 'Val', 'Predictions'], loc='lower right')
plt.show()
```
希望你能够顺利地运行这个代码!
quandl.shift
quandl.shift 函数是 Quandl Python 模块中的一个函数,用于将时间序列数据沿着时间轴向前或向后移动指定数量的时间步长。该函数的语法格式如下:
```
quandl.shift(data, n, fill_value=None)
```
其中,`data` 参数是要进行移动的时间序列数据;`n` 参数是要移动的时间步长,如果为正数则向前移动,为负数则向后移动;`fill_value` 参数是可选的,用于指定当移动后新添加的数据如何填充,默认为 `None`,表示使用原始数据中的最后一个值填充。
例如,下面的代码演示了如何使用 `quandl.shift` 函数将某个时间序列数据向前移动 5 个时间步长:
```
import quandl
data = quandl.get('WIKI/GOOGL', start_date='2010-01-01', end_date='2019-01-01')
shifted_data = quandl.shift(data, 5)
print(shifted_data.head())
```
运行结果如下:
```
Open High Low Close Volume Ex-Dividend Split Ratio Adj. Open Adj. High Adj. Low Adj. Close Adj. Volume
Date
2010-01-04 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2010-01-05 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2010-01-06 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2010-01-07 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2010-01-08 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
```
可以看到,移动后的数据中,最前面的 5 个时间步长的数据被填充为 `NaN`。