module 'pandas_datareader.data' has no attribute 'get_components'
时间: 2023-08-08 07:10:03 浏览: 46
非常抱歉,`pandas_datareader` 库已经不再支持 `get_components()` 函数。你可以使用 `tushare` 库来获取上证指数中的股票代码。
下面是修改后的示例代码:
```python
import pandas_datareader.data as web
import pandas as pd
import tushare as ts
# 设置起始日期和结束日期
start_date = '2021-01-01'
end_date = '2021-12-31'
# 上证指数的代码为 '000001.SH'
index_code = '000001.SH'
# 获取上证指数中所有股票的代码
index_components = ts.get_index_stocks(index_code)
# 获取所有股票的历史数据
all_data = pd.DataFrame()
for code in index_components:
# 从 Yahoo Finance 上获取数据
data = web.get_data_yahoo(code + '.SS', start_date, end_date)
# 将数据添加到 all_data DataFrame 中
all_data = pd.concat([all_data, data])
# 将数据存储到 CSV 文件中
all_data.to_csv('shanghai_index_stocks_data.csv')
```
在上面的代码中,我们首先使用 `ts.get_index_stocks()` 函数获取上证指数中所有股票的代码,然后循环遍历所有股票,使用 `web.get_data_yahoo()` 函数从 Yahoo Finance 上获取历史数据,并将数据添加到一个 DataFrame 中。最后,使用 Pandas 的 `to_csv()` 函数将数据存储到 CSV 文件中。