示例#1
0
def test_isnull():
    assert not isnull(1.)
    assert isnull(None)
    assert isnull(np.NaN)
    assert not isnull(np.inf)
    assert not isnull(-np.inf)

    # series
    for s in [tm.makeFloatSeries(),tm.makeStringSeries(),
              tm.makeObjectSeries(),tm.makeTimeSeries(),tm.makePeriodSeries()]:
        assert(isinstance(isnull(s), Series))

    # frame
    for df in [tm.makeTimeDataFrame(),tm.makePeriodFrame(),tm.makeMixedDataFrame()]:
        result = isnull(df)
        expected = df.apply(isnull)
        tm.assert_frame_equal(result, expected)

    # panel
    for p in [ tm.makePanel(), tm.makePeriodPanel(), tm.add_nans(tm.makePanel()) ]:
        result = isnull(p)
        expected = p.apply(isnull)
        tm.assert_panel_equal(result, expected)

    # panel 4d
    for p in [ tm.makePanel4D(), tm.add_nans_panel4d(tm.makePanel4D()) ]:
        result = isnull(p)
        expected = p.apply(isnull)
        tm.assert_panel4d_equal(result, expected)
示例#2
0
    def test_squeeze(self):
        # noop
        for s in [
                tm.makeFloatSeries(),
                tm.makeStringSeries(),
                tm.makeObjectSeries()
        ]:
            tm.assert_series_equal(s.squeeze(), s)
        for df in [tm.makeTimeDataFrame()]:
            tm.assert_frame_equal(df.squeeze(), df)
        with catch_warnings(record=True):
            for p in [tm.makePanel()]:
                tm.assert_panel_equal(p.squeeze(), p)
        with catch_warnings(record=True):
            for p4d in [tm.makePanel4D()]:
                tm.assert_panel4d_equal(p4d.squeeze(), p4d)

        # squeezing
        df = tm.makeTimeDataFrame().reindex(columns=['A'])
        tm.assert_series_equal(df.squeeze(), df['A'])

        with catch_warnings(record=True):
            p = tm.makePanel().reindex(items=['ItemA'])
            tm.assert_frame_equal(p.squeeze(), p['ItemA'])

            p = tm.makePanel().reindex(items=['ItemA'], minor_axis=['A'])
            tm.assert_series_equal(p.squeeze(), p.loc['ItemA', :, 'A'])

        with catch_warnings(record=True):
            p4d = tm.makePanel4D().reindex(labels=['label1'])
            tm.assert_panel_equal(p4d.squeeze(), p4d['label1'])

        with catch_warnings(record=True):
            p4d = tm.makePanel4D().reindex(labels=['label1'], items=['ItemA'])
            tm.assert_frame_equal(p4d.squeeze(), p4d.loc['label1', 'ItemA'])

        # don't fail with 0 length dimensions GH11229 & GH8999
        empty_series = Series([], name='five')
        empty_frame = DataFrame([empty_series])
        with catch_warnings(record=True):
            empty_panel = Panel({'six': empty_frame})

        [
            tm.assert_series_equal(empty_series, higher_dim.squeeze())
            for higher_dim in [empty_series, empty_frame, empty_panel]
        ]

        # axis argument
        df = tm.makeTimeDataFrame(nper=1).iloc[:, :1]
        assert df.shape == (1, 1)
        tm.assert_series_equal(df.squeeze(axis=0), df.iloc[0])
        tm.assert_series_equal(df.squeeze(axis='index'), df.iloc[0])
        tm.assert_series_equal(df.squeeze(axis=1), df.iloc[:, 0])
        tm.assert_series_equal(df.squeeze(axis='columns'), df.iloc[:, 0])
        assert df.squeeze() == df.iloc[0, 0]
        pytest.raises(ValueError, df.squeeze, axis=2)
        pytest.raises(ValueError, df.squeeze, axis='x')

        df = tm.makeTimeDataFrame(3)
        tm.assert_frame_equal(df.squeeze(axis=0), df)
示例#3
0
    def test_comparisons(self):
        with catch_warnings(record=True):
            p1 = tm.makePanel4D()
            p2 = tm.makePanel4D()

            tp = p1.reindex(labels=p1.labels.tolist() + ['foo'])
            p = p1[p1.labels[0]]

            def test_comp(func):
                result = func(p1, p2)
                tm.assert_numpy_array_equal(result.values,
                                            func(p1.values, p2.values))

                # versus non-indexed same objs
                pytest.raises(Exception, func, p1, tp)

                # versus different objs
                pytest.raises(Exception, func, p1, p)

                result3 = func(self.panel4d, 0)
                tm.assert_numpy_array_equal(result3.values,
                                            func(self.panel4d.values, 0))

            with np.errstate(invalid='ignore'):
                test_comp(operator.eq)
                test_comp(operator.ne)
                test_comp(operator.lt)
                test_comp(operator.gt)
                test_comp(operator.ge)
                test_comp(operator.le)
示例#4
0
    def test_isnull(self):
        self.assertFalse(isnull(1.))
        self.assertTrue(isnull(None))
        self.assertTrue(isnull(np.NaN))
        self.assertTrue(float('nan'))
        self.assertFalse(isnull(np.inf))
        self.assertFalse(isnull(-np.inf))

        # series
        for s in [tm.makeFloatSeries(), tm.makeStringSeries(),
                  tm.makeObjectSeries(), tm.makeTimeSeries(),
                  tm.makePeriodSeries()]:
            self.assertIsInstance(isnull(s), Series)

        # frame
        for df in [tm.makeTimeDataFrame(), tm.makePeriodFrame(),
                   tm.makeMixedDataFrame()]:
            result = isnull(df)
            expected = df.apply(isnull)
            tm.assert_frame_equal(result, expected)

        # panel
        with catch_warnings(record=True):
            for p in [tm.makePanel(), tm.makePeriodPanel(),
                      tm.add_nans(tm.makePanel())]:
                result = isnull(p)
                expected = p.apply(isnull)
                tm.assert_panel_equal(result, expected)

        # panel 4d
        with catch_warnings(record=True):
            for p in [tm.makePanel4D(), tm.add_nans_panel4d(tm.makePanel4D())]:
                result = isnull(p)
                expected = p.apply(isnull)
                tm.assert_panel4d_equal(result, expected)
示例#5
0
    def test_comparisons(self):
        with catch_warnings(record=True):
            p1 = tm.makePanel4D()
            p2 = tm.makePanel4D()

            tp = p1.reindex(labels=p1.labels.tolist() + ['foo'])
            p = p1[p1.labels[0]]

            def test_comp(func):
                result = func(p1, p2)
                tm.assert_numpy_array_equal(result.values,
                                            func(p1.values, p2.values))

                # versus non-indexed same objs
                pytest.raises(Exception, func, p1, tp)

                # versus different objs
                pytest.raises(Exception, func, p1, p)

                result3 = func(self.panel4d, 0)
                tm.assert_numpy_array_equal(result3.values,
                                            func(self.panel4d.values, 0))

            with np.errstate(invalid='ignore'):
                test_comp(operator.eq)
                test_comp(operator.ne)
                test_comp(operator.lt)
                test_comp(operator.gt)
                test_comp(operator.ge)
                test_comp(operator.le)
