【问题标题】:Plotting row based data绘制基于行的数据
【发布时间】:2021-11-17 12:03:34
【问题描述】:

我有一些看起来像这样的数据:

df =

id      period    15-nov    16-nov    17-nov    18-nov
------------------------------------------------------
vodka   night     1         2         3         1
vodka   day       0         1         2         0
vodka   evening   1         2         2         0
rum     night     1         2         3         3
rum     day       1         2         2         0
rum     evening   1         3         2         1

我想做的是绘制标题日期的值,但按 id 和句点分组。所以基本上这将变成 6 个线图,x 轴作为日期。

但是,也许我只是累了,但是这个数据集奇怪地放在了 imo 中,所以我通常的 groupby 东西不起作用,因为只有一些标题是 x 轴值。我正在考虑将日期列转换为一列,然后将日期标题添加为另一列,总共有 4 列 - 但更多行,然后使用 groupby 函数。但我想不出任何聪明的方法来做到这一点,接受也许手动做吧。

那是我要走的路,还是我错过了一个简单的转换技巧?

【问题讨论】:

    标签: python pandas pandas-groupby


    【解决方案1】:

    您可以使用 melt 对您的数据框进行反透视,然后使用 seaborn 绘制线条:

    import seaborn as sns
    
    df_melted = df.melt(value_vars=['15-nov', '16-nov', '17-nov', '18-nov'], 
                        id_vars=['id', 'period'], 
                        var_name='date'
                       )
    
    sns.lineplot(data=df_melted.sort_values('date'), 
                 x='date', y='value', 
                 hue=df_melted['id'] + '_' + df_melted['period']
                )
    

    输出:

    【讨论】:

      猜你喜欢
      • 2020-09-30
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 2014-03-28
      • 2021-04-16
      • 2015-05-18
      • 2018-02-02
      • 2012-05-26
      相关资源
      最近更新 更多