@@ -10556,7 +10556,7 @@ def _stat_function(
10556
10556
self ,
10557
10557
name : str ,
10558
10558
func ,
10559
- axis : Axis | None = None ,
10559
+ axis : Axis | None | lib . NoDefault = None ,
10560
10560
skipna : bool_t = True ,
10561
10561
level : Level | None = None ,
10562
10562
numeric_only : bool_t | None = None ,
@@ -10569,8 +10569,22 @@ def _stat_function(
10569
10569
10570
10570
validate_bool_kwarg (skipna , "skipna" , none_allowed = False )
10571
10571
10572
+ if axis is None and level is None and self .ndim > 1 :
10573
+ # user must have explicitly passed axis=None
10574
+ # GH#21597
10575
+ warnings .warn (
10576
+ f"In a future version, DataFrame.{ name } (axis=None) will return a "
10577
+ f"scalar { name } over the entire DataFrame. To retain the old "
10578
+ f"behavior, use 'frame.{ name } (axis=0)' or just 'frame.{ name } ()'" ,
10579
+ FutureWarning ,
10580
+ stacklevel = find_stack_level (),
10581
+ )
10582
+ if axis is lib .no_default :
10583
+ axis = None
10584
+
10572
10585
if axis is None :
10573
10586
axis = self ._stat_axis_number
10587
+ axis = cast (Axis , axis )
10574
10588
if level is not None :
10575
10589
warnings .warn (
10576
10590
"Using the level keyword in DataFrame and Series aggregations is "
@@ -10588,31 +10602,43 @@ def _stat_function(
10588
10602
10589
10603
def min (
10590
10604
self ,
10591
- axis : Axis | None = None ,
10605
+ axis : Axis | None | lib . NoDefault = lib . no_default ,
10592
10606
skipna : bool_t = True ,
10593
10607
level : Level | None = None ,
10594
10608
numeric_only : bool_t | None = None ,
10595
10609
** kwargs ,
10596
10610
):
10597
10611
return self ._stat_function (
10598
- "min" , nanops .nanmin , axis , skipna , level , numeric_only , ** kwargs
10612
+ "min" ,
10613
+ nanops .nanmin ,
10614
+ axis ,
10615
+ skipna ,
10616
+ level ,
10617
+ numeric_only ,
10618
+ ** kwargs ,
10599
10619
)
10600
10620
10601
10621
def max (
10602
10622
self ,
10603
- axis : Axis | None = None ,
10623
+ axis : Axis | None | lib . NoDefault = lib . no_default ,
10604
10624
skipna : bool_t = True ,
10605
10625
level : Level | None = None ,
10606
10626
numeric_only : bool_t | None = None ,
10607
10627
** kwargs ,
10608
10628
):
10609
10629
return self ._stat_function (
10610
- "max" , nanops .nanmax , axis , skipna , level , numeric_only , ** kwargs
10630
+ "max" ,
10631
+ nanops .nanmax ,
10632
+ axis ,
10633
+ skipna ,
10634
+ level ,
10635
+ numeric_only ,
10636
+ ** kwargs ,
10611
10637
)
10612
10638
10613
10639
def mean (
10614
10640
self ,
10615
- axis : Axis | None = None ,
10641
+ axis : Axis | None | lib . NoDefault = lib . no_default ,
10616
10642
skipna : bool_t = True ,
10617
10643
level : Level | None = None ,
10618
10644
numeric_only : bool_t | None = None ,
@@ -10624,7 +10650,7 @@ def mean(
10624
10650
10625
10651
def median (
10626
10652
self ,
10627
- axis : Axis | None = None ,
10653
+ axis : Axis | None | lib . NoDefault = lib . no_default ,
10628
10654
skipna : bool_t = True ,
10629
10655
level : Level | None = None ,
10630
10656
numeric_only : bool_t | None = None ,
@@ -10636,7 +10662,7 @@ def median(
10636
10662
10637
10663
def skew (
10638
10664
self ,
10639
- axis : Axis | None = None ,
10665
+ axis : Axis | None | lib . NoDefault = lib . no_default ,
10640
10666
skipna : bool_t = True ,
10641
10667
level : Level | None = None ,
10642
10668
numeric_only : bool_t | None = None ,
@@ -10648,7 +10674,7 @@ def skew(
10648
10674
10649
10675
def kurt (
10650
10676
self ,
10651
- axis : Axis | None = None ,
10677
+ axis : Axis | None | lib . NoDefault = lib . no_default ,
10652
10678
skipna : bool_t = True ,
10653
10679
level : Level | None = None ,
10654
10680
numeric_only : bool_t | None = None ,
@@ -10699,6 +10725,7 @@ def _min_count_stat_function(
10699
10725
min_count = min_count ,
10700
10726
numeric_only = numeric_only ,
10701
10727
)
10728
+
10702
10729
return self ._reduce (
10703
10730
func ,
10704
10731
name = name ,
@@ -11039,7 +11066,14 @@ def prod(
11039
11066
see_also = "" ,
11040
11067
examples = "" ,
11041
11068
)
11042
- def mean (self , axis = None , skipna = True , level = None , numeric_only = None , ** kwargs ):
11069
+ def mean (
11070
+ self ,
11071
+ axis : int | None | lib .NoDefault = lib .no_default ,
11072
+ skipna = True ,
11073
+ level = None ,
11074
+ numeric_only = None ,
11075
+ ** kwargs ,
11076
+ ):
11043
11077
return NDFrame .mean (self , axis , skipna , level , numeric_only , ** kwargs )
11044
11078
11045
11079
setattr (cls , "mean" , mean )
@@ -11054,7 +11088,14 @@ def mean(self, axis=None, skipna=True, level=None, numeric_only=None, **kwargs):
11054
11088
see_also = "" ,
11055
11089
examples = "" ,
11056
11090
)
11057
- def skew (self , axis = None , skipna = True , level = None , numeric_only = None , ** kwargs ):
11091
+ def skew (
11092
+ self ,
11093
+ axis : int | None | lib .NoDefault = lib .no_default ,
11094
+ skipna = True ,
11095
+ level = None ,
11096
+ numeric_only = None ,
11097
+ ** kwargs ,
11098
+ ):
11058
11099
return NDFrame .skew (self , axis , skipna , level , numeric_only , ** kwargs )
11059
11100
11060
11101
setattr (cls , "skew" , skew )
@@ -11072,7 +11113,14 @@ def skew(self, axis=None, skipna=True, level=None, numeric_only=None, **kwargs):
11072
11113
see_also = "" ,
11073
11114
examples = "" ,
11074
11115
)
11075
- def kurt (self , axis = None , skipna = True , level = None , numeric_only = None , ** kwargs ):
11116
+ def kurt (
11117
+ self ,
11118
+ axis : Axis | None | lib .NoDefault = lib .no_default ,
11119
+ skipna = True ,
11120
+ level = None ,
11121
+ numeric_only = None ,
11122
+ ** kwargs ,
11123
+ ):
11076
11124
return NDFrame .kurt (self , axis , skipna , level , numeric_only , ** kwargs )
11077
11125
11078
11126
setattr (cls , "kurt" , kurt )
@@ -11089,13 +11137,19 @@ def kurt(self, axis=None, skipna=True, level=None, numeric_only=None, **kwargs):
11089
11137
examples = "" ,
11090
11138
)
11091
11139
def median (
11092
- self , axis = None , skipna = True , level = None , numeric_only = None , ** kwargs
11140
+ self ,
11141
+ axis : int | None | lib .NoDefault = lib .no_default ,
11142
+ skipna = True ,
11143
+ level = None ,
11144
+ numeric_only = None ,
11145
+ ** kwargs ,
11093
11146
):
11094
11147
return NDFrame .median (self , axis , skipna , level , numeric_only , ** kwargs )
11095
11148
11096
11149
setattr (cls , "median" , median )
11097
11150
11098
- @doc (
11151
+ # error: Untyped decorator makes function "max" untyped
11152
+ @doc ( # type: ignore[misc]
11099
11153
_num_doc ,
11100
11154
desc = "Return the maximum of the values over the requested axis.\n \n "
11101
11155
"If you want the *index* of the maximum, use ``idxmax``. This is "
@@ -11107,12 +11161,20 @@ def median(
11107
11161
see_also = _stat_func_see_also ,
11108
11162
examples = _max_examples ,
11109
11163
)
11110
- def max (self , axis = None , skipna = True , level = None , numeric_only = None , ** kwargs ):
11164
+ def max (
11165
+ self ,
11166
+ axis : int | None | lib .NoDefault = lib .no_default ,
11167
+ skipna = True ,
11168
+ level = None ,
11169
+ numeric_only = None ,
11170
+ ** kwargs ,
11171
+ ):
11111
11172
return NDFrame .max (self , axis , skipna , level , numeric_only , ** kwargs )
11112
11173
11113
11174
setattr (cls , "max" , max )
11114
11175
11115
- @doc (
11176
+ # error: Untyped decorator makes function "max" untyped
11177
+ @doc ( # type: ignore[misc]
11116
11178
_num_doc ,
11117
11179
desc = "Return the minimum of the values over the requested axis.\n \n "
11118
11180
"If you want the *index* of the minimum, use ``idxmin``. This is "
@@ -11124,7 +11186,14 @@ def max(self, axis=None, skipna=True, level=None, numeric_only=None, **kwargs):
11124
11186
see_also = _stat_func_see_also ,
11125
11187
examples = _min_examples ,
11126
11188
)
11127
- def min (self , axis = None , skipna = True , level = None , numeric_only = None , ** kwargs ):
11189
+ def min (
11190
+ self ,
11191
+ axis : int | None | lib .NoDefault = lib .no_default ,
11192
+ skipna = True ,
11193
+ level = None ,
11194
+ numeric_only = None ,
11195
+ ** kwargs ,
11196
+ ):
11128
11197
return NDFrame .min (self , axis , skipna , level , numeric_only , ** kwargs )
11129
11198
11130
11199
setattr (cls , "min" , min )
0 commit comments