@@ -1866,180 +1866,6 @@ def s_main_dtypes():
1866
1866
return df
1867
1867
1868
1868
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
-
2043
1869
def assert_check_nselect_boundary (vals , dtype , method ):
2044
1870
# helper function for 'test_boundary_{dtype}' tests
2045
1871
s = Series (vals , dtype = dtype )
0 commit comments