示例#6
0
    def test_squeeze(self):
        # noop
        for s in [ tm.makeFloatSeries(), tm.makeStringSeries(), tm.makeObjectSeries() ]:
            tm.assert_series_equal(s.squeeze(),s)
        for df in [ tm.makeTimeDataFrame() ]:
            tm.assert_frame_equal(df.squeeze(),df)
        for p in [ tm.makePanel() ]:
            tm.assert_panel_equal(p.squeeze(),p)
        for p4d in [ tm.makePanel4D() ]:
            tm.assert_panel4d_equal(p4d.squeeze(),p4d)

        # squeezing
        df = tm.makeTimeDataFrame().reindex(columns=['A'])
        tm.assert_series_equal(df.squeeze(),df['A'])

        p = tm.makePanel().reindex(items=['ItemA'])
        tm.assert_frame_equal(p.squeeze(),p['ItemA'])

        p = tm.makePanel().reindex(items=['ItemA'],minor_axis=['A'])
        tm.assert_series_equal(p.squeeze(),p.ix['ItemA',:,'A'])

        p4d = tm.makePanel4D().reindex(labels=['label1'])
        tm.assert_panel_equal(p4d.squeeze(),p4d['label1'])

        p4d = tm.makePanel4D().reindex(labels=['label1'],items=['ItemA'])
        tm.assert_frame_equal(p4d.squeeze(),p4d.ix['label1','ItemA'])
示例#7
0
    def test_comparisons(self):
        with tm.assert_produces_warning(FutureWarning, check_stacklevel=False):
            p1 = tm.makePanel4D()
            p2 = tm.makePanel4D()

            tp = p1.reindex(labels=p1.labels.tolist() + ['foo'])
            p = p1[p1.labels[0]]

            def test_comp(func):
                result = func(p1, p2)
                self.assert_numpy_array_equal(result.values,
                                              func(p1.values, p2.values))

                # versus non-indexed same objs
                self.assertRaises(Exception, func, p1, tp)

                # versus different objs
                self.assertRaises(Exception, func, p1, p)

                result3 = func(self.panel4d, 0)
                self.assert_numpy_array_equal(result3.values,
                                              func(self.panel4d.values, 0))

            with np.errstate(invalid='ignore'):
                test_comp(operator.eq)
                test_comp(operator.ne)
                test_comp(operator.lt)
                test_comp(operator.gt)
                test_comp(operator.ge)
                test_comp(operator.le)
示例#8
0
    def test_isnull(self):
        self.assertFalse(isnull(1.))
        self.assertTrue(isnull(None))
        self.assertTrue(isnull(np.NaN))
        self.assertTrue(float('nan'))
        self.assertFalse(isnull(np.inf))
        self.assertFalse(isnull(-np.inf))

        # series
        for s in [tm.makeFloatSeries(), tm.makeStringSeries(),
                  tm.makeObjectSeries(), tm.makeTimeSeries(),
                  tm.makePeriodSeries()]:
            assert isinstance(isnull(s), Series)

        # frame
        for df in [tm.makeTimeDataFrame(), tm.makePeriodFrame(),
                   tm.makeMixedDataFrame()]:
            result = isnull(df)
            expected = df.apply(isnull)
            tm.assert_frame_equal(result, expected)

        # panel
        with catch_warnings(record=True):
            for p in [tm.makePanel(), tm.makePeriodPanel(),
                      tm.add_nans(tm.makePanel())]:
                result = isnull(p)
                expected = p.apply(isnull)
                tm.assert_panel_equal(result, expected)

        # panel 4d
        with catch_warnings(record=True):
            for p in [tm.makePanel4D(), tm.add_nans_panel4d(tm.makePanel4D())]:
                result = isnull(p)
                expected = p.apply(isnull)
                tm.assert_panel4d_equal(result, expected)
示例#9
0
def test_isnull():
    assert not isnull(1.)
    assert isnull(None)
    assert isnull(np.NaN)
    assert not isnull(np.inf)
    assert not isnull(-np.inf)

    # series
    for s in [tm.makeFloatSeries(), tm.makeStringSeries(),
              tm.makeObjectSeries(), tm.makeTimeSeries(),
              tm.makePeriodSeries()]:
        assert (isinstance(isnull(s), Series))

    # frame
    for df in [tm.makeTimeDataFrame(), tm.makePeriodFrame(),
               tm.makeMixedDataFrame()]:
        result = isnull(df)
        expected = df.apply(isnull)
        tm.assert_frame_equal(result, expected)

    # panel
    for p in [tm.makePanel(), tm.makePeriodPanel(), tm.add_nans(tm.makePanel())
              ]:
        result = isnull(p)
        expected = p.apply(isnull)
        tm.assert_panel_equal(result, expected)

    # panel 4d
    for p in [tm.makePanel4D(), tm.add_nans_panel4d(tm.makePanel4D())]:
        result = isnull(p)
        expected = p.apply(isnull)
        tm.assert_panel4d_equal(result, expected)
示例#10
0
    def test_comparisons(self):
        p1 = tm.makePanel4D()
        p2 = tm.makePanel4D()

        tp = p1.reindex(labels=p1.labels.tolist() + ['foo'])
        p = p1[p1.labels[0]]

        def test_comp(func):
            result = func(p1, p2)
            self.assert_numpy_array_equal(result.values,
                                          func(p1.values, p2.values))

            # versus non-indexed same objs
            self.assertRaises(Exception, func, p1, tp)

            # versus different objs
            self.assertRaises(Exception, func, p1, p)

            result3 = func(self.panel4d, 0)
            self.assert_numpy_array_equal(result3.values,
                                          func(self.panel4d.values, 0))

        test_comp(operator.eq)
        test_comp(operator.ne)
        test_comp(operator.lt)
        test_comp(operator.gt)
        test_comp(operator.ge)
        test_comp(operator.le)
