- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 Data
和 Group
的 pandas DataFrame,我想使用 agg
方法执行多个功能。
from scipy.stats import iqr, norm
import pandas as pd
df = pd.DataFrame({'Data':[1,2,3,5,10,5,3,3,4,1], 'Group':[1,2,2,1,1,1,2,2,2,1]})
df.groupby('Group')['Data'].agg(['median', iqr])
效果很好。但现在我想在执行操作之前对组进行切片。
问题是,
df.groupby('Group')['Data'].iloc[2:-2].agg(['median', iqr])
抛出错误,因为 PandasGroupByObjects 不支持切片。出现错误
df.groupby('Group')['Data'].nth[2:-2].agg(['median', iqr])
也是,因为不允许组合。
这post显示 lambda 函数
可用于对值进行切片。
我试着用这个,但是
df.groupby('Group')['Data'].agg(lambda x: [np.median(x.iloc[2:-2]), iqr(x.iloc[2:-2])])
返回一个包含列表的 DataFrames,这不是我想要的。
如何应用切片并获得格式良好的 DataFrame 作为返回值?
想要的输出:
median iqr
Group
1 10.0 0.0
2 3.0 0.0
最佳答案
如果您要应用多个组或多个函数,一个选项是双 groupby
:
(df.groupby('Group', as_index=False, group_keys=False)
.apply(lambda g: g.iloc[2:-2])
.groupby('Group')['Data']
.agg(['median', iqr])
)
效率将取决于函数和组的数量。
输出:
median iqr
Group
1 10.0 0.0
2 3.0 0.0
双 groupby
的效率低于 named aggregation对于少数函数和少数组,但对于其中许多函数更有效,这是预期的,因为对双 groupby
执行切片 一次 与 一样多在另一种情况下有组×聚合函数(尽管尺寸较小)。
提供的例子:
# double groupby
2.43 ms ± 554 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
# lambdas with named aggregation
2.39 ms ± 867 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
10 万行,2 个组,2 个聚合:
# double groupby
12.1 ms ± 913 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
# lambdas with named aggregation
8.12 ms ± 1.29 ms per loop (mean ± std. dev. of 7 runs, 100 loops each)
10 万行,2 个组,100 个聚合:
# double groupby
149 ms ± 22.8 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
# lambdas with named aggregation
300 ms ± 34.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
10 万行,52 个组,5 个聚合:
# double groupby
30.1 ms ± 4.69 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
# lambdas with named aggregation
52.2 ms ± 10.7 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
10 万行,52 个组,100 个聚合:
# double groupby
220 ms ± 24.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
# lambdas with named aggregation
837 ms ± 109 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
关于python - 如何切片 PandasGroupByObject 并在 agg 中使用多个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73499364/
我有两种方法来汇总数据。 首先,我过滤mysql数据并进行汇总 其次,i aggs将数据过滤为aggs。 如下: 我发现了不同的结果,我不知道为什么。 有人可以解释吗? 最佳答案 从Docs By d
在一个具体问题上,假设我有一个 DataFrame DF word tag count 0 a S 30 1 the S 20 2 a T
我正在使用Python进行数据分析,但我遇到了部分CH的问题。9(数据聚合和分组操作)部分,介绍“使用函数分组”。。具体地说,如果我使用GroupBy对象方法或Numpy定义的函数,一切都会正常工作。
接听this question原来 df.groupby(...).agg(set) 和 df.groupby(...).agg(lambda x: set(x)) 正在产生不同的结果。 数据: df
如何在这样的字符串列中执行最大值? dataframe = pandas.DataFrame.from_dict( { "DEP
我有一个查询,用于查询给定日期时间窗口(即2017-02-17T15:00:00.000和2017-02-17T16:00:00.000之间)中的条目数。执行此查询时,我得到的结果不正确(最好说结果是
我正在尝试进行一些聚合查询并遇到一些问题。 GET /my_index/_search { "size" : 0, "aggs":{ "group_by":{ "terms": {
对于pandas agg,有没有办法根据数据类型指定聚合函数?例如,对象类型的所有列都获得“第一”,所有 float 获得“平均值”,等等?以避免必须输入所有列及其各自的聚合函数。 示例数据: imp
这是我当前的代码: pipe_exec_df_final_grouped = pipe_exec_df_final.groupBy("application_id").agg(collect_list
我有一个简单的 dataframe (df),如下所示: index Job Person 1 j1 Cathy 2 j2 Mark 3 j3 Cathy 4
我正在尝试对术语(count_bucket)进行AVG计数,但是出现错误: "buckets_path must reference either a number value or a single
我正在执行弹性查询并使用 REST 调用读取 java 代码中的响应。 当我阅读响应时,字段的顺序 - 200、204、4xx、5xx 不会按照响应中的顺序返回。 在下面找到示例请求 GET appl
我希望对文档下的属性值进行 Max 聚合,该属性是复杂对象(键和值)的列表。这是我的数据: [{ "id" : "1", "listItems" : [
我使用 Elasticsearch 来存储我的生物数据。 我尝试使用过滤后的 aggs 进行查询,但返回的数据不是我想要的。 问题来自这样一个事实,即我为每个样本都有一个“d_”属性,它是一个数组。我
当我尝试运行此查询时,elasticsearch无法回答,并且发生大量缓存逐出(与字段缓存有关)。 我不想在此查询中缓存任何字段,因为这是一个分析查询,我每天只运行一次。有什么办法可以在不使用字段缓存
我想将 DataFrame.agg 的输出转换为一个系列,其中索引是列名称和 agg 函数名称的组合。 看我有 In [132]: df = pd.DataFrame({ ...:
我想根据索引的第二级对具有多重索引的数据帧应用不同的函数。 例如,对于数据框: In [4]: df = pd.DataFrame({'a': [1,2,6,7],'b': [7,1,4,5]}, i
假设我有这样的代码: meanData = all_data.groupby(['Id'])[features].agg('mean') 这按'Id' 值对数据进行分组,选择所需的特征,并通过计算的'
下面是我的数据框的一个小样本,它有 25000 奇数行长: In [58]: df Out[58]: Send_Agent Send_Amount 0 ADR000264 361
假设我有一个 pandas dataFrame (data_stores) 类似于以下内容: store| item1 | item2 | item3 ------------------------
我是一名优秀的程序员,十分优秀!