用法:
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
相匹配。- meta:pd.DataFrame、pd.Series、dict、可迭代、元組、可選
與輸出的 dtypes 和列名匹配的空
pd.DataFrame
或pd.Series
。此元數據對於 dask 數據幀中的許多算法起作用是必需的。為了便於使用,還提供了一些替代輸入。可以提供{name: dtype}
的dict
或(name, dtype)
的可迭代對象,而不是DataFrame
(請注意,名稱的順序應與列的順序匹配)。可以使用(name, dtype)
的元組代替係列。如果未提供,dask 將嘗試推斷元數據。這可能會導致意外結果,因此建議提供meta
。有關詳細信息,請參閱dask.dataframe.utils.make_meta
。- token:str,可選
用於輸出鍵的名稱。
- split_every:整數,可選
在執行tree-reduction 時將分區分組為該大小的組。如果設置為 False,則不會使用 tree-reduction,所有中間體將被連接並傳遞給
aggregate
。默認值為 8。- chunk_kwargs:字典,可選
僅傳遞給
chunk
的關鍵字參數。- aggregate_kwargs:字典,可選
僅傳遞給
aggregate
的關鍵字參數。- combine_kwargs:字典,可選
僅傳遞給
combine
的關鍵字參數。- kwargs:
所有剩餘的關鍵字都將傳遞給
chunk
,combine
和aggregate
。
參數:
例子:
>>> 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
相關用法
- Python dask.dataframe.Series.repartition用法及代碼示例
- Python dask.dataframe.Series.replace用法及代碼示例
- Python dask.dataframe.Series.resample用法及代碼示例
- Python dask.dataframe.Series.radd用法及代碼示例
- Python dask.dataframe.Series.round用法及代碼示例
- Python dask.dataframe.Series.rdiv用法及代碼示例
- Python dask.dataframe.Series.random_split用法及代碼示例
- Python dask.dataframe.Series.apply用法及代碼示例
- Python dask.dataframe.Series.clip用法及代碼示例
- Python dask.dataframe.Series.prod用法及代碼示例
- Python dask.dataframe.Series.fillna用法及代碼示例
- Python dask.dataframe.Series.to_frame用法及代碼示例
- Python dask.dataframe.Series.sum用法及代碼示例
- Python dask.dataframe.Series.dropna用法及代碼示例
- Python dask.dataframe.Series.gt用法及代碼示例
- Python dask.dataframe.Series.ge用法及代碼示例
- Python dask.dataframe.Series.mod用法及代碼示例
- Python dask.dataframe.Series.count用法及代碼示例
- Python dask.dataframe.Series.append用法及代碼示例
- Python dask.dataframe.Series.add用法及代碼示例
注:本文由純淨天空篩選整理自dask.org大神的英文原創作品 dask.dataframe.Series.reduction。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。