亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

破折號錯誤地格式化時間序列的 x 軸

破折號錯誤地格式化時間序列的 x 軸

哈士奇WWW 2022-05-24 12:51:03
我正在嘗試使用 plotly/Dash 繪制一些時間序列數據,但圖形將無法正確顯示,盡管 x 軸的類型為“datetime.date”、“datetime.datetime”或格式正確的字符串(沒有任何效果.. .)。可能使問題復雜化的是,我使用不同的函數生成了時間序列數據,將其存儲到 dcc.Store 對象(作為 dict)中,然后將其轉換回 Dataframe ......但我不確定。我的代碼如下,但總結一下簡單的行動計劃:將資產的 Ticker 輸入到輸入框中,該輸入框會生成一個字典并存儲到 dcc.Store 中(我想重新使用這個時間序列,因此存儲它而不是一次又一次地重復外部Bloomberg調用)立即從 dcc.Store 檢索該字典,轉換回 Dataframe 并生成簡單圖查看每個步驟生成的數據類型時,我可以看到在使用 df.to_dict() 生成 dict 后,我有以下類型的數據:{'Date': {0: datetime.date(2017, 1, 1),  1: datetime.date(2017, 2, 1),  2: datetime.date(2017, 3, 1),  3: datetime.date(2017, 4, 1),.. 28: datetime.date(2019, 5, 1)}, 'FD004': {0: 18890.3544,  1: 18296.9503,  2: 18667.1757,..  28: 16697.2425}}然后在將此 dict 轉換回 Dataframe 之后,我有:          Date       FD0040   2017-01-01  18890.35441   2017-02-01  18296.95032   2017-03-01  18667.1757其中df ['日期']:0     2017-01-011     2017-02-012     2017-03-01..27    2019-04-0128    2019-05-01Name: Date, dtype: object但是然后我使用 to_datetime 或 astype('datetime64[ns]') 轉換它,這給了我“正確的”dtype:0    2017-01-011    2017-02-012    2017-03-01..27   2019-04-0128   2019-05-01Name: Date, dtype: datetime64[ns]事實上,在檢查生成的最終無花果時,我看到 plotly 已將其識別為日期時間對象:<bound method BaseFigure.show of Figure({    'data': [{'type': 'scatter',              'x': array([datetime.datetime(2017, 1, 1, 0, 0),                          datetime.datetime(2017, 2, 1, 0, 0),                          datetime.datetime(2017, 3, 1, 0, 0),                          . . .                           datetime.datetime(2019, 3, 1, 0, 0),                          datetime.datetime(2019, 4, 1, 0, 0),                          datetime.datetime(2019, 5, 1, 0, 0)], dtype=object),              'y': array([18890.3544, 18296.9503, 18667.1757, ...                          13202.488 , 14463.2424, 15025.5053, 16697.2425])}],    'layout': {'template': '...'}})>但仍然......圖表顯示像意大利面條:
查看完整描述

1 回答

?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

看起來日期并不是全部按遞增順序排序的,因此看起來像“意大利面條”(當回到過去時)。您的打印件顯示的數據看起來已排序,因此我不確定,但中心部分丟失,以檢查它們是否已排序運行

np.all(np.sort(df['Date']) == df['Date'])

您可以對數據進行排序(例如使用np.sortand np.argsort),或者如果您只對點而不是線感到滿意,請使用mode='markers'散點圖(參見https://plot.ly/python/line-and-scatter/)。


查看完整回答
反對 回復 2022-05-24
  • 1 回答
  • 0 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號