与 Pandas 和 Seaborn 绘制日期

Mar*_*oni 1 python matplotlib pandas seaborn

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

我只想绘制每天的事件数量,并能够指定 x 轴的开始和结束日期。我怎样才能做到这一点?

Nic*_*eli 5

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

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

在此输入图像描述

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

df_dups = pd.concat([df, df.sample(n=5, random_state=42)], ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

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

plotting_df = df_dups.stack().value_counts().reset_index(name='counts')
Run Code Online (Sandbox Code Playgroud)

散点图:

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

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()
Run Code Online (Sandbox Code Playgroud)

图像