このトピックでは、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 | グループ内のすべての行に対する、値が現在の値以下の行の割合を計算します。 |
パラメーターの説明
rank、dense_rank、percent_rank、およびrow_numberウィンドウ関数は、次のパラメーターをサポートしています。パラメーター
説明
sort
行をソートするために使用されるキーワード。このパラメーターは、デフォルトでは空の文字列です。
ascending
行を昇順にソートするかどうかを指定します。このパラメーターは、デフォルトでは True に設定されています。
lag関数とlead関数は、rank関数でサポートされているパラメーターに加えて、次のパラメーターをサポートしています。パラメーター
説明
offset
現在の行とデータを取得する行の間の行数。
default
指定されたオフセットの行が存在しない場合に返される値。
cumsum、cummax、cummin、cummean、cummedian、cumcount、およびcumstdウィンドウ関数は、rank関数でサポートされているパラメーターに加えて、次のパラメーターをサポートしています。パラメーター
説明
unique
データ重複除去を有効にするかどうかを指定します。このパラメーターは、デフォルトでは False に設定されています。
preceding
ウィンドウの開始位置。
following
ウィンドウの終了位置。