示例#11
0
    def test_squeeze(self):
        # noop
        for s in [
                tm.makeFloatSeries(),
                tm.makeStringSeries(),
                tm.makeObjectSeries()
        ]:
            tm.assert_series_equal(s.squeeze(), s)
        for df in [tm.makeTimeDataFrame()]:
            tm.assert_frame_equal(df.squeeze(), df)
        for p in [tm.makePanel()]:
            tm.assert_panel_equal(p.squeeze(), p)
        for p4d in [tm.makePanel4D()]:
            tm.assert_panel4d_equal(p4d.squeeze(), p4d)

        # squeezing
        df = tm.makeTimeDataFrame().reindex(columns=['A'])
        tm.assert_series_equal(df.squeeze(), df['A'])

        p = tm.makePanel().reindex(items=['ItemA'])
        tm.assert_frame_equal(p.squeeze(), p['ItemA'])

        p = tm.makePanel().reindex(items=['ItemA'], minor_axis=['A'])
        tm.assert_series_equal(p.squeeze(), p.ix['ItemA', :, 'A'])

        p4d = tm.makePanel4D().reindex(labels=['label1'])
        tm.assert_panel_equal(p4d.squeeze(), p4d['label1'])

        p4d = tm.makePanel4D().reindex(labels=['label1'], items=['ItemA'])
        tm.assert_frame_equal(p4d.squeeze(), p4d.ix['label1', 'ItemA'])
示例#12
0
    def test_comparisons(self):
        p1 = tm.makePanel4D()
        p2 = tm.makePanel4D()

        tp = p1.reindex(labels=p1.labels + ['foo'])
        p = p1[p1.labels[0]]

        def test_comp(func):
            result = func(p1, p2)
            self.assert_(np.array_equal(result.values,
                                        func(p1.values, p2.values)))

            # versus non-indexed same objs
            self.assertRaises(Exception, func, p1, tp)

            # versus different objs
            self.assertRaises(Exception, func, p1, p)

            result3 = func(self.panel4d, 0)
            self.assert_(np.array_equal(result3.values,
                                        func(self.panel4d.values, 0)))

        test_comp(operator.eq)
        test_comp(operator.ne)
        test_comp(operator.lt)
        test_comp(operator.gt)
        test_comp(operator.ge)
        test_comp(operator.le)
示例#13
0
    def test_squeeze(self):
        # noop
        for s in [tm.makeFloatSeries(), tm.makeStringSeries(),
                  tm.makeObjectSeries()]:
            tm.assert_series_equal(s.squeeze(), s)
        for df in [tm.makeTimeDataFrame()]:
            tm.assert_frame_equal(df.squeeze(), df)
        with catch_warnings(record=True):
            for p in [tm.makePanel()]:
                tm.assert_panel_equal(p.squeeze(), p)
        with catch_warnings(record=True):
            for p4d in [tm.makePanel4D()]:
                tm.assert_panel4d_equal(p4d.squeeze(), p4d)

        # squeezing
        df = tm.makeTimeDataFrame().reindex(columns=['A'])
        tm.assert_series_equal(df.squeeze(), df['A'])

        with catch_warnings(record=True):
            p = tm.makePanel().reindex(items=['ItemA'])
            tm.assert_frame_equal(p.squeeze(), p['ItemA'])

            p = tm.makePanel().reindex(items=['ItemA'], minor_axis=['A'])
            tm.assert_series_equal(p.squeeze(), p.loc['ItemA', :, 'A'])

        with catch_warnings(record=True):
            p4d = tm.makePanel4D().reindex(labels=['label1'])
            tm.assert_panel_equal(p4d.squeeze(), p4d['label1'])

        with catch_warnings(record=True):
            p4d = tm.makePanel4D().reindex(labels=['label1'], items=['ItemA'])
            tm.assert_frame_equal(p4d.squeeze(), p4d.loc['label1', 'ItemA'])

        # don't fail with 0 length dimensions GH11229 & GH8999
        empty_series = Series([], name='five')
        empty_frame = DataFrame([empty_series])
        with catch_warnings(record=True):
            empty_panel = Panel({'six': empty_frame})

        [tm.assert_series_equal(empty_series, higher_dim.squeeze())
         for higher_dim in [empty_series, empty_frame, empty_panel]]

        # axis argument
        df = tm.makeTimeDataFrame(nper=1).iloc[:, :1]
        assert df.shape == (1, 1)
        tm.assert_series_equal(df.squeeze(axis=0), df.iloc[0])
        tm.assert_series_equal(df.squeeze(axis='index'), df.iloc[0])
        tm.assert_series_equal(df.squeeze(axis=1), df.iloc[:, 0])
        tm.assert_series_equal(df.squeeze(axis='columns'), df.iloc[:, 0])
        assert df.squeeze() == df.iloc[0, 0]
        pytest.raises(ValueError, df.squeeze, axis=2)
        pytest.raises(ValueError, df.squeeze, axis='x')

        df = tm.makeTimeDataFrame(3)
        tm.assert_frame_equal(df.squeeze(axis=0), df)
示例#14
0
    def test_ndim_indexables(self):
        """ test using ndim tables in new ways"""

        p4d = tm.makePanel4D()

        # append then change (will take existing schema)
        self.store.remove('p4d')
        self.store.append('p4d', p4d.ix[:,:,:10,:], axes=['items','major_axis','minor_axis'])
        self.store.append('p4d', p4d.ix[:,:,10:,:], axes=['labels','items','major_axis'])

        # pass incorrect number of axes
        self.store.remove('p4d')
        self.assertRaises(Exception, self.store.append, 'p4d', p4d.ix[:,:,:10,:], axes=['major_axis','minor_axis'])

        # different than default indexables
        self.store.remove('p4d')
        self.store.append('p4d', p4d.ix[:,:,:10,:], axes=[0,2,3])
        self.store.append('p4d', p4d.ix[:,:,10:,:], axes=[0,2,3])
        tm.assert_panel4d_equal(self.store['p4d'], p4d)

        # partial selection
        result = self.store.select('p4d',['labels=l1'])
        expected = p4d.reindex(labels = ['l1'])
        tm.assert_panel4d_equal(result, expected)

        # partial selection2
        result = self.store.select('p4d',[Term('labels=l1'), Term('items=ItemA'), Term('minor_axis=B')])
        expected = p4d.reindex(labels = ['l1'], items = ['ItemA'], minor_axis = ['B'])
        tm.assert_panel4d_equal(result, expected)

        # non-existant partial selection
        result = self.store.select('p4d',[Term('labels=l1'), Term('items=Item1'), Term('minor_axis=B')])
        expected = p4d.reindex(labels = ['l1'], items = [], minor_axis = ['B'])
        tm.assert_panel4d_equal(result, expected)
