标签: aggregate

pandas groupby 聚合,总和在底部

这是我的代码:

import StringIO
from pandas import *
import numpy as np

df = read_csv(StringIO.StringIO('''Col1 Col2    A   B
A   D   1   6
A   E   2   7
B   D   3   8
B   E   4   9
C   D   5   19'''), delimiter='\t')


df['buc1'] = cut(df['A'], bins = [0, 2, 6, 8])

aggFunc = {'A': sum,
           'B': np.average
           }
Run Code Online (Sandbox Code Playgroud)

运行后:

df.groupby(['buc1']).agg(aggFunc)
Run Code Online (Sandbox Code Playgroud)

我得到:

         A     B
buc1            
(0, 2]   3   6.5
(2, 6]  12  12.0
(6, 8] NaN   NaN
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 鉴于那里没有值,我如何摆脱底部 (6, 8] 存储桶?
  2. 如何在底部添加总计行,如 Excel 中的数据透视表? …

group-by aggregate subtotal pandas

6
推荐指数
1
解决办法
1万
查看次数

将 POLYGON 聚合为 MULTIPOLYGON 并保留 data.frame

我有一个sfPOLYGON 几何类型的对象。我想使用分组属性 (group_attr) 将这些多边形聚合到 MULTIPOLYGON 中,并将新的 MULTIPOLYGON 对象与属性表连接起来。因此,作为结果,我将拥有一个sf两行三列的对象(group_attr、second_attr、geometry)。我已经尝试过使用st_cast- 它适用于sfc对象,但不适用于sf对象。是否可以使用sf包来做到这一点?

p1 <- rbind(c(0,0), c(1,0), c(3,2), c(2,4), c(1,4), c(0,0))
pol1 <-st_polygon(list(p1))
p2 <- rbind(c(3,0), c(4,0), c(4,1), c(3,1), c(3,0))
pol2 <-st_polygon(list(p2))
p3 <- rbind(c(4,0), c(4,1), c(5,1), c(5,0),c(4,0))
pol3 <-st_polygon(list(p3))
p4 <- rbind(c(3,3), c(4,2), c(4,3), c(3,3))
pol4 <-st_polygon(list(p4))

d <- data.frame(group_attr = c(1, 1, 2, 2), 
                second_attr = c('forest', 'forest', 'lake', 'lake'))
d$geometry <- st_sfc(pol1, pol2, pol3, pol4)
df<- st_as_sf(d)
plot(df)
df …
Run Code Online (Sandbox Code Playgroud)

aggregate r spatial r-sf

6
推荐指数
1
解决办法
2550
查看次数

MongoDB:在对象数组内的数组中聚合分组对象

我需要通过 mongodb 聚合管道内的 mallId 对投票内的对象进行分组。多年来一直在寻找答案,但我对 mongodb 不太熟悉,所以我有点迷茫。谁能帮我吗?

     [
      {
        "_id": "Specialty Retailer",
        "votes": [
          {
            "mallId": "59ddea3718a03a4e81f289f5",
            "count": 13
          },
          {
            "mallId": "59ddea3718a03a4e81f289f5",
            "count": 270
          },
          {
            "mallId": "59ddea3718a03a4e81f289f5",
            "count": 13
          },
          {
            "mallId": "59ddea3718a03a4e81f289f5",
            "count": 2
          },
          {
            "mallId": "59ddea3718a03a4e81f289f5",
            "count": 15
          },
          {
            "mallId": "59ddea3718a03a4e81f289f5",
            "count": 2
          }
     ]
   }
]
Run Code Online (Sandbox Code Playgroud)

aggregate mongodb

6
推荐指数
1
解决办法
1871
查看次数

如果没有文档,MongoDB 聚合返回计数为 0

我有一个 MongoDB 查询,它根据日期按 5 分钟窗口进行分组并返回计数(这是使用 5 分钟窗口中的文档总数count: { $sum: 1 })。

如果该组中不存在文档,我希望查询也为特定的 5 分钟窗口返回 0 计数。但目前看来,仅返回计数为正的组。

