當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python dask.dataframe.Series.reduction用法及代碼示例


用法:

Series.reduction(chunk, aggregate=None, combine=None, meta='__no_default__', token=None, split_every=None, chunk_kwargs=None, aggregate_kwargs=None, combine_kwargs=None, **kwargs)

通用的逐行縮減。

參數

chunk可調用的

對每個分區進行操作的函數。應該返回 pandas.DataFrame , pandas.Series 或標量。

aggregate可調用的,可選的

chunk 的連接結果進行操作的函數。如果未指定,則默認為 chunk 。用於在樹歸約中進行最終聚合。

aggregate 的輸入取決於 chunk 的輸出。如果chunk 的輸出是:

  • 標量:輸入是一個係列,每個分區有一行。
  • 係列:輸入是一個 DataFrame,每個分區有一行。列是輸出係列中的行。
  • DataFrame:輸入是一個DataFrame,每個分區一行。列是輸出 DataFrame 中的列。

應該返回 pandas.DataFrame , pandas.Series 或標量。

combine可調用的,可選的

對tree-reduction 中chunk 的中間級聯結果進行操作的函數。如果未提供,則默認為 aggregate 。輸入/輸出要求應與上述aggregate 相匹配。

metapd.DataFrame、pd.Series、dict、可迭代、元組、可選

與輸出的 dtypes 和列名匹配的空 pd.DataFramepd.Series。此元數據對於 dask 數據幀中的許多算法起作用是必需的。為了便於使用,還提供了一些替代輸入。可以提供 {name: dtype}dict(name, dtype) 的可迭代對象,而不是 DataFrame (請注意,名稱的順序應與列的順序匹配)。可以使用(name, dtype) 的元組代替係列。如果未提供,dask 將嘗試推斷元數據。這可能會導致意外結果,因此建議提供meta。有關詳細信息,請參閱 dask.dataframe.utils.make_meta

tokenstr,可選

用於輸出鍵的名稱。

split_every整數,可選

在執行tree-reduction 時將分區分組為該大小的組。如果設置為 False,則不會使用 tree-reduction,所有中間體將被連接並傳遞給 aggregate 。默認值為 8。

chunk_kwargs字典,可選

僅傳遞給chunk 的關鍵字參數。

aggregate_kwargs字典,可選

僅傳遞給aggregate 的關鍵字參數。

combine_kwargs字典,可選

僅傳遞給combine 的關鍵字參數。

kwargs

所有剩餘的關鍵字都將傳遞給 chunk , combineaggregate

例子

>>> import pandas as pd
>>> import dask.dataframe as dd
>>> df = pd.DataFrame({'x': range(50), 'y': range(50, 100)})
>>> ddf = dd.from_pandas(df, npartitions=4)

計算 DataFrame 中的行數。為此,請計算每個分區中的行數,然後對結果求和:

>>> res = ddf.reduction(lambda x: x.count(),
...                     aggregate=lambda x: x.sum())
>>> res.compute()
x    50
y    50
dtype: int64

計算 Series 中元素大於或等於某個值(通過關鍵字提供)的行數。

>>> def count_greater(x, value=0):
...     return (x >= value).sum()
>>> res = ddf.x.reduction(count_greater, aggregate=lambda x: x.sum(),
...                       chunk_kwargs={'value': 25})
>>> res.compute()
25

同時聚合一個係列的總和和計數:

>>> def sum_and_count(x):
...     return pd.Series({'count': x.count(), 'sum': x.sum()},
...                      index=['count', 'sum'])
>>> res = ddf.x.reduction(sum_and_count, aggregate=lambda x: x.sum())
>>> res.compute()
count      50
sum      1225
dtype: int64

做同樣的事情,但對於 DataFrame。這裏chunk 返回一個DataFrame,這意味著aggregate 的輸入是一個DataFrame,其索引包含兩個‘x’ and ‘y’ 的非唯一條目。我們按索引分組,並對每個組求和以獲得最終結果。

>>> def sum_and_count(x):
...     return pd.DataFrame({'count': x.count(), 'sum': x.sum()},
...                         columns=['count', 'sum'])
>>> res = ddf.reduction(sum_and_count,
...                     aggregate=lambda x: x.groupby(level=0).sum())
>>> res.compute()
   count   sum
x     50  1225
y     50  3725

相關用法


注:本文由純淨天空篩選整理自dask.org大神的英文原創作品 dask.dataframe.Series.reduction。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。