示例#15
0
    def test_take(self):
        indices = [1, 5, -2, 6, 3, -1]
        for s in [tm.makeFloatSeries(), tm.makeStringSeries(),
                  tm.makeObjectSeries()]:
            out = s.take(indices)
            expected = Series(data=s.values.take(indices),
                              index=s.index.take(indices), dtype=s.dtype)
            tm.assert_series_equal(out, expected)
        for df in [tm.makeTimeDataFrame()]:
            out = df.take(indices)
            expected = DataFrame(data=df.values.take(indices, axis=0),
                                 index=df.index.take(indices),
                                 columns=df.columns)
            tm.assert_frame_equal(out, expected)

        indices = [-3, 2, 0, 1]
        with catch_warnings(record=True):
            for p in [tm.makePanel()]:
                out = p.take(indices)
                expected = Panel(data=p.values.take(indices, axis=0),
                                 items=p.items.take(indices),
                                 major_axis=p.major_axis,
                                 minor_axis=p.minor_axis)
                tm.assert_panel_equal(out, expected)

        with catch_warnings(record=True):
            for p4d in [tm.makePanel4D()]:
                out = p4d.take(indices)
                expected = Panel4D(data=p4d.values.take(indices, axis=0),
                                   labels=p4d.labels.take(indices),
                                   major_axis=p4d.major_axis,
                                   minor_axis=p4d.minor_axis,
                                   items=p4d.items)
                tm.assert_panel4d_equal(out, expected)
示例#16
0
    def test_numpy_transpose(self):
        msg = "the 'axes' parameter is not supported"

        s = tm.makeFloatSeries()
        tm.assert_series_equal(
            np.transpose(s), s)
        tm.assert_raises_regex(ValueError, msg,
                               np.transpose, s, axes=1)

        df = tm.makeTimeDataFrame()
        tm.assert_frame_equal(np.transpose(
            np.transpose(df)), df)
        tm.assert_raises_regex(ValueError, msg,
                               np.transpose, df, axes=1)

        with catch_warnings(record=True):
            p = tm.makePanel()
            tm.assert_panel_equal(np.transpose(
                np.transpose(p, axes=(2, 0, 1)),
                axes=(1, 2, 0)), p)

        with catch_warnings(record=True):
            p4d = tm.makePanel4D()
            tm.assert_panel4d_equal(np.transpose(
                np.transpose(p4d, axes=(2, 0, 3, 1)),
                axes=(1, 3, 0, 2)), p4d)
示例#17
0
    def test_take_invalid_kwargs(self):
        indices = [-3, 2, 0, 1]
        s = tm.makeFloatSeries()
        df = tm.makeTimeDataFrame()

        with catch_warnings(record=True):
            p = tm.makePanel()
            p4d = tm.makePanel4D()

        for obj in (s, df, p, p4d):
            msg = r"take\(\) got an unexpected keyword argument 'foo'"
            tm.assert_raises_regex(TypeError, msg, obj.take, indices, foo=2)

            msg = "the 'out' parameter is not supported"
            tm.assert_raises_regex(ValueError,
                                   msg,
                                   obj.take,
                                   indices,
                                   out=indices)

            msg = "the 'mode' parameter is not supported"
            tm.assert_raises_regex(ValueError,
                                   msg,
                                   obj.take,
                                   indices,
                                   mode='clip')
示例#18
0
    def test_ndim_indexables(self):
        """ test using ndim tables in new ways"""

        p4d = tm.makePanel4D()

        def check_indexers(key, indexers):
            for i,idx in enumerate(indexers):
                self.assert_(getattr(getattr(self.store.root,key).table.description,idx)._v_pos == i)

        # append then change (will take existing schema)
        indexers = ['items','major_axis','minor_axis']
        
        self.store.remove('p4d')
        self.store.append('p4d', p4d.ix[:,:,:10,:], axes=indexers)
        self.store.append('p4d', p4d.ix[:,:,10:,:])
        tm.assert_panel4d_equal(self.store.select('p4d'),p4d)
        check_indexers('p4d',indexers)

        # same as above, but try to append with differnt axes
        self.store.remove('p4d')
        self.store.append('p4d', p4d.ix[:,:,:10,:], axes=indexers)
        self.store.append('p4d', p4d.ix[:,:,10:,:], axes=['labels','items','major_axis'])
        tm.assert_panel4d_equal(self.store.select('p4d'),p4d)
        check_indexers('p4d',indexers)

        # pass incorrect number of axes
        self.store.remove('p4d')
        self.assertRaises(Exception, self.store.append, 'p4d', p4d.ix[:,:,:10,:], axes=['major_axis','minor_axis'])

        # different than default indexables #1
        indexers = ['labels','major_axis','minor_axis']
        self.store.remove('p4d')
        self.store.append('p4d', p4d.ix[:,:,:10,:], axes=indexers)
        self.store.append('p4d', p4d.ix[:,:,10:,:])
        tm.assert_panel4d_equal(self.store['p4d'], p4d)
        check_indexers('p4d',indexers)
  
        # different than default indexables #2
        indexers = ['major_axis','labels','minor_axis']
        self.store.remove('p4d')
        self.store.append('p4d', p4d.ix[:,:,:10,:], axes=indexers)
        self.store.append('p4d', p4d.ix[:,:,10:,:])
        tm.assert_panel4d_equal(self.store['p4d'], p4d)
        check_indexers('p4d',indexers)

        # partial selection
        result = self.store.select('p4d',['labels=l1'])
        expected = p4d.reindex(labels = ['l1'])
        tm.assert_panel4d_equal(result, expected)

        # partial selection2
        result = self.store.select('p4d',[Term('labels=l1'), Term('items=ItemA'), Term('minor_axis=B')])
        expected = p4d.reindex(labels = ['l1'], items = ['ItemA'], minor_axis = ['B'])
        tm.assert_panel4d_equal(result, expected)

        # non-existant partial selection
        result = self.store.select('p4d',[Term('labels=l1'), Term('items=Item1'), Term('minor_axis=B')])
        expected = p4d.reindex(labels = ['l1'], items = [], minor_axis = ['B'])
        tm.assert_panel4d_equal(result, expected)
示例#19
0
    def test_isna_isnull(self, isna_f):
        assert not isna_f(1.)
        assert isna_f(None)
        assert isna_f(np.NaN)
        assert float('nan')
        assert not isna_f(np.inf)
        assert not isna_f(-np.inf)

        # series
        for s in [
                tm.makeFloatSeries(),
                tm.makeStringSeries(),
                tm.makeObjectSeries(),
                tm.makeTimeSeries(),
                tm.makePeriodSeries()
        ]:
            assert isinstance(isna_f(s), Series)

        # frame
        for df in [
                tm.makeTimeDataFrame(),
                tm.makePeriodFrame(),
                tm.makeMixedDataFrame()
        ]:
            result = isna_f(df)
            expected = df.apply(isna_f)
            tm.assert_frame_equal(result, expected)

        # panel
        with catch_warnings(record=True):
            for p in [
                    tm.makePanel(),
                    tm.makePeriodPanel(),
                    tm.add_nans(tm.makePanel())
            ]:
                result = isna_f(p)
                expected = p.apply(isna_f)
                tm.assert_panel_equal(result, expected)

        # panel 4d
        with catch_warnings(record=True):
            for p in [tm.makePanel4D(), tm.add_nans_panel4d(tm.makePanel4D())]:
                result = isna_f(p)
                expected = p.apply(isna_f)
                tm.assert_panel4d_equal(result, expected)
