matplotlib 在datetime.datePandas Dataframe 中绘制www.example.com/时间序列

plupiseo  于 2023-02-05  发布在  其他
关注(0)|答案(2)|浏览(84)

我根据特定日历日期的一些值计数创建了一个panda Dataframe 。

time_series = pd.DataFrame(df['Operation Date'].value_counts().reset_index())
time_series.columns = ['date', 'count']

基本上,它是两列,第一列“date”是datetime.date对象,第二列“count”是简单的整数值。现在,我想绘制一个散点图或KDE来表示值在日历天中的变化。
但当我尝试时:

time_series.plot(kind='kde')
plt.show()

我得到了一个x轴从-50到150的图,就好像它把datetime.date对象解析成整数一样,而且,它产生了两个相同的图,而不是一个。
你知道我怎么画出它们并沿着x轴看到日历上的一天吗?

x9ybnkn6

x9ybnkn61#

你确定你有约会时间吗?我刚试过这个,效果很好:

df =    date    count
7   2012-06-11 16:51:32 1.0
3   2012-09-28 08:05:14 12.0
19  2012-10-01 18:01:47 4.0
2   2012-10-03 15:18:23 29.0
6   2012-12-22 19:50:43 4.0
1   2013-02-19 19:54:03 28.0
9   2013-02-28 16:08:40 17.0
12  2013-03-12 08:42:55 6.0
4   2013-04-04 05:27:27 6.0
17  2013-04-18 09:40:37 29.0
11  2013-05-17 16:34:51 22.0
5   2013-07-07 14:32:59 16.0
14  2013-10-22 06:56:29 13.0
13  2014-01-16 23:08:46 20.0
15  2014-02-25 00:49:26 10.0
18  2014-03-19 15:58:38 25.0
0   2014-03-31 05:53:28 16.0
16  2014-04-01 09:59:32 27.0
8   2014-04-27 12:07:41 17.0
10  2014-09-20 04:42:39 21.0

df = df.sort_values('date', ascending=True)
plt.plot(df['date'], df['count'])
plt.xticks(rotation='vertical')

编辑:
如果需要散点图,可以:

plt.plot(df['date'], df['count'], '*')
plt.xticks(rotation='vertical')

dsf9zpds

dsf9zpds2#

如果列是datetime dtype(不是object),那么你可以直接在 Dataframe 上调用plot()。你也不需要按日期排序,如果x轴是datetime,它在后台完成。

df['date'] = pd.to_datetime(df['date'])
df.plot(x='date', y='count', kind='scatter', rot='vertical');

你也可以传递许多参数来使绘图更好(添加标题,改变图形大小和字体大小,旋转刻度标签,设置子绘图轴等)。

df.plot(x='date', y='count', kind='line', rot=45, legend=None, 
        title='Count across time', xlabel='', fontsize=10, figsize=(12,4));

您甚至可以使用另一列为散点图着色。在下面的示例中,月份用于指定颜色。提示:要获得可能的色彩Map表的完整列表,请将任意乱码字符串传递给colormap,错误消息将显示完整列表。

df.plot(x='date', y='count', kind='scatter', rot=90, c=df['date'].dt.month, colormap='tab20', sharex=False);

相关问题