全部產品
Search
文件中心

MaxCompute:視窗函數

更新時間:May 17, 2025

本文為您介紹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

    視窗範圍終點。