使用pandas-datareader包下载A股股价数据

本文介绍如何在Anaconda3环境下安装pandas-datareader包,并利用该包从Yahoo Finance获取指定股票的历史交易数据。通过具体示例演示了如何设置时间范围并读取华泰证券2019年以来的股票数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、首先安装Anaconda3环境。

2、安装pandas-datareader包

anaconda search -t conda pandas-datareader  //搜索pandas-datareader包

anaconda show brianjmcguirk/pandas-datareader  //查看pandas-datareader包相关信息

//安装和python3.7兼容的pandas-datareader包
conda install --channel https://conda.anaconda.org/brianjmcguirk pandas-datareader

3、获取某只股票的交易信息

import datetime
import pandas as pd
import pandas_datareader.data as web
start = datetime.datetime(2019,1,1)#获取数据的时间段-起始时间
end = datetime.date.today()#获取数据的时间段-结束时间
stock = web.DataReader("601688.SS", "yahoo", start, end)#获取华泰证券2019年1月1日至今的股票数据
print(stock.head(5))
print(stock.tail(5))

 

### 使用Python实现股价预测模型 #### 数据收集 为了建立有效的票价格预测模型,数据收集至关重要。通常会使用`pandas_datareader`或其他API接口如Tushare来获取历史票行情数据[^3]。 ```python import pandas as pd from datetime import datetime import yfinance as yf start_date = '2018-01-01' end_date = datetime.today().strftime('%Y-%m-%d') ticker = "AAPL" data = yf.download(ticker, start=start_date, end=end_date) print(data.tail()) ``` #### 数据预处理 获得原始数据之后,需要对其进行必要的清理工作,比如去除缺失值、重复记录以及执行标准化/归一化操作等。这些步骤有助于提升后续建模过程的质量和效率。 ```python # 去除NA值 data.dropna(inplace=True) # 归一化处理 from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler(feature_range=(0, 1)) scaled_data = scaler.fit_transform(data['Close'].values.reshape(-1, 1)) # 创建时间窗口特征 def create_dataset(dataset, time_step=60): X, Y = [], [] for i in range(len(dataset)-time_step-1): a = dataset[i:(i+time_step), 0] X.append(a) Y.append(dataset[i + time_step, 0]) return np.array(X), np.array(Y) X_train, y_train = create_dataset(scaled_data, 60) ``` #### 构建与训练LSTM模型 长期短期记忆网络(LSTM)因其能够捕捉长时间序列模式的能力而在金融领域得到广泛应用。下面展示了如何利用Keras框架搭建一个简单的LSTM架构,并完成初步的拟合任务[^4]。 ```python from keras.models import Sequential from keras.layers import Dense, LSTM model = Sequential() model.add(LSTM(units=50, return_sequences=True, input_shape=(60, 1))) model.add(LSTM(units=50)) model.add(Dense(1)) model.compile(optimizer='adam', loss='mean_squared_error') history = model.fit(X_train, y_train, epochs=100, batch_size=32, verbose=1) ``` #### 预测未来走势并绘图显示 经过充分的学习阶段后,就可以尝试对未来一段时间内的收盘价做出推测,并通过图表直观呈现出来。 ```python test_inputs = scaled_data[len(scaled_data) - len(y_test) - 60:].reshape(-1, 1) predicted_stock_price = [] for i in range(60, test_inputs.shape[0]): x_input = test_inputs[i-60:i].reshape((1, -1)) temp_input = list(x_input) temp_input = temp_input[0].tolist() predicted_stock_price.append(model.predict(np.array([temp_input]))) plt.figure(figsize=(16,8)) plt.plot(data.index[-len(test_inputs):], scaler.inverse_transform(predicted_stock_price), color="blue", label="Predicted Price") plt.plot(data.index[-len(test_inputs):], data["Close"][-len(test_inputs):], color="red", label="Real Stock Price") plt.legend(loc='best') plt.show() ``` 需要注意的是,虽然上述方法可以在某种程度上反映市场趋势,但由于市本身的不确定性和复杂性,任何基于过去表现所作出来的结论都存在局限性,不应被视作绝对的投资建议[^1]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值