@@ -2261,7 +2261,7 @@ def test_int64_add_overflow():
2261
2261
class TestMode :
2262
2262
def test_no_mode (self ):
2263
2263
exp = Series ([], dtype = np .float64 , index = Index ([], dtype = int ))
2264
- tm .assert_series_equal (algos .mode ([]), exp )
2264
+ tm .assert_numpy_array_equal (algos .mode ([]), exp . values )
2265
2265
2266
2266
@pytest .mark .parametrize ("dt" , np .typecodes ["AllInteger" ] + np .typecodes ["Float" ])
2267
2267
def test_mode_single (self , dt ):
@@ -2272,20 +2272,22 @@ def test_mode_single(self, dt):
2272
2272
exp_multi = [1 ]
2273
2273
data_multi = [1 , 1 ]
2274
2274
2275
- s = Series (data_single , dtype = dt )
2275
+ ser = Series (data_single , dtype = dt )
2276
2276
exp = Series (exp_single , dtype = dt )
2277
- tm .assert_series_equal (algos .mode (s ), exp )
2277
+ tm .assert_numpy_array_equal (algos .mode (ser .values ), exp .values )
2278
+ tm .assert_series_equal (ser .mode (), exp )
2278
2279
2279
- s = Series (data_multi , dtype = dt )
2280
+ ser = Series (data_multi , dtype = dt )
2280
2281
exp = Series (exp_multi , dtype = dt )
2281
- tm .assert_series_equal (algos .mode (s ), exp )
2282
+ tm .assert_numpy_array_equal (algos .mode (ser .values ), exp .values )
2283
+ tm .assert_series_equal (ser .mode (), exp )
2282
2284
2283
2285
def test_mode_obj_int (self ):
2284
2286
exp = Series ([1 ], dtype = int )
2285
- tm .assert_series_equal (algos .mode ([1 ]), exp )
2287
+ tm .assert_numpy_array_equal (algos .mode ([1 ]), exp . values )
2286
2288
2287
2289
exp = Series (["a" , "b" , "c" ], dtype = object )
2288
- tm .assert_series_equal (algos .mode (["a" , "b" , "c" ]), exp )
2290
+ tm .assert_numpy_array_equal (algos .mode (["a" , "b" , "c" ]), exp . values )
2289
2291
2290
2292
@pytest .mark .parametrize ("dt" , np .typecodes ["AllInteger" ] + np .typecodes ["Float" ])
2291
2293
def test_number_mode (self , dt ):
@@ -2295,104 +2297,120 @@ def test_number_mode(self, dt):
2295
2297
exp_multi = [1 , 3 ]
2296
2298
data_multi = [1 ] * 5 + [2 ] * 3 + [3 ] * 5
2297
2299
2298
- s = Series (data_single , dtype = dt )
2300
+ ser = Series (data_single , dtype = dt )
2299
2301
exp = Series (exp_single , dtype = dt )
2300
- tm .assert_series_equal (algos .mode (s ), exp )
2302
+ tm .assert_numpy_array_equal (algos .mode (ser .values ), exp .values )
2303
+ tm .assert_series_equal (ser .mode (), exp )
2301
2304
2302
- s = Series (data_multi , dtype = dt )
2305
+ ser = Series (data_multi , dtype = dt )
2303
2306
exp = Series (exp_multi , dtype = dt )
2304
- tm .assert_series_equal (algos .mode (s ), exp )
2307
+ tm .assert_numpy_array_equal (algos .mode (ser .values ), exp .values )
2308
+ tm .assert_series_equal (ser .mode (), exp )
2305
2309
2306
2310
def test_strobj_mode (self ):
2307
2311
exp = ["b" ]
2308
2312
data = ["a" ] * 2 + ["b" ] * 3
2309
2313
2310
- s = Series (data , dtype = "c" )
2314
+ ser = Series (data , dtype = "c" )
2311
2315
exp = Series (exp , dtype = "c" )
2312
- tm .assert_series_equal (algos .mode (s ), exp )
2316
+ tm .assert_numpy_array_equal (algos .mode (ser .values ), exp .values )
2317
+ tm .assert_series_equal (ser .mode (), exp )
2313
2318
2314
2319
@pytest .mark .parametrize ("dt" , [str , object ])
2315
2320
def test_strobj_multi_char (self , dt ):
2316
2321
exp = ["bar" ]
2317
2322
data = ["foo" ] * 2 + ["bar" ] * 3
2318
2323
2319
- s = Series (data , dtype = dt )
2324
+ ser = Series (data , dtype = dt )
2320
2325
exp = Series (exp , dtype = dt )
2321
- tm .assert_series_equal (algos .mode (s ), exp )
2326
+ tm .assert_numpy_array_equal (algos .mode (ser .values ), exp .values )
2327
+ tm .assert_series_equal (ser .mode (), exp )
2322
2328
2323
2329
def test_datelike_mode (self ):
2324
2330
exp = Series (["1900-05-03" , "2011-01-03" , "2013-01-02" ], dtype = "M8[ns]" )
2325
- s = Series (["2011-01-03" , "2013-01-02" , "1900-05-03" ], dtype = "M8[ns]" )
2326
- tm .assert_series_equal (algos .mode (s ), exp )
2331
+ ser = Series (["2011-01-03" , "2013-01-02" , "1900-05-03" ], dtype = "M8[ns]" )
2332
+ tm .assert_extension_array_equal (algos .mode (ser .values ), exp ._values )
2333
+ tm .assert_series_equal (ser .mode (), exp )
2327
2334
2328
2335
exp = Series (["2011-01-03" , "2013-01-02" ], dtype = "M8[ns]" )
2329
- s = Series (
2336
+ ser = Series (
2330
2337
["2011-01-03" , "2013-01-02" , "1900-05-03" , "2011-01-03" , "2013-01-02" ],
2331
2338
dtype = "M8[ns]" ,
2332
2339
)
2333
- tm .assert_series_equal (algos .mode (s ), exp )
2340
+ tm .assert_extension_array_equal (algos .mode (ser .values ), exp ._values )
2341
+ tm .assert_series_equal (ser .mode (), exp )
2334
2342
2335
2343
def test_timedelta_mode (self ):
2336
2344
exp = Series (["-1 days" , "0 days" , "1 days" ], dtype = "timedelta64[ns]" )
2337
- s = Series (["1 days" , "-1 days" , "0 days" ], dtype = "timedelta64[ns]" )
2338
- tm .assert_series_equal (algos .mode (s ), exp )
2345
+ ser = Series (["1 days" , "-1 days" , "0 days" ], dtype = "timedelta64[ns]" )
2346
+ tm .assert_extension_array_equal (algos .mode (ser .values ), exp ._values )
2347
+ tm .assert_series_equal (ser .mode (), exp )
2339
2348
2340
2349
exp = Series (["2 min" , "1 day" ], dtype = "timedelta64[ns]" )
2341
- s = Series (
2350
+ ser = Series (
2342
2351
["1 day" , "1 day" , "-1 day" , "-1 day 2 min" , "2 min" , "2 min" ],
2343
2352
dtype = "timedelta64[ns]" ,
2344
2353
)
2345
- tm .assert_series_equal (algos .mode (s ), exp )
2354
+ tm .assert_extension_array_equal (algos .mode (ser .values ), exp ._values )
2355
+ tm .assert_series_equal (ser .mode (), exp )
2346
2356
2347
2357
def test_mixed_dtype (self ):
2348
2358
exp = Series (["foo" ])
2349
- s = Series ([1 , "foo" , "foo" ])
2350
- tm .assert_series_equal (algos .mode (s ), exp )
2359
+ ser = Series ([1 , "foo" , "foo" ])
2360
+ tm .assert_numpy_array_equal (algos .mode (ser .values ), exp .values )
2361
+ tm .assert_series_equal (ser .mode (), exp )
2351
2362
2352
2363
def test_uint64_overflow (self ):
2353
2364
exp = Series ([2 ** 63 ], dtype = np .uint64 )
2354
- s = Series ([1 , 2 ** 63 , 2 ** 63 ], dtype = np .uint64 )
2355
- tm .assert_series_equal (algos .mode (s ), exp )
2365
+ ser = Series ([1 , 2 ** 63 , 2 ** 63 ], dtype = np .uint64 )
2366
+ tm .assert_numpy_array_equal (algos .mode (ser .values ), exp .values )
2367
+ tm .assert_series_equal (ser .mode (), exp )
2356
2368
2357
2369
exp = Series ([1 , 2 ** 63 ], dtype = np .uint64 )
2358
- s = Series ([1 , 2 ** 63 ], dtype = np .uint64 )
2359
- tm .assert_series_equal (algos .mode (s ), exp )
2370
+ ser = Series ([1 , 2 ** 63 ], dtype = np .uint64 )
2371
+ tm .assert_numpy_array_equal (algos .mode (ser .values ), exp .values )
2372
+ tm .assert_series_equal (ser .mode (), exp )
2360
2373
2361
2374
def test_categorical (self ):
2362
2375
c = Categorical ([1 , 2 ])
2363
2376
exp = c
2364
- tm .assert_categorical_equal (algos .mode (c ), exp )
2365
- tm .assert_categorical_equal (c .mode (), exp )
2377
+ msg = "Categorical.mode is deprecated"
2378
+ with tm .assert_produces_warning (FutureWarning , match = msg ):
2379
+ res = c .mode ()
2380
+ tm .assert_categorical_equal (res , exp )
2366
2381
2367
2382
c = Categorical ([1 , "a" , "a" ])
2368
2383
exp = Categorical (["a" ], categories = [1 , "a" ])
2369
- tm .assert_categorical_equal (algos .mode (c ), exp )
2370
- tm .assert_categorical_equal (c .mode (), exp )
2384
+ with tm .assert_produces_warning (FutureWarning , match = msg ):
2385
+ res = c .mode ()
2386
+ tm .assert_categorical_equal (res , exp )
2371
2387
2372
2388
c = Categorical ([1 , 1 , 2 , 3 , 3 ])
2373
2389
exp = Categorical ([1 , 3 ], categories = [1 , 2 , 3 ])
2374
- tm .assert_categorical_equal (algos .mode (c ), exp )
2375
- tm .assert_categorical_equal (c .mode (), exp )
2390
+ with tm .assert_produces_warning (FutureWarning , match = msg ):
2391
+ res = c .mode ()
2392
+ tm .assert_categorical_equal (res , exp )
2376
2393
2377
2394
def test_index (self ):
2378
2395
idx = Index ([1 , 2 , 3 ])
2379
2396
exp = Series ([1 , 2 , 3 ], dtype = np .int64 )
2380
- tm .assert_series_equal (algos .mode (idx ), exp )
2397
+ tm .assert_numpy_array_equal (algos .mode (idx ), exp . values )
2381
2398
2382
2399
idx = Index ([1 , "a" , "a" ])
2383
2400
exp = Series (["a" ], dtype = object )
2384
- tm .assert_series_equal (algos .mode (idx ), exp )
2401
+ tm .assert_numpy_array_equal (algos .mode (idx ), exp . values )
2385
2402
2386
2403
idx = Index ([1 , 1 , 2 , 3 , 3 ])
2387
2404
exp = Series ([1 , 3 ], dtype = np .int64 )
2388
- tm .assert_series_equal (algos .mode (idx ), exp )
2405
+ tm .assert_numpy_array_equal (algos .mode (idx ), exp . values )
2389
2406
2390
- exp = Series (["2 min" , "1 day" ], dtype = "timedelta64[ns]" )
2391
2407
idx = Index (
2392
2408
["1 day" , "1 day" , "-1 day" , "-1 day 2 min" , "2 min" , "2 min" ],
2393
2409
dtype = "timedelta64[ns]" ,
2394
2410
)
2395
- tm .assert_series_equal (algos .mode (idx ), exp )
2411
+ with pytest .raises (AttributeError , match = "TimedeltaIndex" ):
2412
+ # algos.mode expects Arraylike, does *not* unwrap TimedeltaIndex
2413
+ algos .mode (idx )
2396
2414
2397
2415
2398
2416
class TestDiff :
0 commit comments