@@ -2261,7 +2261,7 @@ def test_int64_add_overflow():
22612261class TestMode :
22622262 def test_no_mode (self ):
22632263 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 )
22652265
22662266 @pytest .mark .parametrize ("dt" , np .typecodes ["AllInteger" ] + np .typecodes ["Float" ])
22672267 def test_mode_single (self , dt ):
@@ -2272,20 +2272,22 @@ def test_mode_single(self, dt):
22722272 exp_multi = [1 ]
22732273 data_multi = [1 , 1 ]
22742274
2275- s = Series (data_single , dtype = dt )
2275+ ser = Series (data_single , dtype = dt )
22762276 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 )
22782279
2279- s = Series (data_multi , dtype = dt )
2280+ ser = Series (data_multi , dtype = dt )
22802281 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 )
22822284
22832285 def test_mode_obj_int (self ):
22842286 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 )
22862288
22872289 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 )
22892291
22902292 @pytest .mark .parametrize ("dt" , np .typecodes ["AllInteger" ] + np .typecodes ["Float" ])
22912293 def test_number_mode (self , dt ):
@@ -2295,104 +2297,120 @@ def test_number_mode(self, dt):
22952297 exp_multi = [1 , 3 ]
22962298 data_multi = [1 ] * 5 + [2 ] * 3 + [3 ] * 5
22972299
2298- s = Series (data_single , dtype = dt )
2300+ ser = Series (data_single , dtype = dt )
22992301 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 )
23012304
2302- s = Series (data_multi , dtype = dt )
2305+ ser = Series (data_multi , dtype = dt )
23032306 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 )
23052309
23062310 def test_strobj_mode (self ):
23072311 exp = ["b" ]
23082312 data = ["a" ] * 2 + ["b" ] * 3
23092313
2310- s = Series (data , dtype = "c" )
2314+ ser = Series (data , dtype = "c" )
23112315 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 )
23132318
23142319 @pytest .mark .parametrize ("dt" , [str , object ])
23152320 def test_strobj_multi_char (self , dt ):
23162321 exp = ["bar" ]
23172322 data = ["foo" ] * 2 + ["bar" ] * 3
23182323
2319- s = Series (data , dtype = dt )
2324+ ser = Series (data , dtype = dt )
23202325 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 )
23222328
23232329 def test_datelike_mode (self ):
23242330 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 )
23272334
23282335 exp = Series (["2011-01-03" , "2013-01-02" ], dtype = "M8[ns]" )
2329- s = Series (
2336+ ser = Series (
23302337 ["2011-01-03" , "2013-01-02" , "1900-05-03" , "2011-01-03" , "2013-01-02" ],
23312338 dtype = "M8[ns]" ,
23322339 )
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 )
23342342
23352343 def test_timedelta_mode (self ):
23362344 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 )
23392348
23402349 exp = Series (["2 min" , "1 day" ], dtype = "timedelta64[ns]" )
2341- s = Series (
2350+ ser = Series (
23422351 ["1 day" , "1 day" , "-1 day" , "-1 day 2 min" , "2 min" , "2 min" ],
23432352 dtype = "timedelta64[ns]" ,
23442353 )
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 )
23462356
23472357 def test_mixed_dtype (self ):
23482358 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 )
23512362
23522363 def test_uint64_overflow (self ):
23532364 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 )
23562368
23572369 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 )
23602373
23612374 def test_categorical (self ):
23622375 c = Categorical ([1 , 2 ])
23632376 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 )
23662381
23672382 c = Categorical ([1 , "a" , "a" ])
23682383 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 )
23712387
23722388 c = Categorical ([1 , 1 , 2 , 3 , 3 ])
23732389 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 )
23762393
23772394 def test_index (self ):
23782395 idx = Index ([1 , 2 , 3 ])
23792396 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 )
23812398
23822399 idx = Index ([1 , "a" , "a" ])
23832400 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 )
23852402
23862403 idx = Index ([1 , 1 , 2 , 3 , 3 ])
23872404 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 )
23892406
2390- exp = Series (["2 min" , "1 day" ], dtype = "timedelta64[ns]" )
23912407 idx = Index (
23922408 ["1 day" , "1 day" , "-1 day" , "-1 day 2 min" , "2 min" , "2 min" ],
23932409 dtype = "timedelta64[ns]" ,
23942410 )
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 )
23962414
23972415
23982416class TestDiff :
0 commit comments