|
12 | 12 | from pandas.core.dtypes.missing import isna
|
13 | 13 |
|
14 | 14 | from pandas.core import nanops, ops
|
15 |
| -from pandas.core.array_algos import masked_reductions |
16 | 15 | from pandas.core.arraylike import OpsMixin
|
17 | 16 | from pandas.core.arrays._mixins import NDArrayBackedExtensionArray
|
18 | 17 | from pandas.core.strings.object_array import ObjectStringArrayMixin
|
@@ -275,83 +274,96 @@ def _values_for_factorize(self) -> Tuple[np.ndarray, int]:
|
275 | 274 |
|
276 | 275 | def any(self, *, axis=None, out=None, keepdims=False, skipna=True):
|
277 | 276 | nv.validate_any((), dict(out=out, keepdims=keepdims))
|
278 |
| - return nanops.nanany(self._ndarray, axis=axis, skipna=skipna) |
| 277 | + result = nanops.nanany(self._ndarray, axis=axis, skipna=skipna) |
| 278 | + return self._wrap_reduction_result(axis, result) |
279 | 279 |
|
280 | 280 | def all(self, *, axis=None, out=None, keepdims=False, skipna=True):
|
281 | 281 | nv.validate_all((), dict(out=out, keepdims=keepdims))
|
282 |
| - return nanops.nanall(self._ndarray, axis=axis, skipna=skipna) |
| 282 | + result = nanops.nanall(self._ndarray, axis=axis, skipna=skipna) |
| 283 | + return self._wrap_reduction_result(axis, result) |
283 | 284 |
|
284 |
| - def min(self, *, skipna: bool = True, **kwargs) -> Scalar: |
| 285 | + def min(self, *, axis=None, skipna: bool = True, **kwargs) -> Scalar: |
285 | 286 | nv.validate_min((), kwargs)
|
286 |
| - return masked_reductions.min( |
287 |
| - values=self.to_numpy(), mask=self.isna(), skipna=skipna |
| 287 | + result = nanops.nanmin( |
| 288 | + values=self._ndarray, axis=axis, mask=self.isna(), skipna=skipna |
288 | 289 | )
|
| 290 | + return self._wrap_reduction_result(axis, result) |
289 | 291 |
|
290 |
| - def max(self, *, skipna: bool = True, **kwargs) -> Scalar: |
| 292 | + def max(self, *, axis=None, skipna: bool = True, **kwargs) -> Scalar: |
291 | 293 | nv.validate_max((), kwargs)
|
292 |
| - return masked_reductions.max( |
293 |
| - values=self.to_numpy(), mask=self.isna(), skipna=skipna |
| 294 | + result = nanops.nanmax( |
| 295 | + values=self._ndarray, axis=axis, mask=self.isna(), skipna=skipna |
294 | 296 | )
|
| 297 | + return self._wrap_reduction_result(axis, result) |
295 | 298 |
|
296 | 299 | def sum(self, *, axis=None, skipna=True, min_count=0, **kwargs) -> Scalar:
|
297 | 300 | nv.validate_sum((), kwargs)
|
298 |
| - return nanops.nansum( |
| 301 | + result = nanops.nansum( |
299 | 302 | self._ndarray, axis=axis, skipna=skipna, min_count=min_count
|
300 | 303 | )
|
| 304 | + return self._wrap_reduction_result(axis, result) |
301 | 305 |
|
302 | 306 | def prod(self, *, axis=None, skipna=True, min_count=0, **kwargs) -> Scalar:
|
303 | 307 | nv.validate_prod((), kwargs)
|
304 |
| - return nanops.nanprod( |
| 308 | + result = nanops.nanprod( |
305 | 309 | self._ndarray, axis=axis, skipna=skipna, min_count=min_count
|
306 | 310 | )
|
| 311 | + return self._wrap_reduction_result(axis, result) |
307 | 312 |
|
308 | 313 | def mean(self, *, axis=None, dtype=None, out=None, keepdims=False, skipna=True):
|
309 | 314 | nv.validate_mean((), dict(dtype=dtype, out=out, keepdims=keepdims))
|
310 |
| - return nanops.nanmean(self._ndarray, axis=axis, skipna=skipna) |
| 315 | + result = nanops.nanmean(self._ndarray, axis=axis, skipna=skipna) |
| 316 | + return self._wrap_reduction_result(axis, result) |
311 | 317 |
|
312 | 318 | def median(
|
313 | 319 | self, *, axis=None, out=None, overwrite_input=False, keepdims=False, skipna=True
|
314 | 320 | ):
|
315 | 321 | nv.validate_median(
|
316 | 322 | (), dict(out=out, overwrite_input=overwrite_input, keepdims=keepdims)
|
317 | 323 | )
|
318 |
| - return nanops.nanmedian(self._ndarray, axis=axis, skipna=skipna) |
| 324 | + result = nanops.nanmedian(self._ndarray, axis=axis, skipna=skipna) |
| 325 | + return self._wrap_reduction_result(axis, result) |
319 | 326 |
|
320 | 327 | def std(
|
321 | 328 | self, *, axis=None, dtype=None, out=None, ddof=1, keepdims=False, skipna=True
|
322 | 329 | ):
|
323 | 330 | nv.validate_stat_ddof_func(
|
324 | 331 | (), dict(dtype=dtype, out=out, keepdims=keepdims), fname="std"
|
325 | 332 | )
|
326 |
| - return nanops.nanstd(self._ndarray, axis=axis, skipna=skipna, ddof=ddof) |
| 333 | + result = nanops.nanstd(self._ndarray, axis=axis, skipna=skipna, ddof=ddof) |
| 334 | + return self._wrap_reduction_result(axis, result) |
327 | 335 |
|
328 | 336 | def var(
|
329 | 337 | self, *, axis=None, dtype=None, out=None, ddof=1, keepdims=False, skipna=True
|
330 | 338 | ):
|
331 | 339 | nv.validate_stat_ddof_func(
|
332 | 340 | (), dict(dtype=dtype, out=out, keepdims=keepdims), fname="var"
|
333 | 341 | )
|
334 |
| - return nanops.nanvar(self._ndarray, axis=axis, skipna=skipna, ddof=ddof) |
| 342 | + result = nanops.nanvar(self._ndarray, axis=axis, skipna=skipna, ddof=ddof) |
| 343 | + return self._wrap_reduction_result(axis, result) |
335 | 344 |
|
336 | 345 | def sem(
|
337 | 346 | self, *, axis=None, dtype=None, out=None, ddof=1, keepdims=False, skipna=True
|
338 | 347 | ):
|
339 | 348 | nv.validate_stat_ddof_func(
|
340 | 349 | (), dict(dtype=dtype, out=out, keepdims=keepdims), fname="sem"
|
341 | 350 | )
|
342 |
| - return nanops.nansem(self._ndarray, axis=axis, skipna=skipna, ddof=ddof) |
| 351 | + result = nanops.nansem(self._ndarray, axis=axis, skipna=skipna, ddof=ddof) |
| 352 | + return self._wrap_reduction_result(axis, result) |
343 | 353 |
|
344 | 354 | def kurt(self, *, axis=None, dtype=None, out=None, keepdims=False, skipna=True):
|
345 | 355 | nv.validate_stat_ddof_func(
|
346 | 356 | (), dict(dtype=dtype, out=out, keepdims=keepdims), fname="kurt"
|
347 | 357 | )
|
348 |
| - return nanops.nankurt(self._ndarray, axis=axis, skipna=skipna) |
| 358 | + result = nanops.nankurt(self._ndarray, axis=axis, skipna=skipna) |
| 359 | + return self._wrap_reduction_result(axis, result) |
349 | 360 |
|
350 | 361 | def skew(self, *, axis=None, dtype=None, out=None, keepdims=False, skipna=True):
|
351 | 362 | nv.validate_stat_ddof_func(
|
352 | 363 | (), dict(dtype=dtype, out=out, keepdims=keepdims), fname="skew"
|
353 | 364 | )
|
354 |
| - return nanops.nanskew(self._ndarray, axis=axis, skipna=skipna) |
| 365 | + result = nanops.nanskew(self._ndarray, axis=axis, skipna=skipna) |
| 366 | + return self._wrap_reduction_result(axis, result) |
355 | 367 |
|
356 | 368 | # ------------------------------------------------------------------------
|
357 | 369 | # Additional Methods
|
|
0 commit comments