17
17
period_range ,
18
18
to_datetime ,
19
19
)
20
- from pandas .tests .frame .common import TestData
21
20
import pandas .util .testing as tm
22
21
from pandas .util .testing import (
23
22
assert_frame_equal ,
@@ -33,12 +32,12 @@ def close_open_fixture(request):
33
32
return request .param
34
33
35
34
36
- class TestDataFrameTimeSeriesMethods ( TestData ) :
37
- def test_diff (self ):
38
- the_diff = self . tsframe .diff (1 )
35
+ class TestDataFrameTimeSeriesMethods :
36
+ def test_diff (self , datetime_frame ):
37
+ the_diff = datetime_frame .diff (1 )
39
38
40
39
assert_series_equal (
41
- the_diff ["A" ], self . tsframe ["A" ] - self . tsframe ["A" ].shift (1 )
40
+ the_diff ["A" ], datetime_frame ["A" ] - datetime_frame ["A" ].shift (1 )
42
41
)
43
42
44
43
# int dtype
@@ -50,7 +49,7 @@ def test_diff(self):
50
49
assert rs .s [1 ] == 1
51
50
52
51
# mixed numeric
53
- tf = self . tsframe .astype ("float32" )
52
+ tf = datetime_frame .astype ("float32" )
54
53
the_diff = tf .diff (1 )
55
54
assert_series_equal (the_diff ["A" ], tf ["A" ] - tf ["A" ].shift (1 ))
56
55
@@ -126,14 +125,14 @@ def test_diff_mixed_dtype(self):
126
125
result = df .diff ()
127
126
assert result [0 ].dtype == np .float64
128
127
129
- def test_diff_neg_n (self ):
130
- rs = self . tsframe .diff (- 1 )
131
- xp = self . tsframe - self . tsframe .shift (- 1 )
128
+ def test_diff_neg_n (self , datetime_frame ):
129
+ rs = datetime_frame .diff (- 1 )
130
+ xp = datetime_frame - datetime_frame .shift (- 1 )
132
131
assert_frame_equal (rs , xp )
133
132
134
- def test_diff_float_n (self ):
135
- rs = self . tsframe .diff (1.0 )
136
- xp = self . tsframe .diff (1 )
133
+ def test_diff_float_n (self , datetime_frame ):
134
+ rs = datetime_frame .diff (1.0 )
135
+ xp = datetime_frame .diff (1 )
137
136
assert_frame_equal (rs , xp )
138
137
139
138
def test_diff_axis (self ):
@@ -142,20 +141,20 @@ def test_diff_axis(self):
142
141
assert_frame_equal (df .diff (axis = 1 ), DataFrame ([[np .nan , 1.0 ], [np .nan , 1.0 ]]))
143
142
assert_frame_equal (df .diff (axis = 0 ), DataFrame ([[np .nan , np .nan ], [2.0 , 2.0 ]]))
144
143
145
- def test_pct_change (self ):
146
- rs = self . tsframe .pct_change (fill_method = None )
147
- assert_frame_equal (rs , self . tsframe / self . tsframe .shift (1 ) - 1 )
144
+ def test_pct_change (self , datetime_frame ):
145
+ rs = datetime_frame .pct_change (fill_method = None )
146
+ assert_frame_equal (rs , datetime_frame / datetime_frame .shift (1 ) - 1 )
148
147
149
- rs = self . tsframe .pct_change (2 )
150
- filled = self . tsframe .fillna (method = "pad" )
148
+ rs = datetime_frame .pct_change (2 )
149
+ filled = datetime_frame .fillna (method = "pad" )
151
150
assert_frame_equal (rs , filled / filled .shift (2 ) - 1 )
152
151
153
- rs = self . tsframe .pct_change (fill_method = "bfill" , limit = 1 )
154
- filled = self . tsframe .fillna (method = "bfill" , limit = 1 )
152
+ rs = datetime_frame .pct_change (fill_method = "bfill" , limit = 1 )
153
+ filled = datetime_frame .fillna (method = "bfill" , limit = 1 )
155
154
assert_frame_equal (rs , filled / filled .shift (1 ) - 1 )
156
155
157
- rs = self . tsframe .pct_change (freq = "5D" )
158
- filled = self . tsframe .fillna (method = "pad" )
156
+ rs = datetime_frame .pct_change (freq = "5D" )
157
+ filled = datetime_frame .fillna (method = "pad" )
159
158
assert_frame_equal (
160
159
rs , (filled / filled .shift (freq = "5D" ) - 1 ).reindex_like (filled )
161
160
)
@@ -181,17 +180,19 @@ def test_pct_change_shift_over_nas(self):
181
180
("14B" , 14 , None , None ),
182
181
],
183
182
)
184
- def test_pct_change_periods_freq (self , freq , periods , fill_method , limit ):
183
+ def test_pct_change_periods_freq (
184
+ self , datetime_frame , freq , periods , fill_method , limit
185
+ ):
185
186
# GH 7292
186
- rs_freq = self . tsframe .pct_change (
187
+ rs_freq = datetime_frame .pct_change (
187
188
freq = freq , fill_method = fill_method , limit = limit
188
189
)
189
- rs_periods = self . tsframe .pct_change (
190
+ rs_periods = datetime_frame .pct_change (
190
191
periods , fill_method = fill_method , limit = limit
191
192
)
192
193
assert_frame_equal (rs_freq , rs_periods )
193
194
194
- empty_ts = DataFrame (index = self . tsframe . index , columns = self . tsframe .columns )
195
+ empty_ts = DataFrame (index = datetime_frame . index , columns = datetime_frame .columns )
195
196
rs_freq = empty_ts .pct_change (freq = freq , fill_method = fill_method , limit = limit )
196
197
rs_periods = empty_ts .pct_change (periods , fill_method = fill_method , limit = limit )
197
198
assert_frame_equal (rs_freq , rs_periods )
@@ -249,39 +250,39 @@ def test_frame_append_datetime64_col_other_units(self):
249
250
250
251
assert (tmp ["dates" ].values == ex_vals ).all ()
251
252
252
- def test_shift (self ):
253
+ def test_shift (self , datetime_frame , int_frame ):
253
254
# naive shift
254
- shiftedFrame = self . tsframe .shift (5 )
255
- tm .assert_index_equal (shiftedFrame .index , self . tsframe .index )
255
+ shiftedFrame = datetime_frame .shift (5 )
256
+ tm .assert_index_equal (shiftedFrame .index , datetime_frame .index )
256
257
257
- shiftedSeries = self . tsframe ["A" ].shift (5 )
258
+ shiftedSeries = datetime_frame ["A" ].shift (5 )
258
259
assert_series_equal (shiftedFrame ["A" ], shiftedSeries )
259
260
260
- shiftedFrame = self . tsframe .shift (- 5 )
261
- tm .assert_index_equal (shiftedFrame .index , self . tsframe .index )
261
+ shiftedFrame = datetime_frame .shift (- 5 )
262
+ tm .assert_index_equal (shiftedFrame .index , datetime_frame .index )
262
263
263
- shiftedSeries = self . tsframe ["A" ].shift (- 5 )
264
+ shiftedSeries = datetime_frame ["A" ].shift (- 5 )
264
265
assert_series_equal (shiftedFrame ["A" ], shiftedSeries )
265
266
266
267
# shift by 0
267
- unshifted = self . tsframe .shift (0 )
268
- assert_frame_equal (unshifted , self . tsframe )
268
+ unshifted = datetime_frame .shift (0 )
269
+ assert_frame_equal (unshifted , datetime_frame )
269
270
270
271
# shift by DateOffset
271
- shiftedFrame = self . tsframe .shift (5 , freq = offsets .BDay ())
272
- assert len (shiftedFrame ) == len (self . tsframe )
272
+ shiftedFrame = datetime_frame .shift (5 , freq = offsets .BDay ())
273
+ assert len (shiftedFrame ) == len (datetime_frame )
273
274
274
- shiftedFrame2 = self . tsframe .shift (5 , freq = "B" )
275
+ shiftedFrame2 = datetime_frame .shift (5 , freq = "B" )
275
276
assert_frame_equal (shiftedFrame , shiftedFrame2 )
276
277
277
- d = self . tsframe .index [0 ]
278
+ d = datetime_frame .index [0 ]
278
279
shifted_d = d + offsets .BDay (5 )
279
280
assert_series_equal (
280
- self . tsframe .xs (d ), shiftedFrame .xs (shifted_d ), check_names = False
281
+ datetime_frame .xs (d ), shiftedFrame .xs (shifted_d ), check_names = False
281
282
)
282
283
283
284
# shift int frame
284
- int_shifted = self . intframe .shift (1 ) # noqa
285
+ int_shifted = int_frame .shift (1 ) # noqa
285
286
286
287
# Shifting with PeriodIndex
287
288
ps = tm .makePeriodFrame ()
@@ -387,7 +388,7 @@ def test_shift_duplicate_columns(self):
387
388
assert_frame_equal (shifted [0 ], shifted [1 ])
388
389
assert_frame_equal (shifted [0 ], shifted [2 ])
389
390
390
- def test_tshift (self ):
391
+ def test_tshift (self , datetime_frame ):
391
392
# PeriodIndex
392
393
ps = tm .makePeriodFrame ()
393
394
shifted = ps .tshift (1 )
@@ -405,36 +406,36 @@ def test_tshift(self):
405
406
ps .tshift (freq = "M" )
406
407
407
408
# DatetimeIndex
408
- shifted = self . tsframe .tshift (1 )
409
+ shifted = datetime_frame .tshift (1 )
409
410
unshifted = shifted .tshift (- 1 )
410
411
411
- assert_frame_equal (self . tsframe , unshifted )
412
+ assert_frame_equal (datetime_frame , unshifted )
412
413
413
- shifted2 = self . tsframe . tshift (freq = self . tsframe .index .freq )
414
+ shifted2 = datetime_frame . tshift (freq = datetime_frame .index .freq )
414
415
assert_frame_equal (shifted , shifted2 )
415
416
416
417
inferred_ts = DataFrame (
417
- self . tsframe .values ,
418
- Index (np .asarray (self . tsframe .index )),
419
- columns = self . tsframe .columns ,
418
+ datetime_frame .values ,
419
+ Index (np .asarray (datetime_frame .index )),
420
+ columns = datetime_frame .columns ,
420
421
)
421
422
shifted = inferred_ts .tshift (1 )
422
423
unshifted = shifted .tshift (- 1 )
423
- assert_frame_equal (shifted , self . tsframe .tshift (1 ))
424
+ assert_frame_equal (shifted , datetime_frame .tshift (1 ))
424
425
assert_frame_equal (unshifted , inferred_ts )
425
426
426
- no_freq = self . tsframe .iloc [[0 , 5 , 7 ], :]
427
+ no_freq = datetime_frame .iloc [[0 , 5 , 7 ], :]
427
428
msg = "Freq was not given and was not set in the index"
428
429
with pytest .raises (ValueError , match = msg ):
429
430
no_freq .tshift ()
430
431
431
- def test_truncate (self ):
432
- ts = self . tsframe [::3 ]
432
+ def test_truncate (self , datetime_frame ):
433
+ ts = datetime_frame [::3 ]
433
434
434
- start , end = self . tsframe . index [3 ], self . tsframe .index [6 ]
435
+ start , end = datetime_frame . index [3 ], datetime_frame .index [6 ]
435
436
436
- start_missing = self . tsframe .index [2 ]
437
- end_missing = self . tsframe .index [7 ]
437
+ start_missing = datetime_frame .index [2 ]
438
+ end_missing = datetime_frame .index [7 ]
438
439
439
440
# neither specified
440
441
truncated = ts .truncate ()
@@ -473,11 +474,11 @@ def test_truncate(self):
473
474
before = ts .index [- 1 ] - ts .index .freq , after = ts .index [0 ] + ts .index .freq
474
475
)
475
476
476
- def test_truncate_copy (self ):
477
- index = self . tsframe .index
478
- truncated = self . tsframe .truncate (index [5 ], index [10 ])
477
+ def test_truncate_copy (self , datetime_frame ):
478
+ index = datetime_frame .index
479
+ truncated = datetime_frame .truncate (index [5 ], index [10 ])
479
480
truncated .values [:] = 5.0
480
- assert not (self . tsframe .values [5 :11 ] == 5 ).any ()
481
+ assert not (datetime_frame .values [5 :11 ] == 5 ).any ()
481
482
482
483
def test_truncate_nonsortedindex (self ):
483
484
# GH 17935
@@ -510,9 +511,9 @@ def test_truncate_nonsortedindex(self):
510
511
with pytest .raises (ValueError , match = msg ):
511
512
df .truncate (before = 2 , after = 20 , axis = 1 )
512
513
513
- def test_asfreq (self ):
514
- offset_monthly = self . tsframe .asfreq (offsets .BMonthEnd ())
515
- rule_monthly = self . tsframe .asfreq ("BM" )
514
+ def test_asfreq (self , datetime_frame ):
515
+ offset_monthly = datetime_frame .asfreq (offsets .BMonthEnd ())
516
+ rule_monthly = datetime_frame .asfreq ("BM" )
516
517
517
518
tm .assert_almost_equal (offset_monthly ["A" ], rule_monthly ["A" ])
518
519
@@ -523,7 +524,7 @@ def test_asfreq(self):
523
524
filled_dep = rule_monthly .asfreq ("B" , method = "pad" ) # noqa
524
525
525
526
# test does not blow up on length-0 DataFrame
526
- zero_length = self . tsframe .reindex ([])
527
+ zero_length = datetime_frame .reindex ([])
527
528
result = zero_length .asfreq ("BM" )
528
529
assert result is not zero_length
529
530
@@ -569,13 +570,15 @@ def test_asfreq_fillvalue(self):
569
570
({"A" : [1 , np .nan , 3 ]}, [1 , 2 , 2 ], 1 , 2 ),
570
571
],
571
572
)
572
- def test_first_last_valid (self , data , idx , expected_first , expected_last ):
573
- N = len (self .frame .index )
573
+ def test_first_last_valid (
574
+ self , float_frame , data , idx , expected_first , expected_last
575
+ ):
576
+ N = len (float_frame .index )
574
577
mat = np .random .randn (N )
575
578
mat [:5 ] = np .nan
576
579
mat [- 5 :] = np .nan
577
580
578
- frame = DataFrame ({"foo" : mat }, index = self . frame .index )
581
+ frame = DataFrame ({"foo" : mat }, index = float_frame .index )
579
582
index = frame .first_valid_index ()
580
583
581
584
assert index == frame .index [5 ]
0 commit comments