1/获取股票列表(上海+深圳+北京)
上海证券交易所:主板+科创板
深圳证券交易所:主板+创业板
北京证券交易所(9开头)
<1>1个函数获取所有的股票code和name
import akshare as ak
# 经过实际验证,stock_info_a_code_name()函数是可以获取到沪+深+京3市的所有的股票列表的
# 由下图可见,股票代码前面是没有前缀来区分市场的.
all_stock_df = ak.stock_info_a_code_name()
print(all_stock_df.head(10))
<2>通过3个函数
import akshare as ak
import pandas as pd
from functools import reduce
# 上海证券交易所,主板
df1 = ak.stock_info_sh_name_code("主板A股")
df1.insert(0,"市场","沪市主板A股")
print(df1.head())
print(len(df1))
# 上海证券交易所,科创板
df11 = ak.stock_info_sh_name_code("科创板")
df11.insert(0,"市场","科创板")
print(df11.head())
print(len(df11))
# 深圳证券交易所
df2 = ak.stock_info_sz_name_code("A股列表")
df2.insert(0,"市场","深市主板A股")
print(df2.head())
print(len(df2))
# 北京证券交易所
df3 = ak.stock_info_bj_name_code()
df3.insert(0,"市场","北京证券交易所")
print(df3.head())
print(len(df3))
# 汇总
final_data_df = reduce(lambda a,b: pd.concat([a,b],sort=False),[df1,df11, df2,df3])
print(final_data_df.head())
print(len(final_data_df))
2/获取股票历史数据(日线, 周线, 月线)
要使用 akshare 库(基于东方财富数据源)获取沪深京股票的日线级别历史数据,
可通过 stock_zh_a_hist_em 函数实现。
以下是详细使用方法:
import akshare as ak
df = ak.stock_zh_a_hist_em( # 东方财富数据源, em, east money
symbol="股票代码", # 例如 "000001"无需市场前缀
period="daily", # 周期类型:默认 "daily"(日线),可选 "weekly"(周线), "monthly"(月线)
start_date="20200101", # 开始日期(格式:YYYYMMDD)
end_date="20231001", # 结束日期(格式:YYYYMMDD)
adjust="qfq", # 复权类型:""(不复权), "qfq"(前复权), "hfq"(后复权)
)
# 参数详解
1. **`symbol`**:
- 股票代码(**无需市场前缀**),例如 `"600519"`(贵州茅台)、`"830799"`(北交所股票)。
1. **`period`**:
- 时间周期,可选值:
- `"daily"`(日线,默认)
- `"weekly"`(周线)
- `"monthly"`(月线)
1. **`start_date`** 和 **`end_date`**:
- 数据的时间范围,格式为 `YYYYMMDD`。若留空,默认返回上市以来的全部历史数据。
1. **`adjust`**:
- 复权类型:
- `""`(默认,不复权)
- `"qfq"`(前复权)
- `"hfq"`(后复权)
* * *
# 输出字段
返回的 DataFrame 包含以下列:
| 日期| 开盘价| 收盘价| 最高价| 最低价| 成交量| 成交额 | 振幅(%) | 涨跌幅(%)| 涨跌额| 换手率(%)|
| --------- | ----- | --- | ---- | ---- | ----- | ------ | ----- | ---- | --- | --- |
| 2023-10-10 | 18.20 | 18.25 | 18.30 | 18.15 | 123456 | 2250000.00 | 0.82 | 0.55 | 0.10 | 0.75
3/获取股票历史数据( 分钟级别的 )
要获取股票的分钟级别历史数据,可以通过 stock_zh_a_hist_min_em 函数实现。
该函数支持沪深京A股(包括北交所)的分时数据,且能指定不同时间周期(1分钟、5分钟、15分钟等)。
import akshare as ak
# 获取分钟级历史数据
df = ak.stock_zh_a_hist_min_em(
symbol="股票代码", # 例如 "000001"(平安银行),需不带市场前缀
period="1", # 分钟周期:可选 "1", "5", "15", "30", "60", "120"分钟
start_date="20230101", # 开始日期(格式:YYYYMMDD)
end_date="20231231", # 结束日期(格式:YYYYMMDD)
adjust="qfq", # 复权类型:""(不复权), "qfq"(前复权), "hfq"(后复权)
)
print(df)
# 参数说明:
1. **`symbol`**:
- 股票代码(**无需添加市场前缀**),例如 `"600519"`(贵州茅台)、`"830799"`(北交所股票)。
1. **`period`**:
- 分钟周期,可选值:`"1"`(1分钟)、`"5"`(5分钟)、`"15"`(15分钟)、`"30"`(30分钟)、`"60"`(60分钟)。
1. **`start_date`** 和 **`end_date`**:
- 数据的时间范围,格式为 `YYYYMMDD`(例如 `"20231001"`)。
1. **`adjust`**:
- 复权类型:默认 `""`(不复权),`"qfq"`(前复权),`"hfq"`(后复权)。
* * *
# 输出字段示例:
返回的 DataFrame 包含以下列:
| 日期时间 | 开盘价 | 收盘价 | 最高价 | 最低价 | 成交量 | 成交额 |
| ------------------- | ----- | ----- | ----- | ----- | ------ | ---------- |
| 2023-10-10 09:31:00 | 18.20 | 18.25 | 18.30 | 18.15 | 123456 | 2250000.00 |
* * *
# 注意事项:
1. **数据范围**:
- 部分股票的历史分钟数据可能受限于数据源,仅能获取最近一段时间的数据(例如最近1年)。
1. **北交所支持**:
- 北交所股票(代码以 `9` 开头)可直接使用此函数,无需额外处理。
1. **更新依赖**:
- 确保 `akshare` 为最新版本(更新命令:`pip install akshare --upgrade`)。
1. **股票代码格式**:
- **不要带市场前缀**(例如直接使用 `"600519"`,而非 `"sh600519"`)。