2017-06-21 10 views
1

私は以下のデータセットを持っています(簡略化していますが、それでも同じアイデアを伝えています)。私は時間の経過とともにユーザーのスコアがどのように変化するかを示したい(postDateは時間を伝える)。データはまた、postDateによって事前分類される。希望はy軸のスコア、x軸の時刻、時間の経過に伴うユーザーのスコア(ユーザーごとに別々の行)を持つ素敵なプロット(可能であれば海軍を使用する)を見ることです。素早くプロットするためにpostDate(現在の文字列)を別の形式に変換する必要がありますか?どうもありがとうございます!matplotlib/seabornのgroupbyでラインプロットをプロットする?

userID postDate        userScore (1-10 scale) 
Mia1  2017-01-11 09:07:10.616328+00:00  8 
John2 2017-01-17 08:05:45.917629+00:00  6 
Leila1 2017-01-22 07:47:67.615628+00:00  9 
Mia1  2017-01-30 03:45:50.817325+00:00  7 
Leila 2017-02-02 06:38:01.517223+00:00  10 
+0

ここで、 'groupby'はどこに入りますか?各ユーザーの行が必要ですか? –

+0

はい、groupbyはユーザーごとに別々の行です(また、多くのユーザーがいますが、一部には20以上の投稿があります)。これを行うための他の方法があるかもしれません、私はグループバイが必要かもしれないと考えていました。 –

+0

これは次のようなものです: 'df.pipe(seaborn.FacetGrid、hue = 'userID')。map(plt.plot、 'postDate'、 'userScore')' –

答えて

-2

私はplotly使用していた前に、それはあなたがJupyterノートブックを使用している場合は、インタラクティブな視覚化を行うための本当に素晴らしいオプションです。あなたはhtmlsを生成するか、カフリンクスを付けてJupyterにインラインでプロットします。それはあなたのグラフをどこかにホストするために支払われるだけですが、私は自分のデータ分析のために無料でそれを使用します。

また、カフリンクスを使用すると、パンダスdfsでほぼ即座にプロットできるようになります。あなたができる例えば

your_df.iplot(x='postDate', y='userScore') 

これは自動的にあなたが説明「時系列」を提供します。

0

あなたのpostDateシリーズが示しているサンプルデータに基づいて、既にpandasのdatetime値が表示されています。ですから、X軸の日付をプロットするには、プロットではなくplot_dateを使用します。このようなもの:

import matplotlib.pyplot as plt 

fig = plt.figure() 
ax = fig.add_subplot(111) 

for key, g in df.groupby['userID']: 
    ax.plot_date(g['postDate'], g['userScore'], label=key) 

ax.legend() 
関連する問題