示例#20
0
 def _make_one_p4d():
     wp = tm.makePanel4D()
     wp['obj1'] = 'foo'
     wp['obj2'] = 'bar'
     wp['bool1'] = wp['l1'] > 0
     wp['bool2'] = wp['l2'] > 0
     wp['int1'] = 1
     wp['int2'] = 2
     return wp.consolidate()
示例#21
0
 def _make_one_p4d():
     wp = tm.makePanel4D()
     wp['obj1'] = 'foo'
     wp['obj2'] = 'bar'
     wp['bool1'] = wp['l1'] > 0
     wp['bool2'] = wp['l2'] > 0
     wp['int1'] = 1
     wp['int2'] = 2
     return wp.consolidate()
示例#22
0
    def test_terms(self):

        wp = tm.makePanel()
        p4d = tm.makePanel4D()
        self.store.put('wp', wp, table=True)
        self.store.put('p4d', p4d, table=True)

        # some invalid terms
        terms = [
            [ 'minor', ['A','B'] ],
            [ 'index', ['20121114'] ],
            [ 'index', ['20121114', '20121114'] ],
            ]
        for t in terms:
            self.assertRaises(Exception, self.store.select, 'wp', t)

        self.assertRaises(Exception, Term.__init__)
        self.assertRaises(Exception, Term.__init__, 'blah')
        self.assertRaises(Exception, Term.__init__, 'index')
        self.assertRaises(Exception, Term.__init__, 'index', '==')
        self.assertRaises(Exception, Term.__init__, 'index', '>', 5)

        # panel
        result = self.store.select('wp',[ Term('major_axis<20000108'), Term('minor_axis', '=', ['A','B']) ])
        expected = wp.truncate(after='20000108').reindex(minor=['A', 'B'])
        tm.assert_panel_equal(result, expected)

        # p4d
        result = self.store.select('p4d',[ Term('major_axis<20000108'), Term('minor_axis', '=', ['A','B']) ])
        expected = p4d.truncate(after='20000108').reindex(minor=['A', 'B'])
        tm.assert_panel4d_equal(result, expected)

        # valid terms
        terms = [
            dict(field = 'major_axis', op = '>', value = '20121114'),
            ('major_axis', '20121114'),
            ('major_axis', '>', '20121114'),
            (('major_axis', ['20121114','20121114']),),
            ('major_axis', datetime(2012,11,14)),
            'major_axis>20121114',
            'major_axis>20121114',
            'major_axis>20121114',
            (('minor_axis', ['A','B']),),
            (('minor_axis', ['A','B']),),
            ((('minor_axis', ['A','B']),),),
            ]

        for t in terms:
           self.store.select('wp', t)
           self.store.select('p4d', t)
示例#23
0
    def test_panel4d_concat(self):
        p4d = tm.makePanel4D()

        p1 = p4d.ix[:, :, :5, :]
        p2 = p4d.ix[:, :, 5:, :]

        result = concat([p1, p2], axis=2)
        tm.assert_panel4d_equal(result, p4d)

        p1 = p4d.ix[:, :, :, :2]
        p2 = p4d.ix[:, :, :, 2:]

        result = concat([p1, p2], axis=3)
        tm.assert_panel4d_equal(result, p4d)
示例#24
0
    def test_panel4d_concat(self):
        p4d = tm.makePanel4D()

        p1 = p4d.ix[:, :, :5, :]
        p2 = p4d.ix[:, :, 5:, :]

        result = concat([p1, p2], axis=2)
        tm.assert_panel4d_equal(result, p4d)

        p1 = p4d.ix[:, :, :, :2]
        p2 = p4d.ix[:, :, :, 2:]

        result = concat([p1, p2], axis=3)
        tm.assert_panel4d_equal(result, p4d)
示例#25
0
    def test_panel4d_concat(self):
        with tm.assert_produces_warning(FutureWarning, check_stacklevel=False):
            p4d = tm.makePanel4D()

            p1 = p4d.ix[:, :, :5, :]
            p2 = p4d.ix[:, :, 5:, :]

            result = concat([p1, p2], axis=2)
            tm.assert_panel4d_equal(result, p4d)

            p1 = p4d.ix[:, :, :, :2]
            p2 = p4d.ix[:, :, :, 2:]

            result = concat([p1, p2], axis=3)
            tm.assert_panel4d_equal(result, p4d)
示例#26
0
    def test_panel4d_concat_mixed_type(self):
        p4d = tm.makePanel4D()

        # if things are a bit misbehaved
        p1 = p4d.ix[:, :2, :, :2]
        p2 = p4d.ix[:, :, :, 2:]
        p1['L5'] = 'baz'

        result = concat([p1, p2], axis=3)

        p2['L5'] = np.nan
        expected = concat([p1, p2], axis=3)
        expected = expected.ix[result.labels]

        tm.assert_panel4d_equal(result, expected)
示例#27
0
    def test_panel4d_concat_mixed_type(self):
        p4d = tm.makePanel4D()

        # if things are a bit misbehaved
        p1 = p4d.ix[:, :2, :, :2]
        p2 = p4d.ix[:, :, :, 2:]
        p1['L5'] = 'baz'

        result = concat([p1, p2], axis=3)

        p2['L5'] = np.nan
        expected = concat([p1, p2], axis=3)
        expected = expected.ix[result.labels]

        tm.assert_panel4d_equal(result, expected)
示例#28
0
    def test_panel4d_concat_mixed_type(self):
        with tm.assert_produces_warning(FutureWarning, check_stacklevel=False):
            p4d = tm.makePanel4D()

            # if things are a bit misbehaved
            p1 = p4d.ix[:, :2, :, :2]
            p2 = p4d.ix[:, :, :, 2:]
            p1['L5'] = 'baz'

            result = concat([p1, p2], axis=3)

            p2['L5'] = np.nan
            expected = concat([p1, p2], axis=3)
            expected = expected.ix[result.labels]

            tm.assert_panel4d_equal(result, expected)
示例#29
0
    def test_to_xarray(self):
        from xarray import DataArray

        with catch_warnings(record=True):
            p = tm.makePanel4D()

            result = p.to_xarray()
            assert isinstance(result, DataArray)
            assert len(result.coords) == 4
            assert_almost_equal(list(result.coords.keys()),
                                ['labels', 'items', 'major_axis',
                                 'minor_axis'])
            assert len(result.dims) == 4

            # non-convertible
            pytest.raises(ValueError, lambda: result.to_pandas())
