我有一个平面文本文件,如下所示:
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
,但没有取得多大进展。
答案 0 :(得分:1)
您可以分两步完成,首先使用第一个groupby的输出创建一个数据框。然后再次groupby而不使用timestamp列来获取每个组的平均值。
dfg = df.groupby(['timestamp', 'app', 'file_type'])[['count']].sum().reset_index()
dfg.groupby(['app','file_type']).agg({'count': 'mean'})
答案 1 :(得分:0)
使用flat_file很难自己尝试,但我认为这样可行(尽管可能有更快的方法)
从结果开始
grouped = df.groupby(['timestamp', 'app', 'file_type'])[['count']].sum()
grouped.reset_index().groupby(['app', 'file_type'])['count'].mean()
应该有希望产生正确的解决方案。