Python | AKShare获取A股数据

运行环境:jupyter notebook (python 3.12.7) + AKShare 1.16.87

1.安装akshare

# 在Jupyter中直接安装
!pip install akshare --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple

验证安装成功:

import akshare as ak
print("AKShare版本:", ak.__version__)

2.以A股贵州茅台600519为例,获取数据

try:
    import akshare as ak
    print("\n尝试使用AKShare获取A股数据示例:")
    a_stock = ak.stock_zh_a_hist(symbol="600519", period="daily", start_date="20250101", end_date="20250507")
    print(a_stock.head())
except ImportError:
    print("\n提示:安装AKShare可获得中国证券市场数据 -> pip install akshare")
except Exception as e:
    print(f"AKShare获取失败:{str(e)}")

运行结果截图:

import akshare as ak
import pandas as pd

# 设置显示参数
pd.set_option('display.max_columns', None)
pd.set_option('display.width', 1000)

def get_a_stock_data(symbol, start_date, end_date):
    """获取A股历史行情数据(自动重试版)"""
    for _ in range(3):
        try:
            df = ak.stock_zh_a_hist(
                symbol=symbol,
                period="daily",
                start_date=start_date,
                end_date=end_date,
                adjust="hfq"  # 可选参数:hfq后复权, qfq前复权, 空为不复权
            )
            
            # 转换日期格式
            df['日期'] = pd.to_datetime(df['日期'])
            df.set_index('日期', inplace=True)
            
            # 重命名列(英文列名更方便处理)
            df = df.rename(columns={
                '开盘': 'open',
                '收盘': 'close',
                '最高': 'high',
                '最低': 'low',
                '成交量': 'volume',
                '成交额': 'amount',
                '振幅': 'amplitude',
                '涨跌幅': 'pct_chg',
                '涨跌额': 'change',
                '换手率': 'turnover'
            })
            
            return df.sort_index()
            
        except Exception as e:
            print(f"获取数据失败,正在重试... ({str(e)})")
            continue
            
    raise ConnectionError("数据获取失败,请检查网络或代码")

# 执行数据获取
try:
    data = get_a_stock_data("600519", "20250101", "20250507")
    print("\n数据获取成功!前5行数据:")
    print(data.head())
    
    print("\n基础统计信息:")
    print(data.describe())
    
except Exception as e:
    print("发生错误:", str(e))
    print("建议解决方案:")
    print("1. 检查股票代码格式(需纯数字,不带市场后缀)")
    print("2. 尝试调整日期格式为YYYYMMDD")
    print("3. 访问AKShare官网查看最新接口文档:https://www.akshare.xyz/")

运行结果截图:

### 使用 Akshare获取股票或其他金融产品历史数据 Akshare 是一个强大的 Python 财经数据接口库,能够提供多种金融产品的基本面、实时行情以及历史数据支持[^1]。以下是通过 Akshare 获取股票或其他金融产品历史数据的具体方法和代码示例。 #### 安装 Akshare 在使用 Akshare 前,需先安装该库。可以通过以下命令完成安装: ```bash pip install akshare ``` #### 获取股票的历史数据 Akshare 提供了 `stock_zh_a_hist` 方法来获取 A 市场的历史交易数据。此函数允许指定股票代码、周期(日线/周线等)、起始日期和结束日期等参数。下面是一个完整的代码示例: ```python import akshare as ak # 设置股票代码 (例如 'sh600519' 表示贵州茅台) symbol = "sz000665" # 调用 stock_zh_a_hist 函数获取历史数据 data = ak.stock_zh_a_hist( symbol=symbol, # 股票代码 period="daily", # 数据周期,默认为 daily 日线 start_date="20230101", # 开始时间 end_date="20240930", # 结束时间 adjust="" # 复权选项:"" 不复权;"qfq" 前复权;"hfq" 后复权 ) print(data.head()) # 打印前几行数据查看结果 ``` 上述代码会返回指定时间段内的每日收盘价、开盘价、最高价、最低价以及其他指标的数据表[^1]。 #### 参数说明 - **symbol**: 股票代码,如 `'sh600519'` 或 `'sz000665'`。 - **period**: 数据周期,可选值有 `"daily"`(默认),表示日线;还有 `"weekly"` 和 `"monthly"` 分别代表周线和月线。 - **start_date/end_date**: 设定查询的时间范围,格式为 YYYYMMDD。 - **adjust**: 是否进行复权处理,可以选择不复权 (`""`)、前复权 (`"qfq"`) 或后复权 (`"hfq"`)。 #### 输出样例 运行以上代码后,可能会得到如下形式的结果表格: | date | open | close | high | low | volume | |------------|----------|----------|----------|----------|---------------| | 2023-01-03 | 8.50 | 8.75 | 8.90 | 8.45 | 123456789 | 其中每一列分别对应日期、开盘价、收盘价、最高价、最低价及成交量等字段[^2]。 #### 其他金融产品数据 除了股票外,Akshare 还可以用于获取其他类型的金融产品数据,比如基金、期货、外汇等。具体方法名称可能有所不同,通常会在官方文档中有详细介绍。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值