运行环境: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/")
运行结果截图: