Skip to content

Commit a1da79c

Browse files
committed
Add fixtures
1 parent b4d4e38 commit a1da79c

File tree

2 files changed

+164
-71
lines changed

2 files changed

+164
-71
lines changed

pandas/tests/frame/conftest.py

+106
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
import pytest
2+
3+
import numpy as np
4+
5+
from pandas import compat
6+
import pandas.util.testing as tm
7+
from pandas import DataFrame
8+
9+
@pytest.fixture
10+
def frame():
11+
return DataFrame(tm.getSeriesData())
12+
13+
@pytest.fixture
14+
def frame2():
15+
return DataFrame(tm.getSeriesData(), columns=['D', 'C', 'B', 'A'])
16+
17+
@pytest.fixture
18+
def intframe():
19+
df = DataFrame({k: v.astype(int)
20+
for k, v in compat.iteritems(tm.getSeriesData())})
21+
# force these all to int64 to avoid platform testing issues
22+
return DataFrame({c: s for c, s in compat.iteritems(df)}, dtype=np.int64)
23+
24+
@pytest.fixture
25+
def tsframe():
26+
return DataFrame(tm.getTimeSeriesData())
27+
28+
@pytest.fixture
29+
def mixed_frame():
30+
df = DataFrame(tm.getSeriesData())
31+
df['foo'] = 'bar'
32+
return df
33+
34+
@pytest.fixture
35+
def mixed_float():
36+
df = DataFrame(tm.getSeriesData())
37+
df.A = df.A.astype('float16')
38+
df.B = df.B.astype('float32')
39+
df.C = df.C.astype('float64')
40+
return df
41+
42+
@pytest.fixture
43+
def mixed_float2():
44+
df = DataFrame(tm.getSeriesData())
45+
df.D = df.D.astype('float16')
46+
df.C = df.C.astype('float32')
47+
df.B = df.B.astype('float64')
48+
return df
49+
50+
@pytest.fixture
51+
def mixed_int():
52+
df = DataFrame({k: v.astype(int)
53+
for k, v in compat.iteritems(tm.getSeriesData())})
54+
df.A = df.A.astype('uint8')
55+
df.B = df.B.astype('int32')
56+
df.C = df.C.astype('int64')
57+
df.D = np.ones(len(df.D), dtype='uint64')
58+
return df
59+
60+
@pytest.fixture
61+
def all_mixed():
62+
return DataFrame({'a': 1., 'b': 2, 'c': 'foo',
63+
'float32': np.array([1.] * 10, dtype='float32'),
64+
'int32': np.array([1] * 10, dtype='int32')},
65+
index=np.arange(10))
66+
67+
@pytest.fixture
68+
def tzframe():
69+
df = DataFrame({'A': pd.date_range('20130101', periods=3),
70+
'B': pd.date_range('20130101', periods=3,
71+
tz='US/Eastern'),
72+
'C': pd.date_range('20130101', periods=3,
73+
tz='CET')})
74+
df.iloc[1, 1] = pd.NaT
75+
df.iloc[1, 2] = pd.NaT
76+
return df
77+
78+
@pytest.fixture
79+
def empty():
80+
return DataFrame({})
81+
82+
@pytest.fixture
83+
def ts1():
84+
return tm.makeTimeSeries(nper=30)
85+
86+
@pytest.fixture
87+
def ts2():
88+
return tm.makeTimeSeries(nper=30)[5:]
89+
90+
@pytest.fixture
91+
def simple():
92+
arr = np.array([[1., 2., 3.],
93+
[4., 5., 6.],
94+
[7., 8., 9.]])
95+
96+
return DataFrame(arr, columns=['one', 'two', 'three'],
97+
index=['a', 'b', 'c'])
98+
99+
@pytest.fixture
100+
def frame_of_index_cols():
101+
df = DataFrame({'A': ['foo', 'foo', 'foo', 'bar', 'bar'],
102+
'B': ['one', 'two', 'three', 'one', 'two'],
103+
'C': ['a', 'b', 'c', 'd', 'e'],
104+
'D': np.random.randn(5),
105+
'E': np.random.randn(5)})
106+
return df

pandas/tests/frame/test_alter_axes.py

+58-71
Original file line numberDiff line numberDiff line change
@@ -23,29 +23,19 @@
2323
from pandas.tests.frame.common import TestData
2424

2525

26-
@pytest.fixture
27-
def frame_of_index_cols():
28-
df = DataFrame({'A': ['foo', 'foo', 'foo', 'bar', 'bar'],
29-
'B': ['one', 'two', 'three', 'one', 'two'],
30-
'C': ['a', 'b', 'c', 'd', 'e'],
31-
'D': np.random.randn(5),
32-
'E': np.random.randn(5)})
33-
return df
34-
35-
3626
class TestDataFrameAlterAxes(TestData):
3727

38-
def test_set_index_directly(self):
39-
df = self.mixed_frame.copy()
28+
def test_set_index_directly(self, mixed_frame):
29+
df = mixed_frame
4030
idx = Index(np.arange(len(df))[::-1])
4131

4232
df.index = idx
4333
tm.assert_index_equal(df.index, idx)
4434
with tm.assert_raises_regex(ValueError, 'Length mismatch'):
4535
df.index = idx[::2]
4636

47-
def test_set_index(self):
48-
df = self.mixed_frame.copy()
37+
def test_set_index(self, mixed_frame):
38+
df = mixed_frame
4939
idx = Index(np.arange(len(df))[::-1])
5040

5141
df = df.set_index(idx)
@@ -408,11 +398,11 @@ def test_set_index_empty_column(self):
408398
names=['a', 'x'])
409399
tm.assert_frame_equal(result, expected)
410400

411-
def test_set_columns(self):
412-
cols = Index(np.arange(len(self.mixed_frame.columns)))
413-
self.mixed_frame.columns = cols
401+
def test_set_columns(self, mixed_frame):
402+
cols = Index(np.arange(len(mixed_frame.columns)))
403+
mixed_frame.columns = cols
414404
with tm.assert_raises_regex(ValueError, 'Length mismatch'):
415-
self.mixed_frame.columns = cols[::2]
405+
mixed_frame.columns = cols[::2]
416406

417407
def test_dti_set_index_reindex(self):
418408
# GH 6631
@@ -440,20 +430,20 @@ def test_dti_set_index_reindex(self):
440430

441431
# Renaming
442432

443-
def test_rename(self):
433+
def test_rename(self, frame):
444434
mapping = {
445435
'A': 'a',
446436
'B': 'b',
447437
'C': 'c',
448438
'D': 'd'
449439
}
450440

451-
renamed = self.frame.rename(columns=mapping)
452-
renamed2 = self.frame.rename(columns=str.lower)
441+
renamed = frame.rename(columns=mapping)
442+
renamed2 = frame.rename(columns=str.lower)
453443

454444
tm.assert_frame_equal(renamed, renamed2)
455445
tm.assert_frame_equal(renamed2.rename(columns=str.upper),
456-
self.frame, check_names=False)
446+
frame, check_names=False)
457447

458448
# index
459449
data = {
@@ -469,14 +459,14 @@ def test_rename(self):
469459
tm.assert_index_equal(renamed.index, Index(['BAR', 'FOO']))
470460

471461
# have to pass something
472-
pytest.raises(TypeError, self.frame.rename)
462+
pytest.raises(TypeError, frame.rename)
473463

474464
# partial columns
475-
renamed = self.frame.rename(columns={'C': 'foo', 'D': 'bar'})
465+
renamed = frame.rename(columns={'C': 'foo', 'D': 'bar'})
476466
tm.assert_index_equal(renamed.columns, Index(['A', 'B', 'foo', 'bar']))
477467

478468
# other axis
479-
renamed = self.frame.T.rename(index={'C': 'foo', 'D': 'bar'})
469+
renamed = frame.T.rename(index={'C': 'foo', 'D': 'bar'})
480470
tm.assert_index_equal(renamed.index, Index(['A', 'B', 'foo', 'bar']))
481471

482472
# index with name
@@ -487,9 +477,8 @@ def test_rename(self):
487477
Index(['bar', 'foo'], name='name'))
488478
assert renamed.index.name == renamer.index.name
489479

490-
def test_rename_axis_inplace(self):
480+
def test_rename_axis_inplace(self, frame):
491481
# GH 15704
492-
frame = self.frame.copy()
493482
expected = frame.rename_axis('foo')
494483
result = frame.copy()
495484
no_return = result.rename_axis('foo', inplace=True)
@@ -598,18 +587,18 @@ def test_rename_multiindex(self):
598587
level=0)
599588
tm.assert_index_equal(renamed.index, new_index)
600589

601-
def test_rename_nocopy(self):
602-
renamed = self.frame.rename(columns={'C': 'foo'}, copy=False)
590+
def test_rename_nocopy(self, frame):
591+
renamed = frame.rename(columns={'C': 'foo'}, copy=False)
603592
renamed['foo'] = 1.
604-
assert (self.frame['C'] == 1.).all()
593+
assert (frame['C'] == 1.).all()
605594

606-
def test_rename_inplace(self):
607-
self.frame.rename(columns={'C': 'foo'})
608-
assert 'C' in self.frame
609-
assert 'foo' not in self.frame
595+
def test_rename_inplace(self, frame):
596+
frame.rename(columns={'C': 'foo'})
597+
assert 'C' in frame
598+
assert 'foo' not in frame
610599

611-
c_id = id(self.frame['C'])
612-
frame = self.frame.copy()
600+
c_id = id(frame['C'])
601+
frame = frame.copy()
613602
frame.rename(columns={'C': 'foo'}, inplace=True)
614603

615604
assert 'C' not in frame
@@ -682,8 +671,8 @@ def test_reorder_levels(self):
682671
result = df.reorder_levels(['L0', 'L0', 'L0'])
683672
tm.assert_frame_equal(result, expected)
684673

685-
def test_reset_index(self):
686-
stacked = self.frame.stack()[::2]
674+
def test_reset_index(self, frame):
675+
stacked = frame.stack()[::2]
687676
stacked = DataFrame({'foo': stacked, 'bar': stacked})
688677

689678
names = ['first', 'second']
@@ -703,55 +692,55 @@ def test_reset_index(self):
703692
check_names=False)
704693

705694
# default name assigned
706-
rdf = self.frame.reset_index()
707-
exp = Series(self.frame.index.values, name='index')
695+
rdf = frame.reset_index()
696+
exp = Series(frame.index.values, name='index')
708697
tm.assert_series_equal(rdf['index'], exp)
709698

710699
# default name assigned, corner case
711-
df = self.frame.copy()
700+
df = frame.copy()
712701
df['index'] = 'foo'
713702
rdf = df.reset_index()
714-
exp = Series(self.frame.index.values, name='level_0')
703+
exp = Series(frame.index.values, name='level_0')
715704
tm.assert_series_equal(rdf['level_0'], exp)
716705

717706
# but this is ok
718-
self.frame.index.name = 'index'
719-
deleveled = self.frame.reset_index()
720-
tm.assert_series_equal(deleveled['index'], Series(self.frame.index))
707+
frame.index.name = 'index'
708+
deleveled = frame.reset_index()
709+
tm.assert_series_equal(deleveled['index'], Series(frame.index))
721710
tm.assert_index_equal(deleveled.index,
722711
Index(np.arange(len(deleveled))))
723712

724713
# preserve column names
725-
self.frame.columns.name = 'columns'
726-
resetted = self.frame.reset_index()
714+
frame.columns.name = 'columns'
715+
resetted = frame.reset_index()
727716
assert resetted.columns.name == 'columns'
728717

729718
# only remove certain columns
730-
frame = self.frame.reset_index().set_index(['index', 'A', 'B'])
731-
rs = frame.reset_index(['A', 'B'])
719+
df = frame.reset_index().set_index(['index', 'A', 'B'])
720+
rs = df.reset_index(['A', 'B'])
732721

733722
# TODO should reset_index check_names ?
734-
tm.assert_frame_equal(rs, self.frame, check_names=False)
723+
tm.assert_frame_equal(rs, frame, check_names=False)
735724

736-
rs = frame.reset_index(['index', 'A', 'B'])
737-
tm.assert_frame_equal(rs, self.frame.reset_index(), check_names=False)
725+
rs = df.reset_index(['index', 'A', 'B'])
726+
tm.assert_frame_equal(rs, frame.reset_index(), check_names=False)
738727

739-
rs = frame.reset_index(['index', 'A', 'B'])
740-
tm.assert_frame_equal(rs, self.frame.reset_index(), check_names=False)
728+
rs = df.reset_index(['index', 'A', 'B'])
729+
tm.assert_frame_equal(rs, frame.reset_index(), check_names=False)
741730

742-
rs = frame.reset_index('A')
743-
xp = self.frame.reset_index().set_index(['index', 'B'])
731+
rs = df.reset_index('A')
732+
xp = frame.reset_index().set_index(['index', 'B'])
744733
tm.assert_frame_equal(rs, xp, check_names=False)
745734

746735
# test resetting in place
747-
df = self.frame.copy()
748-
resetted = self.frame.reset_index()
736+
df = frame.copy()
737+
resetted = frame.reset_index()
749738
df.reset_index(inplace=True)
750739
tm.assert_frame_equal(df, resetted, check_names=False)
751740

752-
frame = self.frame.reset_index().set_index(['index', 'A', 'B'])
753-
rs = frame.reset_index('A', drop=True)
754-
xp = self.frame.copy()
741+
df = frame.reset_index().set_index(['index', 'A', 'B'])
742+
rs = df.reset_index('A', drop=True)
743+
xp = frame.copy()
755744
del xp['A']
756745
xp = xp.set_index(['B'], append=True)
757746
tm.assert_frame_equal(rs, xp, check_names=False)
@@ -929,8 +918,8 @@ def test_set_index_names(self):
929918
# Check equality
930919
tm.assert_index_equal(df.set_index([df.index, idx2]).index, mi2)
931920

932-
def test_rename_objects(self):
933-
renamed = self.mixed_frame.rename(columns=str.upper)
921+
def test_rename_objects(self, mixed_frame):
922+
renamed = mixed_frame.rename(columns=str.upper)
934923

935924
assert 'FOO' in renamed
936925
assert 'foo' not in renamed
@@ -1053,15 +1042,13 @@ def test_rename_positional(self):
10531042
assert 'rename' in message
10541043
assert 'Use named arguments' in message
10551044

1056-
def test_assign_columns(self):
1057-
self.frame['hi'] = 'there'
1045+
def test_assign_columns(self, frame):
1046+
frame['hi'] = 'there'
10581047

1059-
frame = self.frame.copy()
1060-
frame.columns = ['foo', 'bar', 'baz', 'quux', 'foo2']
1061-
tm.assert_series_equal(self.frame['C'], frame['baz'],
1062-
check_names=False)
1063-
tm.assert_series_equal(self.frame['hi'], frame['foo2'],
1064-
check_names=False)
1048+
df = frame.copy()
1049+
df.columns = ['foo', 'bar', 'baz', 'quux', 'foo2']
1050+
tm.assert_series_equal(frame['C'], df['baz'], check_names=False)
1051+
tm.assert_series_equal(frame['hi'], df['foo2'], check_names=False)
10651052

10661053
def test_set_index_preserve_categorical_dtype(self):
10671054
# GH13743, GH13854

0 commit comments

Comments
 (0)