怎么用pandas_datareader.data爬取上证指数的全部股票的数据,并存储到csv文件中
时间: 2024-03-16 11:42:39 浏览: 229
python3使用pandas获取股票数据的方法
5星 · 资源好评率100%
你可以使用 `baostock` 库获取上证指数成份股的股票代码,然后使用 `pandas_datareader` 库获取每个股票的历史数据,并将数据保存到 CSV 文件中。具体步骤如下:
1. 首先,你需要导入相关的库:
```python
import pandas as pd
import pandas_datareader.data as web
import datetime
import baostock as bs
```
2. 接着,登录 `baostock` 并获取上证指数成份股的股票代码:
```python
lg = bs.login()
rs = bs.query_index_member(index_code="000001.SH")
data_list = []
while (rs.error_code == '0') & rs.next():
data_list.append(rs.get_row_data())
bs.logout()
df_codes = pd.DataFrame(data_list, columns=["code", "code_name"])
df_codes.set_index("code", inplace=True)
```
其中,`query_index_member` 函数用于获取上证指数成份股的股票代码,返回的数据格式为一个二维表格,需要转换为 `pandas` 的数据格式。
3. 然后,定义起始日期和结束日期,并使用 `web.DataReader` 函数获取每个股票的历史数据,并将数据保存到 CSV 文件中:
```python
start = datetime.datetime(2000, 1, 1)
end = datetime.datetime(2021, 9, 30)
for code in df_codes.index:
try:
df = web.DataReader(code + ".SS", "yahoo", start, end)
df.to_csv("data/" + code + ".csv")
except:
print(f"{code} failed")
```
其中,`code` 表示股票代码,`"yahoo"` 表示数据源为雅虎财经。你也可以使用其他数据源,如谷歌财经、Quandl 等。
需要注意的是,有些股票可能会在某些时间段内缺失数据,导致无法获取完整的历史数据。在使用 `web.DataReader` 函数获取数据时,如果出现错误,你可以将错误信息打印出来,以便调试。
完整代码如下:
```python
import pandas as pd
import pandas_datareader.data as web
import datetime
import baostock as bs
lg = bs.login()
rs = bs.query_index_member(index_code="000001.SH")
data_list = []
while (rs.error_code == '0') & rs.next():
data_list.append(rs.get_row_data())
bs.logout()
df_codes = pd.DataFrame(data_list, columns=["code", "code_name"])
df_codes.set_index("code", inplace=True)
start = datetime.datetime(2000, 1, 1)
end = datetime.datetime(2021, 9, 30)
for code in df_codes.index:
try:
df = web.DataReader(code + ".SS", "yahoo", start, end)
df.to_csv("data/" + code + ".csv")
except:
print(f"{code} failed")
```
其中,代码中的 `data/` 表示将数据保存到当前工作目录下的 `data` 文件夹中。如果该文件夹不存在,将会自动创建该文件夹。
阅读全文