代码之家  ›  专栏  ›  技术社区  ›  mkerins

大熊猫从groupby那里变得吝啬

  •  0
  • mkerins  · 技术社区  · 9 年前

    count=1 file_type=2007 app=smtp timestamp=2017-07-25 20:01:02.042000
    count=2 file_type=jar app=http timestamp=2017-07-25 20:01:02.042000
    count=4421 file_type=gzip app=http timestamp=2017-07-25 20:01:02.042000
    count=31 file_type=pdf app=http timestamp=2017-07-25 20:01:02.042000
    count=6 file_type=cdf app=http timestamp=2017-07-25 20:01:02.042000
    count=64 file_type=ooxml app=http timestamp=2017-07-25 20:01:02.042000
    count=8 file_type=7z app=http timestamp=2017-07-25 20:01:02.042000
    count=38 file_type=2007 app=http timestamp=2017-07-25 20:01:02.042000
    count=47 file_type=other app=http timestamp=2017-07-25 20:01:02.042000
    count=383 file_type=zip app=http timestamp=2017-07-25 20:01:02.042000
    count=47 file_type=rtf app=http timestamp=2017-07-25 20:01:02.042000
    count=29 file_type=image app=http timestamp=2017-07-25 20:01:02.042000
    count=1 file_type=zip app=ftp_data timestamp=2017-07-25 20:01:02.042000
    count=99 file_type=cab app=http timestamp=2017-07-25 20:01:02.042000
    count=22 file_type=pe32 app=http timestamp=2017-07-25 20:01:02.042000
    count=77 file_type=pdf app=smtp timestamp=2017-07-25 20:01:02.042000
    count=4 file_type=7z app=ftp_data timestamp=2017-07-25 19:01:01.407000
    count=1 file_type=jar app=http timestamp=2017-07-25 19:01:01.407000
    count=2 file_type=dmg app=http timestamp=2017-07-25 19:01:01.407000
    count=4570 file_type=gzip app=http timestamp=2017-07-25 19:01:01.407000
    count=109 file_type=pdf app=http timestamp=2017-07-25 19:01:01.407000
    count=13 file_type=cdf app=http timestamp=2017-07-25 19:01:01.407000
    count=2 file_type=xar app=http timestamp=2017-07-25 19:01:01.407000
    count=232 file_type=ooxml app=http timestamp=2017-07-25 19:01:01.407000
    count=12 file_type=7z app=http timestamp=2017-07-25 19:01:01.407000
    count=98 file_type=2007 app=http timestamp=2017-07-25 19:01:01.407000
    count=75 file_type=other app=http timestamp=2017-07-25 19:01:01.407000
    count=8 file_type=pe32 app=ftp_data timestamp=2017-07-25 19:01:01.407000
    count=867 file_type=zip app=http timestamp=2017-07-25 19:01:01.407000
    count=304 file_type=image app=http timestamp=2017-07-25 19:01:01.407000
    count=9 file_type=zip app=ftp_data timestamp=2017-07-25 19:01:01.407000
    count=497 file_type=cab app=http timestamp=2017-07-25 19:01:01.407000
    count=1 file_type=lzma app=http timestamp=2017-07-25 19:01:01.407000
    count=45 file_type=pe32 app=http timestamp=2017-07-25 19:01:01.407000
    count=43 file_type=pdf app=smtp timestamp=2017-07-25 19:01:01.407000
    count=1 file_type=html app=http timestamp=2017-07-25 19:01:01.407000
    

    我已将其加载到 DataFrame 看起来是这样的:

        count   file_type   app timestamp
    0   1       2007    smtp    2017-07-25 20:01:02.042
    1   2       jar     http    2017-07-25 20:01:02.042
    2   4421    gzip    http    2017-07-25 20:01:02.042
    3   31      pdf     http    2017-07-25 20:01:02.042
    4   6       cdf     http    2017-07-25 20:01:02.042
    5   64      ooxml   http    2017-07-25 20:01:02.042
    6   8       7z      http    2017-07-25 20:01:02.042
    7   38      2007    http    2017-07-25 20:01:02.042
    8   47      other   http    2017-07-25 20:01:02.042
    9   383     zip     http    2017-07-25 20:01:02.042
    10  47      rtf     http    2017-07-25 20:01:02.042
    11  29      image   http    2017-07-25 20:01:02.042
    12  1       zip     ftp_data    2017-07-25 20:01:02.042
    13  99      cab     http    2017-07-25 20:01:02.042
    14  22      pe32    http    2017-07-25 20:01:02.042
    15  77      pdf     smtp    2017-07-25 20:01:02.042
    16  4       7z      ftp_data    2017-07-25 19:01:01.407
    17  1       jar     http    2017-07-25 19:01:01.407
    18  2       dmg     http    2017-07-25 19:01:01.407
    19  4570    gzip    http    2017-07-25 19:01:01.407
    20  109     pdf     http    2017-07-25 19:01:01.407
    21  13      cdf     http    2017-07-25 19:01:01.407
    22  2       xar     http    2017-07-25 19:01:01.407
    23  232     ooxml   http    2017-07-25 19:01:01.407
    24  12      7z      http    2017-07-25 19:01:01.407
    25  98      2007    http    2017-07-25 19:01:01.407
    26  75      other   http    2017-07-25 19:01:01.407
    27  8       pe32    ftp_data    2017-07-25 19:01:01.407
    28  867     zip     http    2017-07-25 19:01:01.407
    29  304     image   http    2017-07-25 19:01:01.407
    30  9       zip     ftp_data    2017-07-25 19:01:01.407
    31  497     cab     http    2017-07-25 19:01:01.407
    32  1       lzma    http    2017-07-25 19:01:01.407
    33  45      pe32    http    2017-07-25 19:01:01.407
    34  43      pdf     smtp    2017-07-25 19:01:01.407
    35  1       html    http    2017-07-25 19:01:01.407
    

    df.groupby(['timestamp', 'app', 'file_type'])[['count']].sum() 看起来像

    timestamp                app        file_type   count
    2017-07-25 19:01:01.407  ftp_data   7z          4
                                        pe32        8
                                        zip         9
                             http       2007        98
                                        7z          12
                                        cab         497
                                        cdf         13
                                        dmg         2
                                        gzip        4570
                                        html        1
                                        image       304
                                        jar         1
                                        lzma        1
                                        ooxml       232
                                        other       75
                                        pdf         109
                                        pe32        45
                                        xar         2
                                        zip         867
                              smtp      pdf         43
    2017-07-25 20:01:02.042   ftp_data  zip         1
                              http      2007        38
                                        7z          8
                                        cab         99
                                        cdf         6
                                        gzip        4421
                                        image       29
                                        jar         2
                                        ooxml       64
                                        other       47
                                        pdf         31
                                        pe32        22
                                        rtf         47
                                        zip         383
                               smtp     2007        1
                                        pdf         77
    

    每个时间戳条目表示一小时的数据,最后一步是平均 count

    app       file_type  avg
    ftp_data  zip        ?
    http      zip        ?
    smtp      pdf        ?
    

    我试过使用 pivot pivot_table 和 stack

    2 回复  |  直到 9 年前
        1
  •  1
  •   nbeuchat    9 年前

    您可以分两个步骤来完成,首先使用第一个groupby的输出创建一个数据帧。然后在没有时间戳列的情况下再次分组,以获取每个组的平均值。

    dfg = df.groupby(['timestamp', 'app', 'file_type'])[['count']].sum().reset_index()
    dfg.groupby(['app','file_type']).agg({'count': 'mean'})
    
        2
  •  0
  •   Quickbeam2k1    9 年前

    使用flat_文件确实很难自己尝试,但我认为这会奏效(尽管可能有更快的方法)

    grouped = df.groupby(['timestamp', 'app', 'file_type'])[['count']].sum()
    grouped.reset_index().groupby(['app', 'file_type'])['count'].mean()
    

    应该有望得出正确的解决方案。