大熊猫从GROUPBY
得到的意思是我有一个纯文本文件看起来像这样:大熊猫从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 ?
我使用pivot
,pivot_table
和stack
尝试,但并没有取得多大进展。
它真的很难尝试你自己的flat_file,但我认为这会工作(虽然更快的方式很可能是可能的)
从你的结果
grouped = df.groupby(['timestamp', 'app', 'file_type'])[['count']].sum()
grouped.reset_index().groupby(['app', 'file_type'])['count'].mean()
应该有希望启动产生正确的解决方案。
你可以分两步做,首先用第一个groupby的输出创建一个数据框。然后groupby再次没有时间戳列来取每个组的平均值。
dfg = df.groupby(['timestamp', 'app', 'file_type'])[['count']].sum().reset_index()
dfg.groupby(['app','file_type']).agg({'count': 'mean'})
几乎在同一时间看起来几乎像我的答案。但是,您也将平均时间戳。我不确定这是否正确实施 – Quickbeam2k1
@ Quickbeam2k1您说得对,实际上它的确会确实计算时间戳的平均值。 – nbeuchat
@mkerins在你选择的领域使用'agg'应该解决这个问题。 Quickbeam2k1解决方案也是如此。 – nbeuchat
你每小时有一个时间戳吗?或者你可以每小时有多个时间戳吗? – nbeuchat