当前查询:

        const cursor = await collection.aggregate([
            { $sort : { time : 1 } },
            { 
                $match: {
                     $and: [ 
                        {selector: string },
                        {time: {$gte: timestamp }}
                     ]
                }
            },
            { 
                $group: {
                    _id: {
                        $subtract: [
                            { $subtract: [ "$time", 0 ] },
                            { $mod: [ 
                                { $subtract: [ "$time", 0 ] },
                                1000 * 60 * 5
                            ]}
                        ],
                    }, …
Run Code Online (Sandbox Code Playgroud)

aggregate count mongodb

6
推荐指数
1
解决办法
6146
查看次数

仅添加来自 MongoDB 中另一个集合的字段

我有两个收藏

带架构

{
    a : Array,
    b : ObjectID
}
Run Code Online (Sandbox Code Playgroud)

和 B 具有以下架构

{
    x : 'string',
    y : // some object schema
    ...
    b : ObjectID
}
Run Code Online (Sandbox Code Playgroud)

我想使用 mongo 聚合在集合 B 中添加一个新字段,以仅包含使用 b 搜索的集合 A 中的 a。

我希望聚合后的值具有以下架构:

{
    x : 'string',
    newField : a // array from collection A
    y : // some object schema
    ...
    b : ObjectID
}
Run Code Online (Sandbox Code Playgroud)

只有 $lookup 不起作用,因为我不想要整个对象,并且合并将删除 _id 并合并我不想要的其他对象。

aggregate mongoose mongodb mongodb-query

6
推荐指数
1
解决办法
3671
查看次数

R 将一个变量按两组求和

我在 R 中有一个数据框,通常采用这种形式:

ID     Year     Amount  
3       2000      45  
3       2000      55  
3       2002      10  
3       2002      10  
3       2004      30  
4       2000      25  
4       2002      40  
4       2002      15  
4       2004      45  
4       2004      50
Run Code Online (Sandbox Code Playgroud)

我想按 ID 对每年的金额求和,并使用此输出获取新的数据框。

ID      Year     Amount  
3       2000      100  
3       2002       20  
3       2004       30  
4       2000       25  
4       2002       55  
4       2004       95 
Run Code Online (Sandbox Code Playgroud)

这是我需要做的一个例子,实际上数据要大得多。请帮忙,谢谢!

aggregate r dplyr

6
推荐指数
2
解决办法
1万
查看次数

Quicksight 不显示没有数据的月份(空?)

我的视觉对象的 x 轴是按月聚合的日期,y 轴是总销售额(成本总和)。有几个月,我没有销售,但 Quicksight 忽略了这些,只向我显示其中确实有数据的月份,即使我想要我在时间范围参数中指定的确切月份数。

因此,当我要求显示过去 12 个月时,Quicksight 只显示了 4 个,因为其他 8 个我没有任何记录。

我怎样才能让这些月份显示为 0,而不是完全被排除在外?

---------- 编辑(可能的解决方案)--------------

由于我的分析依赖于选择特定的产品代码并仅获取其总和,因此我取消了过滤器,而是使用了以下计算字段

sumIf(sales, productCode = $productCodeParam$).

我想这种方法也适用于非常小的数据集,如果你想使用 sumIf 并在那里列出你的所有类别,但否则,通过过滤数据省略你没有任何结果为 0,因为 Quicksight 不会评估sum(null + null)为 0。

null aggregate zero amazon-web-services amazon-quicksight

6
推荐指数
1
解决办法
2793
查看次数

什么是聚合根?

不,这不是重复问题。我有很多关于这个主题的资料,但我仍然觉得我没有完全理解它。

这是我迄今为止所掌握的关于什么是聚合和聚合根的信息(来自多个来源,无论是文章、视频等......):

  • 聚合是多个值对象\实体引用和规则的集合。
  • 聚合始终是一个命令模型(旨在更改业务状态)。
  • 聚合代表单个工作单元(数据库 - 因为本质上更改将被持久化),这意味着它必须保持一致。
  • 聚合根是与外部世界的接口。
  • 聚合根必须在系统内具有全局唯一标识符
  • DDD 建议每个聚合根都有一个存储库
  • 聚合中的简单对象在其 AR(聚合根)不知道的情况下无法更改

考虑到所有这些,让我们进入我感到困惑的部分:

这个网站上它说

聚合根是与外部世界的接口。与聚合的所有交互都是通过聚合根进行的。因此,聚合根必须在系统内具有全局唯一标识符。存在于聚合中但不是聚合根的其他实体仅需要本地唯一标识符,即聚合内唯一的 Id。

但是,在这个示例中,我可以看到聚合根是由充当Transfer聚合的静态类和名为TransferedRegisteredAR 的内部静态函数实现的。

所以问题是:

  1. 如果该函数必须有一个全局唯一标识符,但实际上没有,原因是它是一个函数,那么该函数怎么可能是 AR?具有全局唯一标识符的是该函数产生的领域事件。
  2. 以下问题 - 聚合根在代码中看起来如何?这是事件吗?是返回的实体吗?是Aggregate类本身的功能吗?
  3. 如果函数返回的领域事件是 AR(如上所述,它必须具有全局唯一标识符),那么我们如何与这个聚合交互?第一篇文章明确指出,与聚合的所有交互都是由 AR 进行的,如果 AR 是一个事件,那么我们除了对其做出反应之外什么也做不了。
  4. 聚合有两个主要作用,这样说是否正确:
    • 根据收到的输入和了解的规则应用所需的更改
    • 返回需要从 AR 中保存的数据和/或需要在 AR 的领域事件中引发的数据

如果某些/全部错误,请在开始时纠正我的任何要点,如果我遗漏了任何要点,请随时添加更多!

感谢您澄清事情!

domain-driven-design aggregate aggregateroot

6
推荐指数
2
解决办法
3477
查看次数

MongoDB $lookup 管道:这是否使用索引?

我有一个查询,它利用 $lookup 的管道功能,并且还使用 $expr。嗯,它可以工作,但性能不是很好。它在包含大约 4000 个文档的集合中查找内容,并连接其他 2 个集合(使用 $lookup 块)。尽管每个集合中只有几千个文档,但运行时间大约为 2000 毫秒。

该查询看起来像这样:

            {
                $match: {
                   language: 'str'
                }
            },
            {
                $lookup: {
                    from: 'somecollection',
                    let: { someId: '$someId' },
                    pipeline: [
                        {
                            $match: {
                                $expr: {
                                    $and: [
                                        {
                                            $eq: [
                                                '$_id',
                                                '$$someId'
                                            ]
                                        },
                                        {
                                            $gte: ['$field',value]
                                        },
                                        {
                                            $lte: ['$field2',value]
                                        }
                                       ....
                                       // some more conditions..

                                    ]
                                }
                            }
                        }
                    ]
Run Code Online (Sandbox Code Playgroud)

对此运行解释()仅提供有关第一个 $match 块的信息。但是如何判断管道中的 $expr 是否使用索引呢?

我尝试向管道中使用的所有字段添加索引,并且还尝试创建复合索引,但我无法使其更快。

我怎样才能提高性能?

我的查询的结构:

match (filter by language),
lookup (col1 join)
lookup …
Run Code Online (Sandbox Code Playgroud)

pipeline join aggregate mongodb

6
推荐指数
1
解决办法
4126
查看次数

Mysql中如何对json_arrayagg()返回的数组进行排序?

我想对 json_arrayagg() 返回的数组进行排序。我的查询与此类似:-

select A, json_arrayagg(json_obj('X',value1, 'Y',value2)) AS RESULT
FROM (derived table)
GROUP BY A.
Run Code Online (Sandbox Code Playgroud)

我想要的是我希望返回的数组按 value2 排序。我尝试在末尾添加 order by 子句(例如 order by value2:它不起作用)

已尝试在 json_arrayagg() 内部添加 order by ..(例如: json_arrayagg(json_obj() order by value2) 它不起作用。

已尝试使用 group_concat ,但它不可靠,并且不知道为什么它没有返回正确的数据。已检查限制。

请建议我如何解决这个问题?谢谢

mysql sql json aggregate sql-order-by

6
推荐指数
1
解决办法
2222
查看次数