[投资]akshare库包(实战)

1,017 阅读4分钟

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))

图片.png

<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"`)。