web-dev-qa-db-ja.com

datetime.date pandasをプロット

特定のカレンダーの日付のいくつかの値カウントからpandasデータフレームを作成しました。次のようにしました。

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

基本的に、2つの列で、最初の「日付」はdatetime.dateオブジェクトを持つ列で、2番目の列は「カウント」は単なる整数値です。

ここで、散布図またはKDEをプロットして、暦日にわたる値の変化を表したいのですが、どうすればよいでしょうか?

私はデータフレームを見ましたが、それはすべて上で説明したとおりに、正確に順番に見えます。しかし、私がしようとすると:

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

X軸が-50〜150のプロットを取得します。これは、何らかの形でdatetime.dateオブジェクトを整数として解析しているように見えます。また、1つだけではなく2つの同一のプロットが得られます。

どのようにプロットしてX軸に沿ってカレンダーの日を見ることができますか?

8
guy

確かに日時がありますか?私はこれを試してみましたが、うまくいきました:

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')

enter image description here

編集:

散布図が必要な場合:

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

enter image description here

27
epattaro