@@ -647,83 +647,83 @@ def test_value_counts_bins(self):
647
647
648
648
assert s .nunique () == 0
649
649
650
- def test_value_counts_datetime64 ( self ):
651
- klasses = [ Index , Series ]
652
- for klass in klasses :
653
- # GH 3002, datetime64[ns]
654
- # don't test names though
655
- txt = "\n " .join (['xxyyzz20100101PIE' , 'xxyyzz20100101GUM' ,
656
- 'xxyyzz20100101EGG' , 'xxyyww20090101EGG' ,
657
- 'foofoo20080909PIE' , 'foofoo20080909GUM' ])
658
- f = StringIO (txt )
659
- df = pd .read_fwf (f , widths = [6 , 8 , 3 ],
660
- names = ["person_id" , "dt" , "food" ],
661
- parse_dates = ["dt" ])
662
-
663
- s = klass (df ['dt' ].copy ())
664
- s .name = None
665
-
666
- idx = pd .to_datetime (['2010-01-01 00:00:00Z' ,
667
- '2008-09-09 00:00:00Z' ,
668
- '2009-01-01 00:00:00X ' ])
669
- expected_s = Series ([3 , 2 , 1 ], index = idx )
670
- tm .assert_series_equal (s .value_counts (), expected_s )
671
-
672
- expected = np_array_datetime64_compat (['2010-01-01 00:00:00Z' ,
673
- '2009-01-01 00:00:00Z' ,
674
- '2008-09-09 00:00:00Z' ],
675
- dtype = 'datetime64[ns]' )
676
- if isinstance (s , Index ):
677
- tm .assert_index_equal (s .unique (), DatetimeIndex (expected ))
678
- else :
679
- tm .assert_numpy_array_equal (s .unique (), expected )
680
-
681
- assert s .nunique () == 3
682
-
683
- # with NaT
684
- s = df ['dt' ].copy ()
685
- s = klass ([v for v in s .values ] + [pd .NaT ])
686
-
687
- result = s .value_counts ()
688
- assert result .index .dtype == 'datetime64[ns]'
689
- tm .assert_series_equal (result , expected_s )
690
-
691
- result = s .value_counts (dropna = False )
692
- expected_s [pd .NaT ] = 1
693
- tm .assert_series_equal (result , expected_s )
694
-
695
- unique = s .unique ()
696
- assert unique .dtype == 'datetime64[ns]'
697
-
698
- # numpy_array_equal cannot compare pd.NaT
699
- if isinstance (s , Index ):
700
- exp_idx = DatetimeIndex (expected .tolist () + [pd .NaT ])
701
- tm .assert_index_equal (unique , exp_idx )
702
- else :
703
- tm .assert_numpy_array_equal (unique [:3 ], expected )
704
- assert pd .isna (unique [3 ])
705
-
706
- assert s .nunique () == 3
707
- assert s .nunique (dropna = False ) == 4
708
-
709
- # timedelta64[ns]
710
- td = df .dt - df .dt + timedelta (1 )
711
- td = klass (td , name = 'dt' )
712
-
713
- result = td .value_counts ()
714
- expected_s = Series ([6 ], index = [Timedelta ('1day' )], name = 'dt' )
715
- tm .assert_series_equal (result , expected_s )
716
-
717
- expected = TimedeltaIndex (['1 days' ], name = 'dt' )
718
- if isinstance (td , Index ):
719
- tm .assert_index_equal (td .unique (), expected )
720
- else :
721
- tm .assert_numpy_array_equal (td .unique (), expected .values )
722
-
723
- td2 = timedelta (1 ) + (df .dt - df .dt )
724
- td2 = klass (td2 , name = 'dt' )
725
- result2 = td2 .value_counts ()
726
- tm .assert_series_equal (result2 , expected_s )
650
+ @ pytest . mark . parametrize ( 'klass' , [ Index , Series ])
651
+ def test_value_counts_datetime64 ( self , klass ):
652
+
653
+ # GH 3002, datetime64[ns]
654
+ # don't test names though
655
+ txt = "\n " .join (['xxyyzz20100101PIE' , 'xxyyzz20100101GUM' ,
656
+ 'xxyyzz20100101EGG' , 'xxyyww20090101EGG' ,
657
+ 'foofoo20080909PIE' , 'foofoo20080909GUM' ])
658
+ f = StringIO (txt )
659
+ df = pd .read_fwf (f , widths = [6 , 8 , 3 ],
660
+ names = ["person_id" , "dt" , "food" ],
661
+ parse_dates = ["dt" ])
662
+
663
+ s = klass (df ['dt' ].copy ())
664
+ s .name = None
665
+
666
+ idx = pd .to_datetime (['2010-01-01 00:00:00Z' ,
667
+ '2008-09-09 00:00:00Z' ,
668
+ '2009-01-01 00:00:00Z ' ])
669
+ expected_s = Series ([3 , 2 , 1 ], index = idx )
670
+ tm .assert_series_equal (s .value_counts (), expected_s )
671
+
672
+ expected = np_array_datetime64_compat (['2010-01-01 00:00:00Z' ,
673
+ '2009-01-01 00:00:00Z' ,
674
+ '2008-09-09 00:00:00Z' ],
675
+ dtype = 'datetime64[ns]' )
676
+ if isinstance (s , Index ):
677
+ tm .assert_index_equal (s .unique (), DatetimeIndex (expected ))
678
+ else :
679
+ tm .assert_numpy_array_equal (s .unique (), expected )
680
+
681
+ assert s .nunique () == 3
682
+
683
+ # with NaT
684
+ s = df ['dt' ].copy ()
685
+ s = klass ([v for v in s .values ] + [pd .NaT ])
686
+
687
+ result = s .value_counts ()
688
+ assert result .index .dtype == 'datetime64[ns]'
689
+ tm .assert_series_equal (result , expected_s )
690
+
691
+ result = s .value_counts (dropna = False )
692
+ expected_s [pd .NaT ] = 1
693
+ tm .assert_series_equal (result , expected_s )
694
+
695
+ unique = s .unique ()
696
+ assert unique .dtype == 'datetime64[ns]'
697
+
698
+ # numpy_array_equal cannot compare pd.NaT
699
+ if isinstance (s , Index ):
700
+ exp_idx = DatetimeIndex (expected .tolist () + [pd .NaT ])
701
+ tm .assert_index_equal (unique , exp_idx )
702
+ else :
703
+ tm .assert_numpy_array_equal (unique [:3 ], expected )
704
+ assert pd .isna (unique [3 ])
705
+
706
+ assert s .nunique () == 3
707
+ assert s .nunique (dropna = False ) == 4
708
+
709
+ # timedelta64[ns]
710
+ td = df .dt - df .dt + timedelta (1 )
711
+ td = klass (td , name = 'dt' )
712
+
713
+ result = td .value_counts ()
714
+ expected_s = Series ([6 ], index = [Timedelta ('1day' )], name = 'dt' )
715
+ tm .assert_series_equal (result , expected_s )
716
+
717
+ expected = TimedeltaIndex (['1 days' ], name = 'dt' )
718
+ if isinstance (td , Index ):
719
+ tm .assert_index_equal (td .unique (), expected )
720
+ else :
721
+ tm .assert_numpy_array_equal (td .unique (), expected .values )
722
+
723
+ td2 = timedelta (1 ) + (df .dt - df .dt )
724
+ td2 = klass (td2 , name = 'dt' )
725
+ result2 = td2 .value_counts ()
726
+ tm .assert_series_equal (result2 , expected_s )
727
727
728
728
def test_factorize (self ):
729
729
for orig in self .objs :
0 commit comments