用法:
Series.map_overlap(func, before, after, *args, **kwargs)
對每個分區應用一個函數,與相鄰分區共享行。
這對於實現諸如
df.rolling(...).mean()
或df.diff()
之類的窗口函數很有用。- func:函數
應用於每個分區的函數。
- before:int
從分區
i - 1
的末尾添加到分區i
的行數。- after:int
從分區
i + 1
的開頭追加到分區i
的行數。- args, kwargs:
要傳遞給函數的參數和關鍵字。分區將是第一個參數,這些將在之後傳遞。
- 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
。
參數:
注意:
給定正整數
before
和after
,函數func
,map_overlap
執行以下操作:將
before
行從分區i - 1
的末尾添加到每個分區i
。第一個分區沒有前置行。從分區
i + 1
的開頭將after
行附加到每個分區i
。最後一個分區沒有附加行。將
func
應用到每個分區,如果提供的話,傳入任何額外的args
和kwargs
。從除第一個分區之外的所有分區的開頭修剪
before
行。從除最後一個分區之外的所有分區的末尾修剪
after
行。
請注意,假設索引和部門保持不變。
例子:
給定一個 DataFrame、Series 或 Index,例如:
>>> import pandas as pd >>> import dask.dataframe as dd >>> df = pd.DataFrame({'x': [1, 2, 4, 7, 11], ... 'y': [1., 2., 3., 4., 5.]}) >>> ddf = dd.from_pandas(df, npartitions=2)
可以通過在每個分區之前重疊 2 行,然後將調用映射到
df.rolling(2).sum()
來計算具有大小為 2 的尾隨移動窗口的滾動和:>>> ddf.compute() x y 0 1 1.0 1 2 2.0 2 4 3.0 3 7 4.0 4 11 5.0 >>> ddf.map_overlap(lambda df: df.rolling(2).sum(), 2, 0).compute() x y 0 NaN NaN 1 3.0 3.0 2 6.0 5.0 3 11.0 7.0 4 18.0 9.0
pandas
diff
方法計算偏移多個周期(可以是正數或負數)的離散差。這可以通過在附加/附加那麽多行之後將調用df.diff
映射到每個分區來實現,具體取決於符號:>>> def diff(df, periods=1): ... before, after = (periods, 0) if periods > 0 else (0, -periods) ... return df.map_overlap(lambda df, periods=1: df.diff(periods), ... periods, 0, periods=periods) >>> diff(ddf, 1).compute() x y 0 NaN NaN 1 1.0 1.0 2 2.0 1.0 3 3.0 1.0 4 4.0 1.0
如果您有
DatetimeIndex
,則可以將pd.Timedelta
用於基於時間的窗口。>>> ts = pd.Series(range(10), index=pd.date_range('2017', periods=10)) >>> dts = dd.from_pandas(ts, npartitions=2) >>> dts.map_overlap(lambda df: df.rolling('2D').sum(), ... pd.Timedelta('2D'), 0).compute() 2017-01-01 0.0 2017-01-02 1.0 2017-01-03 3.0 2017-01-04 5.0 2017-01-05 7.0 2017-01-06 9.0 2017-01-07 11.0 2017-01-08 13.0 2017-01-09 15.0 2017-01-10 17.0 Freq: D, dtype: float64
相關用法
- Python dask.dataframe.Series.map_partitions用法及代碼示例
- Python dask.dataframe.Series.map用法及代碼示例
- Python dask.dataframe.Series.max用法及代碼示例
- Python dask.dataframe.Series.mask用法及代碼示例
- Python dask.dataframe.Series.mod用法及代碼示例
- Python dask.dataframe.Series.min用法及代碼示例
- Python dask.dataframe.Series.mul用法及代碼示例
- Python dask.dataframe.Series.memory_usage用法及代碼示例
- 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.repartition用法及代碼示例
- Python dask.dataframe.Series.count用法及代碼示例
- Python dask.dataframe.Series.append用法及代碼示例
注:本文由純淨天空篩選整理自dask.org大神的英文原創作品 dask.dataframe.Series.map_overlap。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。