@@ -1866,180 +1866,6 @@ def s_main_dtypes():
18661866 return df
18671867
18681868
1869- class TestMode (object ):
1870-
1871- @pytest .mark .parametrize ('dropna, expected' , [
1872- (True , Series ([], dtype = np .float64 )),
1873- (False , Series ([], dtype = np .float64 ))
1874- ])
1875- def test_mode_empty (self , dropna , expected ):
1876- s = Series ([], dtype = np .float64 )
1877- result = s .mode (dropna )
1878- tm .assert_series_equal (result , expected )
1879-
1880- @pytest .mark .parametrize ('dropna, data, expected' , [
1881- (True , [1 , 1 , 1 , 2 ], [1 ]),
1882- (True , [1 , 1 , 1 , 2 , 3 , 3 , 3 ], [1 , 3 ]),
1883- (False , [1 , 1 , 1 , 2 ], [1 ]),
1884- (False , [1 , 1 , 1 , 2 , 3 , 3 , 3 ], [1 , 3 ]),
1885- ])
1886- @pytest .mark .parametrize (
1887- 'dt' ,
1888- list (np .typecodes ['AllInteger' ] + np .typecodes ['Float' ])
1889- )
1890- def test_mode_numerical (self , dropna , data , expected , dt ):
1891- s = Series (data , dtype = dt )
1892- result = s .mode (dropna )
1893- expected = Series (expected , dtype = dt )
1894- tm .assert_series_equal (result , expected )
1895-
1896- @pytest .mark .parametrize ('dropna, expected' , [
1897- (True , [1.0 ]),
1898- (False , [1 , np .nan ]),
1899- ])
1900- def test_mode_numerical_nan (self , dropna , expected ):
1901- s = Series ([1 , 1 , 2 , np .nan , np .nan ])
1902- result = s .mode (dropna )
1903- expected = Series (expected )
1904- tm .assert_series_equal (result , expected )
1905-
1906- @pytest .mark .parametrize ('dropna, expected1, expected2, expected3' , [
1907- (True , ['b' ], ['bar' ], ['nan' ]),
1908- (False , ['b' ], [np .nan ], ['nan' ])
1909- ])
1910- def test_mode_str_obj (self , dropna , expected1 , expected2 , expected3 ):
1911- # Test string and object types.
1912- data = ['a' ] * 2 + ['b' ] * 3
1913-
1914- s = Series (data , dtype = 'c' )
1915- result = s .mode (dropna )
1916- expected1 = Series (expected1 , dtype = 'c' )
1917- tm .assert_series_equal (result , expected1 )
1918-
1919- data = ['foo' , 'bar' , 'bar' , np .nan , np .nan , np .nan ]
1920-
1921- s = Series (data , dtype = object )
1922- result = s .mode (dropna )
1923- expected2 = Series (expected2 , dtype = object )
1924- tm .assert_series_equal (result , expected2 )
1925-
1926- data = ['foo' , 'bar' , 'bar' , np .nan , np .nan , np .nan ]
1927-
1928- s = Series (data , dtype = object ).astype (str )
1929- result = s .mode (dropna )
1930- expected3 = Series (expected3 , dtype = str )
1931- tm .assert_series_equal (result , expected3 )
1932-
1933- @pytest .mark .parametrize ('dropna, expected1, expected2' , [
1934- (True , ['foo' ], ['foo' ]),
1935- (False , ['foo' ], [np .nan ])
1936- ])
1937- def test_mode_mixeddtype (self , dropna , expected1 , expected2 ):
1938- s = Series ([1 , 'foo' , 'foo' ])
1939- result = s .mode (dropna )
1940- expected = Series (expected1 )
1941- tm .assert_series_equal (result , expected )
1942-
1943- s = Series ([1 , 'foo' , 'foo' , np .nan , np .nan , np .nan ])
1944- result = s .mode (dropna )
1945- expected = Series (expected2 , dtype = object )
1946- tm .assert_series_equal (result , expected )
1947-
1948- @pytest .mark .parametrize ('dropna, expected1, expected2' , [
1949- (True , ['1900-05-03' , '2011-01-03' , '2013-01-02' ],
1950- ['2011-01-03' , '2013-01-02' ]),
1951- (False , [np .nan ], [np .nan , '2011-01-03' , '2013-01-02' ]),
1952- ])
1953- def test_mode_datetime (self , dropna , expected1 , expected2 ):
1954- s = Series (['2011-01-03' , '2013-01-02' ,
1955- '1900-05-03' , 'nan' , 'nan' ], dtype = 'M8[ns]' )
1956- result = s .mode (dropna )
1957- expected1 = Series (expected1 , dtype = 'M8[ns]' )
1958- tm .assert_series_equal (result , expected1 )
1959-
1960- s = Series (['2011-01-03' , '2013-01-02' , '1900-05-03' ,
1961- '2011-01-03' , '2013-01-02' , 'nan' , 'nan' ],
1962- dtype = 'M8[ns]' )
1963- result = s .mode (dropna )
1964- expected2 = Series (expected2 , dtype = 'M8[ns]' )
1965- tm .assert_series_equal (result , expected2 )
1966-
1967- @pytest .mark .parametrize ('dropna, expected1, expected2' , [
1968- (True , ['-1 days' , '0 days' , '1 days' ], ['2 min' , '1 day' ]),
1969- (False , [np .nan ], [np .nan , '2 min' , '1 day' ]),
1970- ])
1971- def test_mode_timedelta (self , dropna , expected1 , expected2 ):
1972- # gh-5986: Test timedelta types.
1973-
1974- s = Series (['1 days' , '-1 days' , '0 days' , 'nan' , 'nan' ],
1975- dtype = 'timedelta64[ns]' )
1976- result = s .mode (dropna )
1977- expected1 = Series (expected1 , dtype = 'timedelta64[ns]' )
1978- tm .assert_series_equal (result , expected1 )
1979-
1980- s = Series (['1 day' , '1 day' , '-1 day' , '-1 day 2 min' ,
1981- '2 min' , '2 min' , 'nan' , 'nan' ],
1982- dtype = 'timedelta64[ns]' )
1983- result = s .mode (dropna )
1984- expected2 = Series (expected2 , dtype = 'timedelta64[ns]' )
1985- tm .assert_series_equal (result , expected2 )
1986-
1987- @pytest .mark .parametrize ('dropna, expected1, expected2, expected3' , [
1988- (True , Categorical ([1 , 2 ], categories = [1 , 2 ]),
1989- Categorical (['a' ], categories = [1 , 'a' ]),
1990- Categorical ([3 , 1 ], categories = [3 , 2 , 1 ], ordered = True )),
1991- (False , Categorical ([np .nan ], categories = [1 , 2 ]),
1992- Categorical ([np .nan , 'a' ], categories = [1 , 'a' ]),
1993- Categorical ([np .nan , 3 , 1 ], categories = [3 , 2 , 1 ], ordered = True )),
1994- ])
1995- def test_mode_category (self , dropna , expected1 , expected2 , expected3 ):
1996- s = Series (Categorical ([1 , 2 , np .nan , np .nan ]))
1997- result = s .mode (dropna )
1998- expected1 = Series (expected1 , dtype = 'category' )
1999- tm .assert_series_equal (result , expected1 )
2000-
2001- s = Series (Categorical ([1 , 'a' , 'a' , np .nan , np .nan ]))
2002- result = s .mode (dropna )
2003- expected2 = Series (expected2 , dtype = 'category' )
2004- tm .assert_series_equal (result , expected2 )
2005-
2006- s = Series (Categorical ([1 , 1 , 2 , 3 , 3 , np .nan , np .nan ],
2007- categories = [3 , 2 , 1 ], ordered = True ))
2008- result = s .mode (dropna )
2009- expected3 = Series (expected3 , dtype = 'category' )
2010- tm .assert_series_equal (result , expected3 )
2011-
2012- @pytest .mark .parametrize ('dropna, expected1, expected2' , [
2013- (True , [2 ** 63 ], [1 , 2 ** 63 ]),
2014- (False , [2 ** 63 ], [1 , 2 ** 63 ])
2015- ])
2016- def test_mode_intoverflow (self , dropna , expected1 , expected2 ):
2017- # Test for uint64 overflow.
2018- s = Series ([1 , 2 ** 63 , 2 ** 63 ], dtype = np .uint64 )
2019- result = s .mode (dropna )
2020- expected1 = Series (expected1 , dtype = np .uint64 )
2021- tm .assert_series_equal (result , expected1 )
2022-
2023- s = Series ([1 , 2 ** 63 ], dtype = np .uint64 )
2024- result = s .mode (dropna )
2025- expected2 = Series (expected2 , dtype = np .uint64 )
2026- tm .assert_series_equal (result , expected2 )
2027-
2028- @pytest .mark .skipif (not compat .PY3 , reason = "only PY3" )
2029- def test_mode_sortwarning (self ):
2030- # Check for the warning that is raised when the mode
2031- # results cannot be sorted
2032-
2033- expected = Series (['foo' , np .nan ])
2034- s = Series ([1 , 'foo' , 'foo' , np .nan , np .nan ])
2035-
2036- with tm .assert_produces_warning (UserWarning , check_stacklevel = False ):
2037- result = s .mode (dropna = False )
2038- result = result .sort_values ().reset_index (drop = True )
2039-
2040- tm .assert_series_equal (result , expected )
2041-
2042-
20431869def assert_check_nselect_boundary (vals , dtype , method ):
20441870 # helper function for 'test_boundary_{dtype}' tests
20451871 s = Series (vals , dtype = dtype )
0 commit comments