关于一个具体问题,说我有一个DataFrame DF
word tag count
0 a S 30
1 the S 20
2 a T 60
3 an T 5
4 the T 10
我想 为每个“单词” 找到 具有最多“计数”的“标签” 。因此,回报将类似于
word tag count
1 the S 20
2 a T 60
3 an T 5
我不在乎计数列或订单/索引是原始的还是混乱的。返回字典{ ‘the’:’S’ ,…}很好。
我希望我能做
DF.groupby(['word']).agg(lambda x: x['tag'][ x['count'].argmax() ] )
但这不起作用。我无法访问列信息。
更抽象地讲, agg( function ) 中的 函数 将其视为 __什么?
顺便说一句,.agg()与.aggregate()相同吗?
非常感谢。
agg
与相同aggregate
。可调用的是一次传递一次的列(Series
对象)DataFrame
。
您可以idxmax
用来收集具有最大计数的行的索引标签:
idx = df.groupby('word')['count'].idxmax()
print(idx)
产量
word
a 2
an 3
the 1
Name: count
然后用于loc
在word
和tag
列中选择那些行:
print(df.loc[idx, ['word', 'tag']])
产量
word tag
2 a T
3 an T
1 the S
请注意,idxmax
返回索引 标签
。df.loc
可用于按标签选择行。但是,如果索引不是唯一的-即,如果存在带有重复索引标签的行-df.loc
则将选择带有标签的
所有行idx
。所以,要小心,df.index.is_unique
是True
如果你使用idxmax
与df.loc
或者,您可以使用apply
。apply
的callable传递了一个sub-DataFrame,它使您可以访问所有列:
import pandas as pd
df = pd.DataFrame({'word':'a the a an the'.split(),
'tag': list('SSTTT'),
'count': [30, 20, 60, 5, 10]})
print(df.groupby('word').apply(lambda subf: subf['tag'][subf['count'].idxmax()]))
产量
word
a T
an T
the S
使用idxmax
和loc
通常比快apply
,尤其是对于大型DataFrame。使用IPython的%timeit:
N = 10000
df = pd.DataFrame({'word':'a the a an the'.split()*N,
'tag': list('SSTTT')*N,
'count': [30, 20, 60, 5, 10]*N})
def using_apply(df):
return (df.groupby('word').apply(lambda subf: subf['tag'][subf['count'].idxmax()]))
def using_idxmax_loc(df):
idx = df.groupby('word')['count'].idxmax()
return df.loc[idx, ['word', 'tag']]
In [22]: %timeit using_apply(df)
100 loops, best of 3: 7.68 ms per loop
In [23]: %timeit using_idxmax_loc(df)
100 loops, best of 3: 5.43 ms per loop
如果你想有一个字典映射字标签,那么你可以使用set_index
和to_dict
这样的:
In [36]: df2 = df.loc[idx, ['word', 'tag']].set_index('word')
In [37]: df2
Out[37]:
tag
word
a T
an T
the S
In [38]: df2.to_dict()['tag']
Out[38]: {'a': 'T', 'an': 'T', 'the': 'S'}
AGG,全名:Anti-Grain Geometry,是一个开源的、高效的2D图形库。AGG的功能与GDI+的功能非常类似,但提供了比GDI+更灵活的编程接口,其产生的图形的质量也非常高,而且它是跨平台的,其宣传可以在非常多的操作系统上运行。 主要的功能有: 1、支持ALPHA、GAMMA等变色处理,以及用户自定义的变色处理; 2、支持任意2D图形变换; 3、支持SVG和PostScript描述,
Agg 是 PostgreSQL 的并行聚合工具。在很长的时间里 PostgreSQL 只是使用单 CPU 核心来执行昂贵的聚合。Agg 的目的是要改变这种情况,把分析操作扩展到大量的 CPU 核心,使用系统的全部计算能力来执行。 特性 并行执行常规聚合 (sum, count, min, max, etc.) 支持 FILTER-clauses 支持约束限制 (每个分区由一个 CPU 核心处理)
Agg-Sharp 是 Agg 的 .NET 移植。AGG 是一个开源的二维图形引擎。它提供一套结合了亚像素(subpixel accuracy)技术与反走样(anti-aliasing)技术的图形算法,实现高效率、高质量的二维图形处理功能。AGG 的另一个特点在于它极大的灵活性。其作者将它描述为“创建其它工具的工具”。AGG 提供一系列松耦合的算法,而且其所有类均采用模板(template)进行
本章开始,就提到 K4/5 和 K3 的区别,在 K4/5 中,即便介绍完了全部 visualize 的配置项,也不代表用户能立刻上手配置出来和 K3 一样的面板。所以本节,会以几个具体的日志分析需求为例,演示在 K4 中,利用 Elasticsearch 1.0 以后提供的 Aggregation 特性,能够做到哪些有用的可视化效果。
我医生看起来像 我想拥有超过 100个文档在50到100个之间少于100个文档我尝试使用不同的聚合,但我不知道如何在另一个聚合的计数上进行范围聚合 谢谢你的帮助,
我想计算一天内每个产品的每个IP访问计数。 一个索引中有三个参数(nginx访问日志): 时间戳 客户IP product\u id 我知道date\u直方图可以参考https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-datehistogram-aggregation.