Python 通過 akshare 輕鬆繪製股票中國平安K線圖

想通過 Python 和 akshare 繪製 K線圖,網上找了很多代碼,放在 Pycharm 中都是無法正常運行繪製的,於是自己整理了下並調試成功。

環境:

python3.9(miniconda3)、Pycharm、Win10

需要用的模塊或者工具庫:

akshare(1.11.91)、pandas(2.1.1)、numpy(1.26.2)、matplotlib(3.8.2)、mplfinance(0.12.10b0)

繪製K線圖流程如下:

  1. 獲取中國平安數據

    def getStoneData():
        pingan = ak.stock_zh_a_daily(symbol="sh601318", adjust="qfq")
        df3 = pingan.reset_index().iloc[-30:, :6]  # 取過去30天數據
        df3 = df3.dropna(how='any').reset_index(drop=True)  # 去除空值且從零開始編號索引
        df3 = df3.sort_values(by='date', ascending=True)
        print(df3.info())
    
        # 均線數據
        df3['5'] = df3.close.rolling(5).mean()
        df3['10'] = df3.close.rolling(10).mean()
    
    
        print(df3.tail())
        return df3
    

    通過 akshare 獲取數據如下:

    ************<class 'pandas.core.frame.DataFrame'>
    RangeIndex: 30 entries, 0 to 29
    Data columns (total 6 columns):
     #   Column  Non-Null Count  Dtype  
    ---  ------  --------------  -----  
     0   index   30 non-null     int64  
     1   date    30 non-null     object 
     2   open    30 non-null     float64
     3   high    30 non-null     float64
     4   low     30 non-null     float64
     5   close   30 non-null     float64
    dtypes: float64(4), int64(1), object(1)
    memory usage: 1.5+ KB
    None
        index        date   open   high    low  close       5      10
    25   4011  2023-12-04  40.85  41.27  40.31  40.38  40.924  41.801
    26   4012  2023-12-05  40.12  40.17  39.51  39.53  40.496  41.447
    27   4013  2023-12-06  39.50  39.75  39.29  39.53  40.252  41.127
    28   4014  2023-12-07  39.36  39.72  38.88  39.34  39.960  40.756
    29   4015  2023-12-08  39.25  39.63  39.19  39.19  39.594  40.406
    
  2. 繪製K線圖

    def drawKLine(df3):
        plt.style.use("ggplot")
        fig, ax = plt.subplots(1, 1, figsize=(8, 3), dpi=200)
        # 繪製 K線
        candlestick2_ohlc(ax,
                          opens=df3['open'].values,
                          highs=df3['high'].values,
                          lows=df3['low'].values,
                          closes=df3['close'].values,
                          width=0.75, colorup="r", colordown="g")
    
        # 顯示最高點和最低點
        ax.text(df3.high.idxmax(), df3.high.max(), s=df3.high.max(), fontsize=8)
        ax.text(df3.high.idxmin(), df3.high.min() - 2, s=df3.high.min(), fontsize=8)
        # 顯示中文
        plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
    
        ax.set_facecolor("white")
        ax.set_title("中國平安")
    
        # 畫均線
        plt.plot(df3['5'].values, alpha=0.5, label='MA5')
        plt.plot(df3['10'].values, alpha=0.5, label='MA10')
    
        ax.legend(facecolor='white', edgecolor='white', fontsize=6)
        # date 爲 object 數據類型,通過 pd.to_datetime將該列數據轉換爲時間類型,即datetime
        df3.date = pd.to_datetime(df3.date, format='%Y-%m-%d')
        # 修改x軸座標
        plt.xticks(ticks=np.arange(0, len(df3)), labels=df3.date.dt.strftime('%Y-%m-%d').to_numpy())
        plt.xticks(rotation=90, size=8)
        # 修改y軸座標
        ax.yaxis.set_major_formatter(FormatStrFormatter('%.2f'))
        # x軸座標顯示不全,整理
        plt.subplots_adjust(bottom=0.25)
        plt.show()
    

    股票中國平安的 K線繪製如下:


源碼已上傳 ,需要獲取源碼,可以在微信後臺回覆“繪製K線”關鍵字獲取源碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章