1. 程式人生 > >【解決辦法】pandas畫出時序資料(股票資料)橫軸不是時間

【解決辦法】pandas畫出時序資料(股票資料)橫軸不是時間

簡述

遇到了這個問題,被坑了很久。

首先我們要假設我們一直認為index是時間資料。然後我們發現沒有看到橫軸為時間
(如果不是的這麼認為的話,就記得先把index設定為時間資料)

可能性

遇到這個問題有很多種可能。

  • 讀取的時候,時間所在的列沒有被設定為index。
    • 這種可能下的樣子就是: 畫出的圖,橫軸為數字(預設index)
    • 解決辦法: 重新設定為index(往往這個問題,會伴隨著下面的問題
    • df = pd.read_csv("sh.csv", index_col=0)
  • 在dataframe中index看來就是時間資料了,但是任然沒有為時間
    • 這樣可能下的樣子就是:
      畫出的圖,沒有x軸
    • 解決辦法: 記得將資料轉成時間資料
    • df.index = list(map(lambda x: datetime.datetime.strptime(x, "%Y-%m-%d"), df.index))

資料正規化:(處理後的)

                open     close      high       low        volume         money
2010-01-04  3592.468  3535.229  3597.748  3535.229  6.610108e+09  9.341984e+10
2010
-01-05 3545.186 3564.038 3577.526 3497.661 8.580964e+09 1.283024e+11 2010-01-06 3558.700 3541.727 3588.832 3541.173 7.847312e+09 1.210460e+11 2010-01-07 3543.160 3471.456 3558.556 3452.769 8.035004e+09 1.204362e+11 2010-01-08 3456.908 3480.130 3482.083 3426.698 6.079025e+09 9.019096e+10 2010-01-11 3593.106 3482.052 3594.528
3465.317 8.998017e+09 1.341140e+11 2010-01-12 3477.842 3534.916 3535.407 3437.661 9.374328e+09 1.340714e+11 2010-01-13 3448.291 3421.144 3490.112 3415.693 1.124579e+10 1.598604e+11 2010-01-14 3433.472 3469.051 3470.323 3411.812 8.335325e+09 1.181079e+11 2010-01-15 3472.524 3482.738 3500.072 3448.661 7.254310e+09 1.040352e+11

在這裡插入圖片描述