金融数据---获取股票日线数据
获取股票日线的数据方式有很多,包括东方财富,同花顺,tushare,这里我们就利用东方财富的数据,是免费的开源获取,第一步先安装akshare,pip安装就可以
py -m pip install akshare
Akshare 股票数据获取函数说明
函数概述
以下代码使用 Akshare 库获取中国 A 股市场的历史日线数据,并以 DataFrame 格式输出结果。
import akshare as ak# 定义股票代码和时间范围
symbol = 'sh000001' # 上证指数代码
start_date = '20240101' # 开始日期:2024年1月1日
end_date = '20500101' # 结束日期:2050年1月1日(实际获取到最新可用数据)# 获取股票历史数据
df = ak.stock_zh_a_daily(symbol=symbol, start_date=start_date, end_date=end_date)# 打印数据框
print(df)
参数详细说明
1. 股票代码 (symbol)
- 格式:市场代码 + 股票代码
- 示例:
sh000001
(上证指数) - 常见市场前缀:
sh
:上海证券交易所sz
:深圳证券交易所bj
:北京证券交易所
2. 时间范围参数
- start_date:数据开始日期,格式为
YYYYMMDD
- end_date:数据结束日期,格式为
YYYYMMDD
- 注意:如果结束日期设置为未来日期,函数会自动返回到最新可用数据
函数返回值
ak.stock_zh_a_daily()
函数返回一个 Pandas DataFrame,包含以下列:
列名 | 说明 | 数据类型 |
---|---|---|
date | 交易日期 | datetime64[ns] |
open | 开盘价 | float64 |
high | 最高价 | float64 |
low | 最低价 | float64 |
close | 收盘价 | float64 |
volume | 成交量 | float64 |
outstanding_share | 流通股本 | float64 |
turnover | 换手率 | float64 |
完整示例代码
import akshare as ak
import pandas as pddef get_stock_data(symbol, start_date, end_date):"""获取指定股票代码在指定时间范围内的日线数据参数:symbol (str): 股票代码,如 'sh000001'start_date (str): 开始日期,格式 'YYYYMMDD'end_date (str): 结束日期,格式 'YYYYMMDD'返回:pandas.DataFrame: 包含股票日线数据的DataFrame"""try:# 获取股票数据df = ak.stock_zh_a_daily(symbol=symbol, start_date=start_date, end_date=end_date)# 重置索引,使日期成为一列df.reset_index(inplace=True)print(f"成功获取 {symbol} 从 {start_date} 到 {end_date} 的数据")print(f"数据形状: {df.shape}")return dfexcept Exception as e:print(f"获取数据时出错: {e}")return None# 使用示例
if __name__ == "__main__":# 设置参数symbol = 'sh000001' # 上证指数start_date = '20240101' # 开始日期end_date = '20500101' # 结束日期(实际获取到最新数据)# 获取数据stock_data = get_stock_data(symbol, start_date, end_date)# 显示数据前几行if stock_data is not None:print("\n数据前5行:")print(stock_data.head())print("\n数据基本信息:")print(stock_data.info())
注意事项
- 数据延迟:Akshare 的数据通常有15分钟延迟,实时数据可能需要权限或付费
- 日期格式:必须使用
YYYYMMDD
格式,例如20240101
表示2024年1月1日 - 数据范围:结束日期设置为未来日期时,会自动获取到最新可用数据
- 错误处理:添加了异常处理,防止因网络问题或参数错误导致程序崩溃
- 数据完整性:返回的数据包含基本的日线信息,适合大多数技术分析需求
输出结果
date open high low close volume amount outstanding_share turnover
0 2024-01-02 2972.78 2976.27 2962.28 2962.28 3.041418e+10 3.459507e+11 1.940555e+10 1.567293
1 2024-01-03 2957.11 2971.28 2953.29 2967.25 2.854559e+10 3.210184e+11 1.940555e+10 1.471002
2 2024-01-04 2965.51 2966.68 2936.64 2954.35 2.649809e+10 2.962913e+11 1.940555e+10 1.365491
3 2024-01-05 2949.82 2967.97 2916.72 2929.18 3.010402e+10 3.259170e+11 1.940555e+10 1.551310
4 2024-01-08 2923.46 2924.46 2887.54 2887.54 2.702751e+10 2.907306e+11 1.940555e+10 1.392772
.. ... ... ... ... ... ... ... ... ...
407 2025-09-05 3761.88 3817.16 3745.31 3812.51 6.262234e+10 9.790617e+11 1.940560e+10 3.227024
408 2025-09-08 3811.67 3833.14 3803.60 3826.84 6.600669e+10 1.025884e+12 1.940560e+10 3.401425
409 2025-09-09 3816.66 3834.67 3791.72 3807.29 6.002394e+10 9.177953e+11 1.940560e+10 3.093124
410 2025-09-10 3806.58 3827.00 3794.06 3812.22 5.345398e+10 8.211136e+11 1.940560e+10 2.754565
411 2025-09-11 3806.06 3875.31 3796.44 3875.31 6.170129e+10 1.016794e+12 1.940560e+10 3.179561[412 rows x 9 columns]