| 公共成员函数 | 所有成员列表
cudf::groupby::groupby 类参考

按键分组值并计算这些组上的聚合。 更多...

包含 <groupby.hpp>

struct  groups
 与对一组值执行 groupby 操作对应的分组数据。 更多...
 

公共成员函数

 groupby (groupby const &)=delete
 
 groupby (groupby &&)=delete
 
groupbyoperator= (groupby const &)=delete
 
groupbyoperator= (groupby &&)=delete
 
 groupby (table_view const &keys, null_policy null_handling=null_policy::EXCLUDE, sorted keys_are_sorted=sorted::NO, std::vector< order > const &column_order={}, std::vector< null_order > const &null_precedence={})
 构造具有指定键的 groupby 对象。 更多...
 
std::pair< std::unique_ptr< table >, std::vector< aggregation_result > > aggregate (host_span< aggregation_request const > requests, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 对指定的值执行分组聚合。 更多...
 
std::pair< std::unique_ptr< table >, std::vector< aggregation_result > > scan (host_span< scan_request const > requests, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 对指定的值执行分组扫描。 更多...
 
std::pair< std::unique_ptr< table >, std::unique_ptr< table > > shift (table_view const &values, host_span< size_type const > offsets, std::vector< std::reference_wrapper< scalar const >> const &fill_values, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 对指定的值执行分组移位操作。 更多...
 
groups get_groups (cudf::table_view values={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 获取与对一组值执行 groupby 操作对应的分组键和值。 更多...
 
std::pair< std::unique_ptr< table >, std::unique_ptr< table > > replace_nulls (table_view const &values, host_span< cudf::replace_policy const > replace_policies, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 value 执行分组的空值替换操作。 更多...
 

详细描述

按键分组值并计算这些组上的聚合。

定义于文件 groupby.hpp 的 第 95 行。

构造函数和析构函数文档

◆ groupby()

cudf::groupby::groupby::groupby ( table_view const &  keys,
null_policy  null_handling = null_policy::EXCLUDE,
sorted  keys_are_sorted = sorted::NO,
std::vector< order > const &  column_order = {},
std::vector< null_order > const &  null_precedence = {} 
)
explicit

构造具有指定 keys 的 groupby 对象

如果 keys 已排序,则通过传递 keys_are_sorted == true 并分别在 column_ordernull_precedence 中指示每列的升序/降序以及空值顺序,可以获得更好的性能。

注意
此对象维护 keys 的生命周期。用户有责任确保 groupby 对象的生命周期不超过 keys table_view 所查看的数据。
参数
keys其行作为 groupby 键的表
null_handling指示是否应包含 keys 中包含 NULL 值的行
keys_are_sorted指示 keys 中的行是否已排序
column_order如果 keys_are_sorted == YES,指示每列是升序还是降序。如果为空,假定所有列都是升序。如果 keys_are_sorted == false,则忽略。
null_precedence如果 keys_are_sorted == YES,指示每列中空值的顺序。否则忽略。如果为空,假定所有列都使用 null_order::AFTER。如果 keys_are_sorted == false,则忽略。

成员函数文档

◆ aggregate()

std::pair<std::unique_ptr<table>, std::vector<aggregation_result> > cudf::groupby::groupby::aggregate ( host_span< aggregation_request const >  requests,
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

对指定的值执行分组聚合。

要聚合的值和要执行的聚合在 aggregation_request 中指定。每个请求包含一个用于聚合值的 column_view 和一组对这些元素执行的 aggregation

对于请求中的每个 aggregationvalues[i]keys 中行 ij 相等的所有其他 values[j] 进行聚合。

请求列的 size() 必须等于 keys.num_rows()

对于每个 aggregation_request,将返回一个 aggregation_resultaggregation_result 包含对 request 的值执行的每个请求聚合的结果列。每个结果中的列顺序与请求中指定的顺序相同。

返回的 table 包含每个组的组标签,即来自 keys 的唯一行。所有聚合结果中的元素 i 属于组标签表中行 i 处的组。

组标签中行的顺序是任意的。此外,连续的 groupby::aggregate 调用可能会以不同的顺序返回结果。

异常
cudf::logic_error如果 requests[i].values.size() != keys.num_rows()

示例

输入
keys: {1 2 1 3 1}
{1 2 1 4 1}
request
values: {3 1 4 9 2}
aggregations: {{SUM}, {MIN}}
结果
keys: {3 1 2}
{4 1 2}
values
SUM: {9 9 1}
MIN: {9 2 1}
@ MIN
组中第一个的最小值
参数
requests要聚合的列集合以及要执行的聚合
stream用于设备内存操作和内核启动的 CUDA 流。
mr用于分配返回的表和列的设备内存的设备内存资源
返回值
包含每个组的唯一键的表以及一个 aggregation_results 向量的 Pair,向量中每个请求的结果顺序与 requests 中指定的顺序相同。

◆ get_groups()

获取与对一组值执行 groupby 操作对应的分组键和值。

返回一个 groups 对象,表示分组的键和值。如果未提供 values,则只对键进行分组,groups 对象的 values 将为 nullptr

参数
values表示要对其执行 groupby 操作的值的表
stream用于设备内存操作和内核启动的 CUDA 流。
mr用于在返回的 groups 中分配返回的表的设备内存的设备内存资源
返回值
表示分组键和值的 groups 对象

◆ replace_nulls()

std::pair<std::unique_ptr<table>, std::unique_ptr<table> > cudf::groupby::groupby::replace_nulls ( table_view const &  values,
host_span< cudf::replace_policy const >  replace_policies,
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

value 执行分组的空值替换操作。

对于组 j 中每个 value[i] == NULLvalue[i] 将被替换为组 j 中在 value[i] 之前或之后找到的第一个非空值。如果在指定方向上未找到非空值,则 value[i] 仍为 NULL。

返回的 Pair 包含排序后的键列和结果列。在结果列中,同一组的值在连续的内存中。在每个组中,值的顺序保持其原始顺序。组的顺序不保证。

示例

//输入
keys: {3 3 1 3 1 3 4}
{2 2 1 2 1 2 5}
values: {3 4 7 @ @ @ @}
{@ @ @ "x" "tt" @ @}
replace_policies: {FORWARD, BACKWARD}
//输出 (组顺序可能不同)
keys: {3 3 3 3 1 1 4}
{2 2 2 2 1 1 5}
result: {3 4 4 4 7 7 @}
{"x" "x" "x" @ "tt" "tt" @}
参数
[in]values其列中空值将被替换的表
[in]replace_policies指定替换值相对于空值的位置,每列一个
[in]stream用于设备内存操作和内核启动的 CUDA 流。
[in]mr用于分配返回列的设备内存的设备内存资源
返回值
包含排序后的键表和结果列的 Pair

◆ scan()

std::pair<std::unique_ptr<table>, std::vector<aggregation_result> > cudf::groupby::groupby::scan ( host_span< scan_request const >  requests,
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

对指定的值执行分组扫描。

要聚合的值和要执行的聚合在 aggregation_request 中指定。每个请求包含一个用于聚合值的 column_view 和一组对这些元素执行的 aggregation

对于请求中的每个 aggregationvalues[i]keys 中行 ij 相等的所有先前的 values[j] 进行扫描聚合。

请求列的 size() 必须等于 keys.num_rows()

对于每个 aggregation_request,将返回一个 aggregation_resultaggregation_result 包含对 request 的值执行的每个请求聚合的结果列。每个结果中的列顺序与请求中指定的顺序相同。

返回的 table 包含每行的组标签,即提供给 groupby 对象的 keys。所有聚合结果中的元素 i 属于组标签表中行 i 处的组。

组标签中行的顺序是任意的。此外,连续的 groupby::scan 调用可能会以不同的顺序返回结果。

异常
cudf::logic_error如果 requests[i].values.size() != keys.num_rows()

示例

输入
keys: {1 2 1 3 1}
{1 2 1 4 1}
request
values: {3 1 4 9 2}
aggregations: {{SUM}, {MIN}}
结果
keys: {3 1 1 1 2}
{4 1 1 1 2}
values
SUM: {9 3 7 9 1}
MIN: {9 3 3 2 1}
参数
requests要扫描的列集合以及要执行的扫描操作
stream用于设备内存操作和内核启动的 CUDA 流。
mr用于分配返回的表和列的设备内存的设备内存资源
返回值
包含每个组的键的表以及一个 aggregation_results 向量的 Pair,向量中每个请求的结果顺序与 requests 中指定的顺序相同。

◆ shift()

std::pair<std::unique_ptr<table>, std::unique_ptr<table> > cudf::groupby::groupby::shift ( table_view const &  values,
host_span< size_type const >  offsets,
std::vector< std::reference_wrapper< scalar const >> const &  fill_values,
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

对指定的值执行分组移位操作。

在第 j 列中,对于每个组,第 i 个元素由组中的第 i - offsets[j] 个元素确定。如果 i - offsets[j] < 0 或 >= group_size,则该值由 fill_values[j] 确定。

注意
第一个返回的表存储传递给 groupby 对象的键。键表的行 i 对应于移位列中行 i 的组标签。每个组中的键顺序与输入顺序匹配。每个组的顺序是任意的。连续调用 groupby::shifts 时,组的顺序可能不同。

示例

keys: {1 4 1 3 4 4 1}
{1 2 1 3 2 2 1}
values: {3 9 1 4 2 5 7}
{"a" "c" "bb" "ee" "z" "x" "d"}
offset: {2, -1}
fill_value: {@, @}
结果 (组顺序可能不同)
keys: {3 1 1 1 4 4 4}
{3 1 1 1 2 2 2}
values: {@ @ @ 3 @ @ 9}
{@ "bb" "d" @ "z" "x" @}
-------------------------------------------------
keys: {1 4 1 3 4 4 1}
{1 2 1 3 2 2 1}
values: {3 9 1 4 2 5 7}
{"a" "c" "bb" "ee" "z" "x" "d"}
offset: {-2, 1}
fill_value: {-1, "42"}
结果 (组顺序可能不同)
keys: {3 1 1 1 4 4 4}
{3 1 1 1 2 2 2}
values: {-1 7 -1 -1 5 -1 -1}
{"42" "42" "a" "bb" "42" "c" "z"}
参数
values其列要进行移位操作的表
offsets用于移位输入的偏移量
fill_values用于不确定输出的填充值
stream用于设备内存操作和内核启动的 CUDA 流。
mr用于分配返回的表和列的设备内存的设备内存资源
返回值
包含每个组的键的表以及移位后的列的 Pair
异常
cudf::logic_error如果第 i 列的 fill_value[i] 数据类型与 values[i] 数据类型不匹配

此类的文档生成自以下文件