1 介绍
文档 Document:Akshare
Github:Akshare
2 安装
2.1 重要提示
- 目前 AKShare 仅支持 64 位版本的操作系统安装和使用;
- 目前 AKShare 仅支持 Python 3.8(64 位) 及以上版本, 这里推荐 Python 3.11.x(64 位) 版本;
- AKShare 推荐安装最新版本的 Anaconda (64 位), 可以解决大部分环境配置问题;
- 对于熟悉容器技术的小伙伴, 可以安装 Docker 使用, 指导教程如下: AKShare Docker 部署.
2.2 安装
pip install akshare --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
3 试用
3.1 指数数据
import akshare as ak
# 单次返回所有指数的实时行情数据
zh_index_spot_em_df = ak.stock_zh_index_spot_em(symbol="上证系列指数")
效果(沪市指数列表):
3.2 指数历史行情
# 单次返回具体指数的所有历史行情数据
index_df = ak.index_zh_a_hist(
symbol="000300", period="daily", start_date="20140101", end_date="20240930")
效果(沪深300历史数据):
4 用途
举例:可以计算各个指数每年的年收益率
def calculate_annual_returns(df:pd.DataFrame):
# 确保传入的DataFrame包含'date'和'close'列
if 'date' not in df.columns or 'close' not in df.columns:
raise ValueError("DataFrame must include 'date' and 'close' columns")
# 将 'date' 列转换为日期格式
df['date'] = pd.to_datetime(df['date'])
# 添加一个 'year' 列,其中包含日期的年份
df['year'] = df['date'].dt.year
# 对每年的数据进行分组,并计算年初和年末的收盘价
annual_data = df.groupby('year').agg({'close': ['first', 'last']})
# 计算年度收益率
annual_data['annual_return'] = round((
annual_data['close']['last'] / annual_data['close']['first'] - 1) * 100)
# 重置索引以方便查看结果
annual_returns = annual_data.reset_index()
# 重命名列以使其更具描述性
annual_returns.columns = [
'year', 'start_of_year_close', 'end_of_year_close', 'annual_return']
# 输出起止日期
start_date = dt.datetime.strftime(df['date'].min(), '%Y%m%d')
end_date = dt.datetime.strftime(df['date'].max(), '%Y%m%d')
return annual_returns, start_date, end_date