示例#30
0
    def test_append(self):
        pth = '__test_append__.h5'

        try:
            store = HDFStore(pth)

            df = tm.makeTimeDataFrame()
            store.append('df1', df[:10])
            store.append('df1', df[10:])
            tm.assert_frame_equal(store['df1'], df)

            store.put('df2', df[:10], table=True)
            store.append('df2', df[10:])
            tm.assert_frame_equal(store['df2'], df)

            store.append('/df3', df[:10])
            store.append('/df3', df[10:])
            tm.assert_frame_equal(store['df3'], df)

            # this is allowed by almost always don't want to do it
            import warnings
            import tables
            warnings.filterwarnings('ignore', category=tables.NaturalNameWarning)
            store.append('/df3 foo', df[:10])
            store.append('/df3 foo', df[10:])
            tm.assert_frame_equal(store['df3 foo'], df)
            warnings.filterwarnings('always', category=tables.NaturalNameWarning)

            # panel
            wp = tm.makePanel()
            store.append('wp1', wp.ix[:,:10,:])
            store.append('wp1', wp.ix[:,10:,:])
            tm.assert_panel_equal(store['wp1'], wp)

            # ndim
            p4d = tm.makePanel4D()
            store.append('p4d', p4d.ix[:,:,:10,:])
            store.append('p4d', p4d.ix[:,:,10:,:])
            tm.assert_panel4d_equal(store['p4d'], p4d)

        except:
            raise
        finally:
            store.close()
            os.remove(pth)
示例#31
0
    def test_append(self):

        df = tm.makeTimeDataFrame()
        self.store.remove('df1')
        self.store.append('df1', df[:10])
        self.store.append('df1', df[10:])
        tm.assert_frame_equal(self.store['df1'], df)

        self.store.remove('df2')
        self.store.put('df2', df[:10], table=True)
        self.store.append('df2', df[10:])
        tm.assert_frame_equal(self.store['df2'], df)

        self.store.remove('df3')
        self.store.append('/df3', df[:10])
        self.store.append('/df3', df[10:])
        tm.assert_frame_equal(self.store['df3'], df)

        # this is allowed by almost always don't want to do it
        warnings.filterwarnings('ignore', category=tables.NaturalNameWarning)
        self.store.remove('/df3 foo')
        self.store.append('/df3 foo', df[:10])
        self.store.append('/df3 foo', df[10:])
        tm.assert_frame_equal(self.store['df3 foo'], df)
        warnings.filterwarnings('always', category=tables.NaturalNameWarning)
        
        # panel
        wp = tm.makePanel()
        self.store.remove('wp1')
        self.store.append('wp1', wp.ix[:,:10,:])
        self.store.append('wp1', wp.ix[:,10:,:])
        tm.assert_panel_equal(self.store['wp1'], wp)

        # ndim
        p4d = tm.makePanel4D()
        self.store.remove('p4d')
        self.store.append('p4d', p4d.ix[:,:,:10,:])
        self.store.append('p4d', p4d.ix[:,:,10:,:])
        tm.assert_panel4d_equal(self.store['p4d'], p4d)

        # test using axis labels
        self.store.remove('p4d')
        self.store.append('p4d', p4d.ix[:,:,:10,:], axes=['items','major_axis','minor_axis'])
        self.store.append('p4d', p4d.ix[:,:,10:,:], axes=['items','major_axis','minor_axis'])
        tm.assert_panel4d_equal(self.store['p4d'], p4d)
示例#32
0
    def test_take_invalid_kwargs(self):
        indices = [-3, 2, 0, 1]
        s = tm.makeFloatSeries()
        df = tm.makeTimeDataFrame()

        with catch_warnings(record=True):
            p = tm.makePanel()
            p4d = tm.makePanel4D()

        for obj in (s, df, p, p4d):
            msg = r"take\(\) got an unexpected keyword argument 'foo'"
            tm.assert_raises_regex(TypeError, msg, obj.take,
                                   indices, foo=2)

            msg = "the 'out' parameter is not supported"
            tm.assert_raises_regex(ValueError, msg, obj.take,
                                   indices, out=indices)

            msg = "the 'mode' parameter is not supported"
            tm.assert_raises_regex(ValueError, msg, obj.take,
                                   indices, mode='clip')
示例#33
0
    def test_numpy_transpose(self):
        msg = "the 'axes' parameter is not supported"

        s = tm.makeFloatSeries()
        tm.assert_series_equal(np.transpose(s), s)
        tm.assert_raises_regex(ValueError, msg, np.transpose, s, axes=1)

        df = tm.makeTimeDataFrame()
        tm.assert_frame_equal(np.transpose(np.transpose(df)), df)
        tm.assert_raises_regex(ValueError, msg, np.transpose, df, axes=1)

        with catch_warnings(record=True):
            p = tm.makePanel()
            tm.assert_panel_equal(
                np.transpose(np.transpose(p, axes=(2, 0, 1)), axes=(1, 2, 0)),
                p)

        with catch_warnings(record=True):
            p4d = tm.makePanel4D()
            tm.assert_panel4d_equal(
                np.transpose(np.transpose(p4d, axes=(2, 0, 3, 1)),
                             axes=(1, 3, 0, 2)), p4d)
示例#34
0
    def test_take(self):
        indices = [1, 5, -2, 6, 3, -1]
        for s in [
                tm.makeFloatSeries(),
                tm.makeStringSeries(),
                tm.makeObjectSeries()
        ]:
            out = s.take(indices)
            expected = Series(data=s.values.take(indices),
                              index=s.index.take(indices),
                              dtype=s.dtype)
            tm.assert_series_equal(out, expected)
        for df in [tm.makeTimeDataFrame()]:
            out = df.take(indices)
            expected = DataFrame(data=df.values.take(indices, axis=0),
                                 index=df.index.take(indices),
                                 columns=df.columns)
            tm.assert_frame_equal(out, expected)

        indices = [-3, 2, 0, 1]
        with catch_warnings(record=True):
            for p in [tm.makePanel()]:
                out = p.take(indices)
                expected = Panel(data=p.values.take(indices, axis=0),
                                 items=p.items.take(indices),
                                 major_axis=p.major_axis,
                                 minor_axis=p.minor_axis)
                tm.assert_panel_equal(out, expected)

        with catch_warnings(record=True):
            for p4d in [tm.makePanel4D()]:
                out = p4d.take(indices)
                expected = Panel4D(data=p4d.values.take(indices, axis=0),
                                   labels=p4d.labels.take(indices),
                                   major_axis=p4d.major_axis,
                                   minor_axis=p4d.minor_axis,
                                   items=p4d.items)
                tm.assert_panel4d_equal(out, expected)
