@@ -257,6 +257,52 @@ def test_bool_describe_in_mixed_frame(self):
257
257
index = ['count' , 'unique' , 'top' , 'freq' ])
258
258
assert_frame_equal (result , expected )
259
259
260
+ def test_describe_categorical_columns (self ):
261
+ # GH 11558
262
+ columns = pd .CategoricalIndex (['int1' , 'int2' , 'obj' ],
263
+ ordered = True , name = 'XXX' )
264
+ df = DataFrame ({'int1' : [10 , 20 , 30 , 40 , 50 ],
265
+ 'int2' : [10 , 20 , 30 , 40 , 50 ],
266
+ 'obj' : ['A' , 0 , None , 'X' , 1 ]},
267
+ columns = columns )
268
+ result = df .describe ()
269
+
270
+ exp_columns = pd .CategoricalIndex (['int1' , 'int2' ],
271
+ categories = ['int1' , 'int2' , 'obj' ],
272
+ ordered = True , name = 'XXX' )
273
+ expected = DataFrame ({'int1' : [5 , 30 , df .int1 .std (),
274
+ 10 , 20 , 30 , 40 , 50 ],
275
+ 'int2' : [5 , 30 , df .int2 .std (),
276
+ 10 , 20 , 30 , 40 , 50 ]},
277
+ index = ['count' , 'mean' , 'std' , 'min' , '25%' ,
278
+ '50%' , '75%' , 'max' ],
279
+ columns = exp_columns )
280
+ tm .assert_frame_equal (result , expected )
281
+ tm .assert_categorical_equal (result .columns .values ,
282
+ expected .columns .values )
283
+
284
+ def test_describe_datetime_columns (self ):
285
+ columns = pd .DatetimeIndex (['2011-01-01' , '2011-02-01' , '2011-03-01' ],
286
+ freq = 'MS' , tz = 'US/Eastern' , name = 'XXX' )
287
+ df = DataFrame ({0 : [10 , 20 , 30 , 40 , 50 ],
288
+ 1 : [10 , 20 , 30 , 40 , 50 ],
289
+ 2 : ['A' , 0 , None , 'X' , 1 ]})
290
+ df .columns = columns
291
+ result = df .describe ()
292
+
293
+ exp_columns = pd .DatetimeIndex (['2011-01-01' , '2011-02-01' ],
294
+ freq = 'MS' , tz = 'US/Eastern' , name = 'XXX' )
295
+ expected = DataFrame ({0 : [5 , 30 , df .iloc [:, 0 ].std (),
296
+ 10 , 20 , 30 , 40 , 50 ],
297
+ 1 : [5 , 30 , df .iloc [:, 1 ].std (),
298
+ 10 , 20 , 30 , 40 , 50 ]},
299
+ index = ['count' , 'mean' , 'std' , 'min' , '25%' ,
300
+ '50%' , '75%' , 'max' ])
301
+ expected .columns = exp_columns
302
+ tm .assert_frame_equal (result , expected )
303
+ self .assertEqual (result .columns .freq , 'MS' )
304
+ self .assertEqual (result .columns .tz , expected .columns .tz )
305
+
260
306
def test_reduce_mixed_frame (self ):
261
307
# GH 6806
262
308
df = DataFrame ({
0 commit comments