@@ -231,28 +231,33 @@ def test_median(self):
231
231
])
232
232
def test_mode_empty (self , dropna , expected ):
233
233
s = Series ([], dtype = np .float64 )
234
- tm .assert_series_equal (s .mode (dropna ), expected )
234
+ result = s .mode (dropna )
235
+ tm .assert_series_equal (result , expected )
235
236
236
- @pytest .mark .parametrize ('dropna, expected1, expected2, expected3' , [
237
- (True , [1 ], [1 , 3 ], [1.0 ]),
238
- (False , [1 ], [1 , 3 ], [1 , np .nan ]),
237
+ @pytest .mark .parametrize ('dropna, data, expected' , [
238
+ (True , [1 , 1 , 1 , 2 ], [1 ]),
239
+ (True , [1 , 1 , 1 , 2 , 3 , 3 , 3 ], [1 , 3 ]),
240
+ (False , [1 , 1 , 1 , 2 ], [1 ]),
241
+ (False , [1 , 1 , 1 , 2 , 3 , 3 , 3 ], [1 , 3 ]),
239
242
])
240
- def test_mode_numerical (self , dropna , expected1 , expected2 , expected3 ):
241
- data_single = [1 ] * 5 + [2 ] * 3
242
- data_multi = [1 ] * 5 + [2 ] * 3 + [3 ] * 5
243
-
244
- for dt in np .typecodes ['AllInteger' ] + np .typecodes ['Float' ]:
245
- s = Series (data_single , dtype = dt )
246
- expected1 = Series (expected1 , dtype = dt )
247
- tm .assert_series_equal (s .mode (dropna ), expected1 )
248
-
249
- s = Series (data_multi , dtype = dt )
250
- expected2 = Series (expected2 , dtype = dt )
251
- tm .assert_series_equal (s .mode (dropna ), expected2 )
243
+ @pytest .mark .parametrize ('dt' ,
244
+ list (np .typecodes ['AllInteger' ] + np .typecodes ['Float' ])
245
+ )
246
+ def test_mode_numerical (self , dropna , data , expected , dt ):
247
+ s = Series (data , dtype = dt )
248
+ result = s .mode (dropna )
249
+ expected = Series (expected , dtype = dt )
250
+ tm .assert_series_equal (result , expected )
252
251
253
- s = Series ([1 , np .nan ])
254
- expected = Series (expected3 )
255
- tm .assert_series_equal (s .mode (dropna ), expected )
252
+ @pytest .mark .parametrize ('dropna, expected' , [
253
+ (True , [1.0 ]),
254
+ (False , [1 , np .nan ]),
255
+ ])
256
+ def test_mode_numerical_nan (self , dropna , expected ):
257
+ s = Series ([1 , 1 , 2 , np .nan , np .nan ])
258
+ result = s .mode (dropna )
259
+ expected = Series (expected )
260
+ tm .assert_series_equal (result , expected )
256
261
257
262
@pytest .mark .parametrize ('dropna, expected1, expected2, expected3' , [
258
263
(True , ['b' ], ['bar' ], ['nan' ]),
@@ -263,34 +268,37 @@ def test_mode_str_obj(self, dropna, expected1, expected2, expected3):
263
268
data = ['a' ] * 2 + ['b' ] * 3
264
269
265
270
s = Series (data , dtype = 'c' )
271
+ result = s .mode (dropna )
266
272
expected1 = Series (expected1 , dtype = 'c' )
267
- tm .assert_series_equal (s . mode ( dropna ) , expected1 )
273
+ tm .assert_series_equal (result , expected1 )
268
274
269
275
data = ['foo' , 'bar' , 'bar' , np .nan , np .nan , np .nan ]
270
276
271
277
s = Series (data , dtype = object )
272
- expected2 = Series (expected2 , dtype = object )
273
278
result = s .mode (dropna ).sort_values ().reset_index (drop = True )
279
+ expected2 = Series (expected2 , dtype = object )
274
280
tm .assert_series_equal (result , expected2 )
275
281
276
282
data = ['foo' , 'bar' , 'bar' , np .nan , np .nan , np .nan ]
277
283
278
284
s = Series (data , dtype = str )
285
+ result = s .mode (dropna )
279
286
expected3 = Series (expected3 , dtype = str )
280
- tm .assert_series_equal (s . mode ( dropna ) , expected3 )
287
+ tm .assert_series_equal (result , expected3 )
281
288
282
289
@pytest .mark .parametrize ('dropna, expected1, expected2' , [
283
290
(True , ['foo' ], ['foo' ]),
284
291
(False , ['foo' ], [np .nan ])
285
292
])
286
293
def test_mode_mixeddtype (self , dropna , expected1 , expected2 ):
287
- expected = Series (expected1 )
288
294
s = Series ([1 , 'foo' , 'foo' ])
289
- tm .assert_series_equal (s .mode (dropna ), expected )
295
+ result = s .mode (dropna )
296
+ expected = Series (expected1 )
297
+ tm .assert_series_equal (result , expected )
290
298
291
- expected = Series (expected2 , dtype = object )
292
299
s = Series ([1 , 'foo' , 'foo' , np .nan , np .nan , np .nan ])
293
300
result = s .mode (dropna ).sort_values ().reset_index (drop = True )
301
+ expected = Series (expected2 , dtype = object )
294
302
tm .assert_series_equal (result , expected )
295
303
296
304
@pytest .mark .parametrize ('dropna, expected1, expected2' , [
@@ -299,16 +307,18 @@ def test_mode_mixeddtype(self, dropna, expected1, expected2):
299
307
(False , [np .nan ], [np .nan , '2011-01-03' , '2013-01-02' ]),
300
308
])
301
309
def test_mode_datetime (self , dropna , expected1 , expected2 ):
302
- expected1 = Series (expected1 , dtype = 'M8[ns]' )
303
310
s = Series (['2011-01-03' , '2013-01-02' ,
304
311
'1900-05-03' , 'nan' , 'nan' ], dtype = 'M8[ns]' )
305
- tm .assert_series_equal (s .mode (dropna ), expected1 )
312
+ result = s .mode (dropna )
313
+ expected1 = Series (expected1 , dtype = 'M8[ns]' )
314
+ tm .assert_series_equal (result , expected1 )
306
315
307
- expected2 = Series (expected2 , dtype = 'M8[ns]' )
308
316
s = Series (['2011-01-03' , '2013-01-02' , '1900-05-03' ,
309
317
'2011-01-03' , '2013-01-02' , 'nan' , 'nan' ],
310
318
dtype = 'M8[ns]' )
311
- tm .assert_series_equal (s .mode (dropna ), expected2 )
319
+ result = s .mode (dropna )
320
+ expected2 = Series (expected2 , dtype = 'M8[ns]' )
321
+ tm .assert_series_equal (result , expected2 )
312
322
313
323
@pytest .mark .parametrize ('dropna, expected1, expected2' , [
314
324
(True , ['-1 days' , '0 days' , '1 days' ], ['2 min' , '1 day' ]),
@@ -319,14 +329,16 @@ def test_mode_timedelta(self, dropna, expected1, expected2):
319
329
320
330
s = Series (['1 days' , '-1 days' , '0 days' , 'nan' , 'nan' ],
321
331
dtype = 'timedelta64[ns]' )
332
+ result = s .mode (dropna )
322
333
expected1 = Series (expected1 , dtype = 'timedelta64[ns]' )
323
- tm .assert_series_equal (s . mode ( dropna ) , expected1 )
334
+ tm .assert_series_equal (result , expected1 )
324
335
325
336
s = Series (['1 day' , '1 day' , '-1 day' , '-1 day 2 min' ,
326
337
'2 min' , '2 min' , 'nan' , 'nan' ],
327
338
dtype = 'timedelta64[ns]' )
339
+ result = s .mode (dropna )
328
340
expected2 = Series (expected2 , dtype = 'timedelta64[ns]' )
329
- tm .assert_series_equal (s . mode ( dropna ) , expected2 )
341
+ tm .assert_series_equal (result , expected2 )
330
342
331
343
@pytest .mark .parametrize ('dropna, expected1, expected2, expected3' , [
332
344
(True , Categorical ([1 , 2 ], categories = [1 , 2 ]),
@@ -338,30 +350,35 @@ def test_mode_timedelta(self, dropna, expected1, expected2):
338
350
])
339
351
def test_mode_category (self , dropna , expected1 , expected2 , expected3 ):
340
352
s = Series (Categorical ([1 , 2 , np .nan , np .nan ]))
353
+ result = s .mode (dropna )
341
354
expected1 = Series (expected1 , dtype = 'category' )
342
- tm .assert_series_equal (s . mode ( dropna ) , expected1 )
355
+ tm .assert_series_equal (result , expected1 )
343
356
344
357
s = Series (Categorical ([1 , 'a' , 'a' , np .nan , np .nan ]))
358
+ result = s .mode (dropna )
345
359
expected2 = Series (expected2 , dtype = 'category' )
346
- tm .assert_series_equal (s . mode ( dropna ) , expected2 )
360
+ tm .assert_series_equal (result , expected2 )
347
361
348
362
s = Series (Categorical ([1 , 1 , 2 , 3 , 3 , np .nan , np .nan ]))
363
+ result = s .mode (dropna )
349
364
expected3 = Series (expected3 , dtype = 'category' )
350
- tm .assert_series_equal (s . mode ( dropna ) , expected3 )
365
+ tm .assert_series_equal (result , expected3 )
351
366
352
367
@pytest .mark .parametrize ('dropna, expected1, expected2' , [
353
368
(True , [2 ** 63 ], [1 , 2 ** 63 ]),
354
369
(False , [2 ** 63 ], [1 , 2 ** 63 ])
355
370
])
356
371
def test_mode_intoverflow (self , dropna , expected1 , expected2 ):
357
372
# Test for uint64 overflow.
358
- expected1 = Series (expected1 , dtype = np .uint64 )
359
373
s = Series ([1 , 2 ** 63 , 2 ** 63 ], dtype = np .uint64 )
360
- tm .assert_series_equal (s .mode (dropna ), expected1 )
374
+ result = s .mode (dropna )
375
+ expected1 = Series (expected1 , dtype = np .uint64 )
376
+ tm .assert_series_equal (result , expected1 )
361
377
362
- expected2 = Series (expected2 , dtype = np .uint64 )
363
378
s = Series ([1 , 2 ** 63 ], dtype = np .uint64 )
364
- tm .assert_series_equal (s .mode (dropna ), expected2 )
379
+ result = s .mode (dropna )
380
+ expected2 = Series (expected2 , dtype = np .uint64 )
381
+ tm .assert_series_equal (result , expected2 )
365
382
366
383
@pytest .mark .skipif (not compat .PY3 , reason = "only PY3" )
367
384
def test_mode_sortwarning (self ):
0 commit comments