示例#35
0
    def test_transpose(self):
        msg = (r"transpose\(\) got multiple values for "
               r"keyword argument 'axes'")
        for s in [tm.makeFloatSeries(), tm.makeStringSeries(),
                  tm.makeObjectSeries()]:
            # calls implementation in pandas/core/base.py
            tm.assert_series_equal(s.transpose(), s)
        for df in [tm.makeTimeDataFrame()]:
            tm.assert_frame_equal(df.transpose().transpose(), df)

        with catch_warnings(record=True):
            for p in [tm.makePanel()]:
                tm.assert_panel_equal(p.transpose(2, 0, 1)
                                      .transpose(1, 2, 0), p)
                tm.assert_raises_regex(TypeError, msg, p.transpose,
                                       2, 0, 1, axes=(2, 0, 1))

        with catch_warnings(record=True):
            for p4d in [tm.makePanel4D()]:
                tm.assert_panel4d_equal(p4d.transpose(2, 0, 3, 1)
                                        .transpose(1, 3, 0, 2), p4d)
                tm.assert_raises_regex(TypeError, msg, p4d.transpose,
                                       2, 0, 3, 1, axes=(2, 0, 3, 1))
示例#36
0
    def test_transpose(self):
        msg = (r"transpose\(\) got multiple values for "
               r"keyword argument 'axes'")
        for s in [
                tm.makeFloatSeries(),
                tm.makeStringSeries(),
                tm.makeObjectSeries()
        ]:
            # calls implementation in pandas/core/base.py
            tm.assert_series_equal(s.transpose(), s)
        for df in [tm.makeTimeDataFrame()]:
            tm.assert_frame_equal(df.transpose().transpose(), df)

        with catch_warnings(record=True):
            for p in [tm.makePanel()]:
                tm.assert_panel_equal(
                    p.transpose(2, 0, 1).transpose(1, 2, 0), p)
                tm.assert_raises_regex(TypeError,
                                       msg,
                                       p.transpose,
                                       2,
                                       0,
                                       1,
                                       axes=(2, 0, 1))

        with catch_warnings(record=True):
            for p4d in [tm.makePanel4D()]:
                tm.assert_panel4d_equal(
                    p4d.transpose(2, 0, 3, 1).transpose(1, 3, 0, 2), p4d)
                tm.assert_raises_regex(TypeError,
                                       msg,
                                       p4d.transpose,
                                       2,
                                       0,
                                       3,
                                       1,
                                       axes=(2, 0, 3, 1))
示例#37
0
 def setup_method(self, method):
     with catch_warnings(record=True):
         self.panel4d = tm.makePanel4D(nper=8)
         add_nans(self.panel4d)
示例#38
0
 def test_panel4d(self):
     with catch_warnings(record=True):
         self.run_panel(tm.makePanel4D(), np.random.randn() + 0.5,
                        assert_func=assert_panel4d_equal, binary_comp=3)
示例#39
0
 def test_raise_on_panel4d_with_multiindex(self, parser, engine):
     tm.skip_if_no_ne()
     p4d = tm.makePanel4D(7)
     p4d.items = tm.makeCustomIndex(len(p4d.items), nlevels=2)
     with pytest.raises(NotImplementedError):
         pd.eval('p4d + 1', parser=parser, engine=engine)
示例#40
0
 def test_panel4d(self):
     with tm.assert_produces_warning(FutureWarning, check_stacklevel=False):
         self.run_panel(tm.makePanel4D(), np.random.randn() + 0.5,
                        assert_func=assert_panel4d_equal, binary_comp=3)
示例#41
0
 def test_panel4d(self):
     with tm.assert_produces_warning(FutureWarning, check_stacklevel=False):
         self.run_panel(tm.makePanel4D(), np.random.randn() + 0.5,
                        assert_func=assert_panel4d_equal, binary_comp=3)
示例#42
0
 def setUp(self):
     self.panel4d = tm.makePanel4D(nper=8)
     add_nans(self.panel4d)
示例#43
0
    def test_ndim_indexables(self):
        """ test using ndim tables in new ways"""

        p4d = tm.makePanel4D()

        def check_indexers(key, indexers):
            for i, idx in enumerate(indexers):
                self.assert_(
                    getattr(
                        getattr(self.store.root, key).table.description,
                        idx)._v_pos == i)

        # append then change (will take existing schema)
        indexers = ['items', 'major_axis', 'minor_axis']

        self.store.remove('p4d')
        self.store.append('p4d', p4d.ix[:, :, :10, :], axes=indexers)
        self.store.append('p4d', p4d.ix[:, :, 10:, :])
        tm.assert_panel4d_equal(self.store.select('p4d'), p4d)
        check_indexers('p4d', indexers)

        # same as above, but try to append with differnt axes
        self.store.remove('p4d')
        self.store.append('p4d', p4d.ix[:, :, :10, :], axes=indexers)
        self.store.append('p4d',
                          p4d.ix[:, :, 10:, :],
                          axes=['labels', 'items', 'major_axis'])
        tm.assert_panel4d_equal(self.store.select('p4d'), p4d)
        check_indexers('p4d', indexers)

        # pass incorrect number of axes
        self.store.remove('p4d')
        self.assertRaises(Exception,
                          self.store.append,
                          'p4d',
                          p4d.ix[:, :, :10, :],
                          axes=['major_axis', 'minor_axis'])

        # different than default indexables #1
        indexers = ['labels', 'major_axis', 'minor_axis']
        self.store.remove('p4d')
        self.store.append('p4d', p4d.ix[:, :, :10, :], axes=indexers)
        self.store.append('p4d', p4d.ix[:, :, 10:, :])
        tm.assert_panel4d_equal(self.store['p4d'], p4d)
        check_indexers('p4d', indexers)

        # different than default indexables #2
        indexers = ['major_axis', 'labels', 'minor_axis']
        self.store.remove('p4d')
        self.store.append('p4d', p4d.ix[:, :, :10, :], axes=indexers)
        self.store.append('p4d', p4d.ix[:, :, 10:, :])
        tm.assert_panel4d_equal(self.store['p4d'], p4d)
        check_indexers('p4d', indexers)

        # partial selection
        result = self.store.select('p4d', ['labels=l1'])
        expected = p4d.reindex(labels=['l1'])
        tm.assert_panel4d_equal(result, expected)

        # partial selection2
        result = self.store.select(
            'p4d',
            [Term('labels=l1'),
             Term('items=ItemA'),
             Term('minor_axis=B')])
        expected = p4d.reindex(labels=['l1'],
                               items=['ItemA'],
                               minor_axis=['B'])
        tm.assert_panel4d_equal(result, expected)

        # non-existant partial selection
        result = self.store.select(
            'p4d',
            [Term('labels=l1'),
             Term('items=Item1'),
             Term('minor_axis=B')])
        expected = p4d.reindex(labels=['l1'], items=[], minor_axis=['B'])
        tm.assert_panel4d_equal(result, expected)
