Python | AKShare获取A股数据_akshare获取股票数据
运行环境: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 akprint(\"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 akimport 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/\")
运行结果截图: