|
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