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