使用 Pandas 和 Seaborn 绘制日期

Plot dates with Pandas and Seaborn

我有一个 DataFrame,其中每一行都是一个事件,它有一列 datetime 值指定事件的日期和时间。

我只想绘制每天的事件数量,并能够指定 x 轴的开始和结束日期。我该怎么做?

事件的 amount/count 本质上是一个直方图,其中日期是您的日期时间列:

df.date = df.date.astype("datetime64")
df.groupby(df.date.dt.day).count().plot(kind="scatter")

考虑一个 DF 包含具有日期时间值的单个列,如下所示:

df = pd.DataFrame(pd.date_range('1/1/2016', periods=10, freq='D'), columns=['Date'])

将原始 DF 的样本与其自身连接起来以创建重复值(例如,5)

df_dups = pd.concat([df, df.sample(n=5, random_state=42)], ignore_index=True)

通过将它堆叠到一个系列对象中来计算它的唯一计数。

plotting_df = df_dups.stack().value_counts().reset_index(name='counts')

散点图:

由于 x 轴和 y 轴仅支持数值作为内置散点图方法的参数,我们必须调用 matplotlib 轴对象的 plot_date 函数来保留日期。

fig, ax = plt.subplots()
ax.plot_date(plotting_df['index'], plotting_df['counts'], fmt='.', color='k')
ax.set_ylim(0, plotting_df['counts'].values.max()+1)
fig.autofmt_xdate()
plt.xlabel('Date')
plt.ylabel('Counts')
plt.show()