窗口函数

本文为您介绍DataFrame API支持使用窗口函数。

使用示例

  • 窗口函数用于将iris数据集按name列进行分组,返回一个DataFrameGroupBy对象grouped,后续针对每个分组独立执行。

    说明

    鸢尾花数据集(iris)来源请参见Dataframe数据处理

    iris = DataFrame(o.get_table('pyodps_iris'))
    grouped = iris.groupby('name')
    print(grouped.mutate(grouped.sepallength.cumsum(), grouped.sort('sepallength').row_number()).head(10))

    返回结果如下:

                name  sepallength_sum  row_number
    0  Iris-setosa            250.3           1
    1  Iris-setosa            250.3           2
    2  Iris-setosa            250.3           3
    3  Iris-setosa            250.3           4
    4  Iris-setosa            250.3           5
    5  Iris-setosa            250.3           6
    6  Iris-setosa            250.3           7
    7  Iris-setosa            250.3           8
    8  Iris-setosa            250.3           9
    9  Iris-setosa            250.3          10
  • 窗口函数可以用在列选择中。

    iris = DataFrame(o.get_table('pyodps_iris'))
    print(iris['name', 'sepallength', iris.groupby('name').sort('sepallength').sepallength.cumcount()].head(5))

    返回结果如下:

              name  sepallength  sepallength_count
    0  Iris-setosa          4.3                  1
    1  Iris-setosa          4.4                  2
    2  Iris-setosa          4.4                  3
    3  Iris-setosa          4.4                  4
    4  Iris-setosa          4.5                  5
  • 窗口函数按标量聚合时,与分组聚合的处理方式一致。

    from odps.df import Scalar
    iris = DataFrame(o.get_table('pyodps_iris'))
    iris.groupby(Scalar(1)).sort('sepallength').sepallength.cumcount()

函数介绍

DataFrame API支持的窗口函数如下。

窗口函数

说明

cumsum

计算累积和。

cummean

计算累积均值。

cummedian

计算累积中位数。

cumstd

计算累积标准差。

cummax

计算累积最大值。

cummin

计算累积最小值。

cumcount

计算累积和。

lag

按偏移量取当前行之前第几行的值。如果当前行号为rn,则取行号为rn-offset的值。

lead

按偏移量取当前行之后第几行的值。如果当前行号为rn则取行号为rn+offset的值。

rank

计算排名。

dense_rank

计算连续排名。

percent_rank

计算一组数据中某行的相对排名。

row_number

计算行号,从1开始。

qcut

将分组数据按顺序切分成n片,并返回当前切片值。如果切片不均匀,默认增加第一个切片的分布。

nth_value

返回分组中的第n个值。

cume_dist

计算分组中值小于等于当前值的行数占分组总行数的比例。

参数说明

  • rankdense_rankpercent_rankrow_number支持下列参数。

    参数名

    说明

    sort

    排序关键字,默认为空。

    ascending

    排序时,是否依照升序排序,默认值为True。

  • laglead除了支持rank所支持的参数,还支持下列参数。

    参数名

    说明

    offset

    取数据的行距离当前行的行数。

    default

    offset指定的行不存在时的返回值。

  • cumsumcummaxcummincummeancummediancumcountcumstd除了支持rank所支持的参数外,还支持下列参数。

    参数名

    说明

    unique

    是否排除重复值,默认False。

    preceding

    窗口范围起点。

    following

    窗口范围终点。