用matplotlib / seaborn中的groupby绘制线图?

时间:2017-06-21 17:46:21

标签: python pandas plot seaborn pandas-groupby

我有以下数据集(缩写,但仍传达相同的想法)。我想说明用户分数如何随时间变化(postDate传达时间)。数据也由postDate预先排序。希望看到一个很好的情节(如果可能的话,可能使用seaborn),其得分为y轴,时间为x轴,并显示用户'随着时间的推移得分(每个用户都有一个单独的行)。我是否需要将postDate(当前是一个字符串)转换为另一种格式才能很好地绘制?非常感谢你!

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

2 个答案:

答案 0 :(得分:0)

根据您显示的示例数据,您的postDate系列已经是pandas datetime值。因此,要在X轴上绘制日期,matplotlib中的关键是使用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()

答案 1 :(得分:-2)

之前我使用过plotly,如果您使用的是Jupyter Notebook,这是一个非常好的选项来进行交互式可视化。您可以使用袖扣在Jupyter中生成htmls或内联图。它仅用于在某处托管您的图形,但我可以免费使用它进行自己的数据分析。

安装情节和袖扣,袖扣几乎可以立即用pandas dfs做好情节。

例如你可以这样做:

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

这将自动为您提供您描述的“时间序列”。