示例#44
0
    def test_terms(self):

        wp = tm.makePanel()
        p4d = tm.makePanel4D()
        self.store.put('wp', wp, table=True)
        self.store.put('p4d', p4d, table=True)

        # some invalid terms
        terms = [
            ['minor', ['A', 'B']],
            ['index', ['20121114']],
            ['index', ['20121114', '20121114']],
        ]
        for t in terms:
            self.assertRaises(Exception, self.store.select, 'wp', t)

        self.assertRaises(Exception, Term.__init__)
        self.assertRaises(Exception, Term.__init__, 'blah')
        self.assertRaises(Exception, Term.__init__, 'index')
        self.assertRaises(Exception, Term.__init__, 'index', '==')
        self.assertRaises(Exception, Term.__init__, 'index', '>', 5)

        # panel
        result = self.store.select(
            'wp',
            [Term('major_axis<20000108'),
             Term('minor_axis', '=', ['A', 'B'])])
        expected = wp.truncate(after='20000108').reindex(minor=['A', 'B'])
        tm.assert_panel_equal(result, expected)

        # p4d
        result = self.store.select('p4d', [
            Term('major_axis<20000108'),
            Term('minor_axis', '=', ['A', 'B']),
            Term('items', '=', ['ItemA', 'ItemB'])
        ])
        expected = p4d.truncate(after='20000108').reindex(
            minor=['A', 'B'], items=['ItemA', 'ItemB'])
        tm.assert_panel4d_equal(result, expected)

        # valid terms
        terms = [
            dict(field='major_axis', op='>', value='20121114'),
            ('major_axis', '20121114'),
            ('major_axis', '>', '20121114'),
            (('major_axis', ['20121114', '20121114']), ),
            ('major_axis', datetime(2012, 11, 14)),
            'major_axis>20121114',
            'major_axis>20121114',
            'major_axis>20121114',
            (('minor_axis', ['A', 'B']), ),
            (('minor_axis', ['A', 'B']), ),
            ((('minor_axis', ['A', 'B']), ), ),
            (('items', ['ItemA', 'ItemB']), ),
            ('items=ItemA'),
        ]

        for t in terms:
            self.store.select('wp', t)
            self.store.select('p4d', t)

        # valid for p4d only
        terms = [
            (('labels', '=', ['l1', 'l2']), ),
            Term('labels', '=', ['l1', 'l2']),
        ]

        for t in terms:
            self.store.select('p4d', t)
示例#45
0
 def check_raise_on_panel4d_with_multiindex(self, parser, engine):
     tm.skip_if_no_ne()
     p4d = tm.makePanel4D(7)
     p4d.items = tm.makeCustomIndex(len(p4d.items), nlevels=2)
     with tm.assertRaises(NotImplementedError):
         pd.eval('p4d + 1', parser=parser, engine=engine)
示例#46
0
 def test_panel4d(self):
     with catch_warnings(record=True):
         self.run_panel(tm.makePanel4D(),
                        np.random.randn() + 0.5,
                        assert_func=assert_panel4d_equal,
                        binary_comp=3)
示例#47
0
 def setUp(self):
     with catch_warnings(record=True):
         self.panel4d = tm.makePanel4D(nper=8)
         add_nans(self.panel4d)
示例#48
0
 def setUp(self):
     with tm.assert_produces_warning(FutureWarning, check_stacklevel=False):
         self.panel4d = tm.makePanel4D(nper=8)
         add_nans(self.panel4d)
示例#49
0
 def setUp(self):
     self.panel4d = tm.makePanel4D(nper=8)
     add_nans(self.panel4d)
示例#50
0
 def setup_method(self, method):
     with catch_warnings(record=True):
         self.panel4d = tm.makePanel4D(nper=8)
         add_nans(self.panel4d)
示例#51
0
    def test_append(self):

        df = tm.makeTimeDataFrame()
        self.store.remove('df1')
        self.store.append('df1', df[:10])
        self.store.append('df1', df[10:])
        tm.assert_frame_equal(self.store['df1'], df)

        self.store.remove('df2')
        self.store.put('df2', df[:10], table=True)
        self.store.append('df2', df[10:])
        tm.assert_frame_equal(self.store['df2'], df)

        self.store.remove('df3')
        self.store.append('/df3', df[:10])
        self.store.append('/df3', df[10:])
        tm.assert_frame_equal(self.store['df3'], df)

        # this is allowed by almost always don't want to do it
        warnings.filterwarnings('ignore', category=tables.NaturalNameWarning)
        self.store.remove('/df3 foo')
        self.store.append('/df3 foo', df[:10])
        self.store.append('/df3 foo', df[10:])
        tm.assert_frame_equal(self.store['df3 foo'], df)
        warnings.filterwarnings('always', category=tables.NaturalNameWarning)

        # panel
        wp = tm.makePanel()
        self.store.remove('wp1')
        self.store.append('wp1', wp.ix[:, :10, :])
        self.store.append('wp1', wp.ix[:, 10:, :])
        tm.assert_panel_equal(self.store['wp1'], wp)

        # ndim
        p4d = tm.makePanel4D()
        self.store.remove('p4d')
        self.store.append('p4d', p4d.ix[:, :, :10, :])
        self.store.append('p4d', p4d.ix[:, :, 10:, :])
        tm.assert_panel4d_equal(self.store['p4d'], p4d)

        # test using axis labels
        self.store.remove('p4d')
        self.store.append('p4d',
                          p4d.ix[:, :, :10, :],
                          axes=['items', 'major_axis', 'minor_axis'])
        self.store.append('p4d',
                          p4d.ix[:, :, 10:, :],
                          axes=['items', 'major_axis', 'minor_axis'])
        tm.assert_panel4d_equal(self.store['p4d'], p4d)

        # test using differnt number of items on each axis
        p4d2 = p4d.copy()
        p4d2['l4'] = p4d['l1']
        p4d2['l5'] = p4d['l1']
        self.store.remove('p4d2')
        self.store.append('p4d2',
                          p4d2,
                          axes=['items', 'major_axis', 'minor_axis'])
        tm.assert_panel4d_equal(self.store['p4d2'], p4d2)

        # test using differt order of items on the non-index axes
        self.store.remove('wp1')
        wp_append1 = wp.ix[:, :10, :]
        self.store.append('wp1', wp_append1)
        wp_append2 = wp.ix[:, 10:, :].reindex(items=wp.items[::-1])
        self.store.append('wp1', wp_append2)
        tm.assert_panel_equal(self.store['wp1'], wp)
示例#52
0
 def setUp(self):
     with catch_warnings(record=True):
         self.panel4d = tm.makePanel4D(nper=8)
         add_nans(self.panel4d)
 def test_panel4d(self):
     self.run_panel(tm.makePanel4D(), np.random.randn() + 0.5,
                    assert_func=assert_panel4d_equal, binary_comp=3)