2017-09-05 252 views
0

得到的意思是我有一個純文本文件看起來像這樣:大熊貓從GROUPBY

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  ? 

我使用pivotpivot_tablestack嘗試,但並沒有取得多大進展。

+0

你每小時有一個時間戳嗎?或者你可以每小時有多個時間戳嗎? – nbeuchat

回答

0

它真的很難嘗試你自己的flat_file,但我認爲這會工作(雖然更快的方式很可能是可能的)

從你的結果

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

應該有希望啓動產生正確的解決方案。

1

你可以分兩步做,首先用第一個groupby的輸出創建一個數據框。然後groupby再次沒有時間戳列來取每個組的平均值。

dfg = df.groupby(['timestamp', 'app', 'file_type'])[['count']].sum().reset_index() 
dfg.groupby(['app','file_type']).agg({'count': 'mean'}) 
+0

幾乎在同一時間看起來幾乎像我的答案。但是,您也將平均時間戳。我不確定這是否正確實施 – Quickbeam2k1

+0

@ Quickbeam2k1您說得對,實際上它的確會確實計算時間戳的平均值。 – nbeuchat

+0

@mkerins在你選擇的領域使用'agg'應該解決這個問題。 Quickbeam2k1解決方案也是如此。 – nbeuchat