代码之家  ›  专栏  ›  技术社区  ›  Daniel Zapata

Matplotlib/Seaborn基于计算值(Pandas数据帧)

  •  1
  • Daniel Zapata  · 技术社区  · 6 年前

    我有下表(对不起格式):

    Date         Service Reference  Document
    2018-05-14   A       Null       3542523
    2018-05-15   B       01         6234242
    2018-05-16   A       09         2342146 
    2018-05-16   C       Null       2342342
    

    我有一个计算值

    Reference.count/Document.count()
    

    enter image description here

    在x轴中,我有日期,在y轴上计算列,但用不同的线表示不同的服务。

    def calculate(df):
        return df.Reference.count() / df.Document.count()
    
    df1 = df.groupby(['Date']).apply(calculate)
    

    但是,如果我尝试向groupby添加服务,则无法使用

    sns.lineplot()
    

    是否有其他方法或更简单的方法将服务维度添加到绘图中?

    谢谢

    1 回复  |  直到 6 年前
        1
  •  1
  •   Gerges    6 年前

    使用以下方法按日期和服务聚合数据后:

    df1 = df.groupby(['Date', 'Service']).apply(calculate)
    

    然后,重置索引以转换为数据帧(从序列)

    df1 = df1.reset_index()
    

    然后绘制:

    sns.lineplot(x='Date', y=0, hue='Service', data=df1)