全部產品
Search
文件中心

:視窗函數

更新時間:Feb 28, 2024

本文為您介紹DataFrame API支援使用視窗函數。

grouped = iris.groupby('name')
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['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.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 視窗範圍終點。