すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:ウィンドウ関数

最終更新日:May 29, 2025

このトピックでは、DataFrame API でサポートされているウィンドウ関数について説明します。

使用例

  • ウィンドウ関数を使用して、iris データセットを name 列でグループ化し、grouped という DataFrameGroupBy オブジェクトを返します。後続の操作は、各グループで個別に実行されます。

    説明

    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

現在の行の前にある、指定されたオフセットの行の値を取得します。取得する行の番号は、「現在の行の番号 - オフセット値」という式に基づいて決定されます。

lead

現在の行の後にある、指定されたオフセットの行の値を取得します。取得する行の番号は、「現在の行の番号 + オフセット値」という式に基づいて決定されます。

rank

順序付けられたグループ内の行のランクを計算します。

dense_rank

順序付けられたグループ内の行の密なランクを計算します。

percent_rank

順序付けられたグループ内の行の相対ランクを計算します。

row_number

行番号を計算します。行番号は 1 から始まります。

qcut

データシーケンスに基づいてデータのグループを N 個のビンに分割し、現在のデータを含むビンの番号を返します。ビン内のデータが均等に分散されていない場合、デフォルトでは最初のビンにより多くのデータが分散されます。

nth_value

グループ内の N 番目の値を取得します。

cume_dist

グループ内のすべての行に対する、値が現在の値以下の行の割合を計算します。

パラメーターの説明

  • rankdense_rankpercent_rank、および row_number ウィンドウ関数は、次のパラメーターをサポートしています。

    パラメーター

    説明

    sort

    行をソートするために使用されるキーワード。このパラメーターは、デフォルトでは空の文字列です。

    ascending

    行を昇順にソートするかどうかを指定します。このパラメーターは、デフォルトでは True に設定されています。

  • lag 関数と lead 関数は、rank 関数でサポートされているパラメーターに加えて、次のパラメーターをサポートしています。

    パラメーター

    説明

    offset

    現在の行とデータを取得する行の間の行数。

    default

    指定されたオフセットの行が存在しない場合に返される値。

  • cumsumcummaxcummincummeancummediancumcount、および cumstd ウィンドウ関数は、rank 関数でサポートされているパラメーターに加えて、次のパラメーターをサポートしています。

    パラメーター

    説明

    unique

    データ重複除去を有効にするかどうかを指定します。このパラメーターは、デフォルトでは False に設定されています。

    preceding

    ウィンドウの開始位置。

    following

    ウィンドウの終了位置。