@@ -61,25 +61,39 @@ def describe_ndframe(
61
61
Dataframe or series description.
62
62
"""
63
63
percentiles = refine_percentiles (percentiles )
64
+ describer = create_describer (
65
+ obj ,
66
+ include = include ,
67
+ exclude = exclude ,
68
+ datetime_is_numeric = datetime_is_numeric ,
69
+ )
70
+ result = describer .describe (percentiles = percentiles )
71
+ return cast (FrameOrSeries , result )
64
72
65
- describer : NDFrameDescriberAbstract
66
73
74
+ def create_describer (
75
+ obj : "FrameOrSeries" ,
76
+ include : Optional [Union [str , Sequence [str ]]],
77
+ exclude : Optional [Union [str , Sequence [str ]]],
78
+ datetime_is_numeric : bool ,
79
+ ) -> "NDFrameDescriberAbstract" :
80
+ """
81
+ Create concrete NDFrameDescriberAbstract instance suitable for the object.
82
+ """
83
+ describer : NDFrameDescriberAbstract
67
84
if obj .ndim == 1 :
68
- describer = SeriesDescriber (
85
+ return SeriesDescriber (
69
86
series = cast ("Series" , obj ),
70
87
datetime_is_numeric = datetime_is_numeric ,
71
88
)
72
89
else :
73
- describer = DataFrameDescriber (
90
+ return DataFrameDescriber (
74
91
frame = cast ("DataFrame" , obj ),
75
92
include = include ,
76
93
exclude = exclude ,
77
94
datetime_is_numeric = datetime_is_numeric ,
78
95
)
79
96
80
- result = describer .describe (percentiles = percentiles )
81
- return cast (FrameOrSeries , result )
82
-
83
97
84
98
class NDFrameDescriberAbstract (ABC ):
85
99
"""Abstract class for describing dataframe or series."""
0 commit comments