獲取股票日線的數據方式有很多,包括東方財富,同花順,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]