簡體   English   中英

顯示每天唯一事件的時間序列圖

[英]Time series plot showing unique occurrences per day

我有一個數據框,我想在其中制作一個時間序列圖,其中包含三條不同的線,每條線顯示另一列中每個值的每日出現次數(每天的行數)。

舉個例子,對於下面的數據框,我想看看每天有多少個a、b和c的發展。

df = pd.DataFrame({'date':pd.to_datetime(['2019-10-10','2019-10-14','2019-10-09','2019-10-10','2019-10-08','2019-10-14','2019-10-10','2019-10-08','2019-10-08','2019-10-13','2019-10-08','2019-10-12','2019-10-11','2019-10-09','2019-10-08']),
                   'letter':['a','b','c','a','b','b','b','b','c','b','b','a','b','a','c']})

但是,當我嘗試下面的命令(到目前為止我的最佳猜測)時,它不會過濾不同的日期(我想要代表每個字母的三行。

關於如何解決這個問題的任何想法?

df.groupby(['date']).count().plot()['letter']

在此處輸入圖像描述

我也在 Matplotlib 中嘗試了一個解決方案,盡管這個給出了一個錯誤..

fig, ax = plt.subplots()
ax.plot(df['date'], df['letter'].count())

根據您的問題,我相信您正在尋找一個線圖,它在 X 軸上有日期,在 Y 軸上有字母數。 為此,您需要執行以下步驟...

  1. 按日期和字母對數據框進行分組 - 獲取每個條目/行的數量,您可以使用size()
  2. 使用reset_index()平分組數據框,將新列重命名為Counts並按letter列排序(以便圖例以字母格式顯示數據)......這些更多地與保持新數據框和圖形清潔和像樣。 我建議您分別執行每個步驟並打印,以便您知道每個步驟中發生了什么
  3. 使用按每個特定字母過濾數據框分別繪制每個線圖
  4. 顯示圖例並輪換日期,使其具有更好的可見性

代碼如下所示......

df = pd.DataFrame({'date':pd.to_datetime(['2019-10-10','2019-10-14','2019-10-09','2019-10-10','2019-10-08','2019-10-14','2019-10-10','2019-10-08','2019-10-08','2019-10-13','2019-10-08','2019-10-12','2019-10-11','2019-10-09','2019-10-08']),
                   'letter':['a','b','c','a','b','b','b','b','c','b','b','a','b','a','c']})

df_grouped = df.groupby(by=['date', 'letter']).size().reset_index() ## New DF for grouped data
df_grouped.rename(columns = {0 : 'Counts'}, inplace = True)
df_grouped.sort_values(['letter'], inplace=True)
colors = ['r', 'g', 'b'] ## New list for each color, change as per your preference

for i, ltr in enumerate(df_grouped.letter.unique()):
    plt.plot(df_grouped[df_grouped.letter == ltr].date, df_grouped[df_grouped.letter == ltr].Counts, '-o', label=ltr, c=colors[i])
plt.gcf().autofmt_xdate() ## Rotate X-axis so you can see dates clearly without overlap
plt.legend() ## Show legend

輸出圖

新情節

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM