摘要 我有一個 csv 檔案作為資料源,我正在將其加載到 pandas 資料框中。它包含一個包含時間戳的日期時間列,并跨越多個月的歷史記錄,當有人使用機器執行不同的掃描操作時自動創建。操作的型別也記錄在單獨的列中:
| 指數 | 約會時間 | 行動 |
|---|---|---|
| 0 | 2021 年 12 月 7 日 16:39:46 | 一種 |
| 1 | 16/6/2021 10:24:26 | 一種 |
| 2 | 21/6/2021 12:43:35 | b |
| 3 | 2021 年 11 月 6 日 19:56:28 | 一種 |
| 4 | 28/5/2021 14:28:47 | b |
問題 為了繪制一種型別的熱圖并找出一天中的動作何時聚集,我想將時間戳與日期時間隔離開來,因為我并不真正關心日期。
Datetime 最初是一個物件,我使用pd.to.datetime. 現在我可以使用以下方法將時間拆分到不同的列:
df['Time'] = df['Timestamp'].dt.strftime('%H:%M')
但我的問題是,新的 dtype 又是一個物件,出于繪圖的原因,我認為我必須再次轉換它才能正確排序。
最終輸出應該是上面提到的熱圖,x 軸范圍從上午 06:00 到上午 23:00,在 y 軸上的兩個桶中繪制不同的動作型別。只是為了讓您了解資料的最終用途。
對于使用 python pandas 進行時間序列分析的新手的任何指示,我將非常感謝 :)
uj5u.com熱心網友回復:
我認為您正在尋找散點圖而不是熱圖。嘗試:
import matplotlib.pyplot as plt
import matplotlib.dates as md
df["Datetime"] = pd.to_datetime(pd.to_datetime(df["Datetime"], format="%d/%m/%Y %H:%M:%S").dt.strftime("%H:%M"))
ax = df.plot.scatter(x="Datetime",y="Action",rot=90)
ax.set_xlim(pd.Timestamp("06:00"), pd.Timestamp("23:00"))
ax.xaxis.set_major_locator(md.MinuteLocator(byminute = [0]))
ax.xaxis.set_major_formatter(md.DateFormatter('%H:%M'))
輸出:

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/472621.html
