Exemplo n.º 1
0
    def test_display_truncate_a(self) -> None:

        config_rows_12_cols_8 = sf.DisplayConfig.from_default(
            display_rows=12, display_columns=8)
        config_rows_7_cols_5 = sf.DisplayConfig.from_default(display_rows=7,
                                                             display_columns=5)

        size = 10000
        columns = 100
        a1 = (np.arange(size * columns)).reshape((size, columns)) * .001
        # insert random nan in very other columns
        for col in range(0, 100, 2):
            a1[:100, col] = np.nan

        index = (hashlib.sha224(str(x).encode('utf-8')).hexdigest()
                 for x in range(size))
        cols = (hashlib.sha224(str(x).encode('utf-8')).hexdigest()
                for x in range(columns))

        f = Frame(a1, index=index, columns=cols)

        self.assertEqual(
            len(tuple(f.display(config_rows_12_cols_8).to_rows())), 15)

        self.assertEqual(len(tuple(f.display(config_rows_7_cols_5).to_rows())),
                         11)
    def test_hierarchy_frame_a(self):
        OD = OrderedDict
        tree = OD([
                ('I', OD([
                        ('A', (1,)), ('B', (1, 2))
                        ])
                ),
                ('II', OD([
                        ('A', (1,)), ('B', (1, 2))
                        ])
                ),
                ])

        ih = IndexHierarchy.from_tree(tree)

        data = np.arange(6*6).reshape(6, 6)
        f1 = Frame(data, index=ih, columns=ih)
        # self.assertEqual(len(f.to_pairs(0)), 8)


        f2 = f1.assign.loc[('I', 'B', 2), ('II', 'A', 1)](200)

        post = f2.to_pairs(0)
        self.assertEqual(post,
                ((('I', 'A', 1), ((('I', 'A', 1), 0), (('I', 'B', 1), 6), (('I', 'B', 2), 12), (('II', 'A', 1), 18), (('II', 'B', 1), 24), (('II', 'B', 2), 30))), (('I', 'B', 1), ((('I', 'A', 1), 1), (('I', 'B', 1), 7), (('I', 'B', 2), 13), (('II', 'A', 1), 19), (('II', 'B', 1), 25), (('II', 'B', 2), 31))), (('I', 'B', 2), ((('I', 'A', 1), 2), (('I', 'B', 1), 8), (('I', 'B', 2), 14), (('II', 'A', 1), 20), (('II', 'B', 1), 26), (('II', 'B', 2), 32))), (('II', 'A', 1), ((('I', 'A', 1), 3), (('I', 'B', 1), 9), (('I', 'B', 2), 200), (('II', 'A', 1), 21), (('II', 'B', 1), 27), (('II', 'B', 2), 33))), (('II', 'B', 1), ((('I', 'A', 1), 4), (('I', 'B', 1), 10), (('I', 'B', 2), 16), (('II', 'A', 1), 22), (('II', 'B', 1), 28), (('II', 'B', 2), 34))), (('II', 'B', 2), ((('I', 'A', 1), 5), (('I', 'B', 1), 11), (('I', 'B', 2), 17), (('II', 'A', 1), 23), (('II', 'B', 1), 29), (('II', 'B', 2), 35))))
        )


        f3 = f1.assign.loc[('I', 'B', 2):, HLoc[:, :, 2]](200)

        self.assertEqual(f3.to_pairs(0),
                ((('I', 'A', 1), ((('I', 'A', 1), 0), (('I', 'B', 1), 6), (('I', 'B', 2), 12), (('II', 'A', 1), 18), (('II', 'B', 1), 24), (('II', 'B', 2), 30))), (('I', 'B', 1), ((('I', 'A', 1), 1), (('I', 'B', 1), 7), (('I', 'B', 2), 13), (('II', 'A', 1), 19), (('II', 'B', 1), 25), (('II', 'B', 2), 31))), (('I', 'B', 2), ((('I', 'A', 1), 2), (('I', 'B', 1), 8), (('I', 'B', 2), 200), (('II', 'A', 1), 200), (('II', 'B', 1), 200), (('II', 'B', 2), 200))), (('II', 'A', 1), ((('I', 'A', 1), 3), (('I', 'B', 1), 9), (('I', 'B', 2), 15), (('II', 'A', 1), 21), (('II', 'B', 1), 27), (('II', 'B', 2), 33))), (('II', 'B', 1), ((('I', 'A', 1), 4), (('I', 'B', 1), 10), (('I', 'B', 2), 16), (('II', 'A', 1), 22), (('II', 'B', 1), 28), (('II', 'B', 2), 34))), (('II', 'B', 2), ((('I', 'A', 1), 5), (('I', 'B', 1), 11), (('I', 'B', 2), 200), (('II', 'A', 1), 200), (('II', 'B', 1), 200), (('II', 'B', 2), 200))))
        )
    def test_frame_iter_element_c(self) -> None:

        a2 = np.array([[None, None], [None, 1], [None, 5]], dtype=object)
        a1 = np.array([True, False, True])
        a3 = np.array([['a'], ['b'], ['c']])

        tb1 = TypeBlocks.from_blocks((a3, a1, a2))

        f1 = Frame(tb1,
                   index=self.get_letters(None, tb1.shape[0]),
                   columns=IndexHierarchy.from_product(('i', 'ii'),
                                                       ('a', 'b')))
        values = list(f1.iter_element())
        self.assertEqual(
            values,
            ['a', True, None, None, 'b', False, None, 1, 'c', True, None, 5])

        f2 = f1.iter_element().apply(lambda x: str(x).lower().replace('e', ''))

        self.assertEqual(
            f1.columns.__class__,
            f2.columns.__class__,
        )

        self.assertEqual(
            f2.to_pairs(0),
            ((('i', 'a'), (('a', 'a'), ('b', 'b'), ('c', 'c'))),
             (('i', 'b'), (('a', 'tru'), ('b', 'fals'), ('c', 'tru'))),
             (('ii', 'a'), (('a', 'non'), ('b', 'non'), ('c', 'non'))),
             (('ii', 'b'), (('a', 'non'), ('b', '1'), ('c', '5')))))
Exemplo n.º 4
0
    def test_frame_via_fill_value_loc_h(self) -> None:

        f1 = Frame(np.arange(12).reshape(4, 3),
                   index=tuple('abcd'),
                   columns=tuple('xyz'))
        f2 = f1.via_fill_value(-1).loc[['d', 'e'], 'w']
        self.assertEqual(f2.to_pairs(), (('d', -1), ('e', -1)))
Exemplo n.º 5
0
    def test_frame_via_fill_value_loc_d(self) -> None:

        f1 = Frame(np.arange(12).reshape(4, 3),
                   index=tuple('abcd'),
                   columns=tuple('xyz'))
        s1 = f1.via_fill_value(-1).loc['q', ['w', 'y', 'z']]
        self.assertEqual(s1.to_pairs(), (('w', -1), ('y', -1), ('z', -1)))
        self.assertEqual(s1.name, 'q')
Exemplo n.º 6
0
    def test_frame_via_fill_value_loc_a(self) -> None:

        f1 = Frame(np.arange(12).reshape(4, 3),
                   index=tuple('abcd'),
                   columns=tuple('xyz'),
                   name='foo')
        f2 = f1.via_fill_value(-1).loc['c':, ['w', 'x']]
        self.assertEqual(f2.to_pairs(), (('w', (('c', -1), ('d', -1))),
                                         ('x', (('c', 6), ('d', 9)))))
Exemplo n.º 7
0
 def test_frame_via_fill_value_c(self) -> None:
     f1 = Frame(np.arange(20).reshape(4, 5), index=tuple('abcd'))
     f2 = f1.via_T.via_fill_value(0) * Series((0, 2), index=tuple('bc'))
     self.assertEqual(f2.to_pairs(),
                      ((0, (('a', 0), ('b', 0), ('c', 20), ('d', 0))),
                       (1, (('a', 0), ('b', 0), ('c', 22), ('d', 0))),
                       (2, (('a', 0), ('b', 0), ('c', 24), ('d', 0))),
                       (3, (('a', 0), ('b', 0), ('c', 26), ('d', 0))),
                       (4, (('a', 0), ('b', 0), ('c', 28), ('d', 0)))))
Exemplo n.º 8
0
    def test_frame_via_fill_value_loc_b(self) -> None:

        f1 = Frame(np.arange(12).reshape(4, 3),
                   index=tuple('abcd'),
                   columns=tuple('xyz'),
                   name='foo')
        self.assertEqual(f1.via_fill_value(-1).loc['a', 'z'], 2)
        self.assertEqual(f1.via_fill_value(-1).loc['a', 'w'], -1)
        self.assertEqual(f1.name, 'foo')
Exemplo n.º 9
0
    def test_frame_via_fill_value_loc_e1(self) -> None:

        f1 = Frame(np.arange(12).reshape(4, 3),
                   index=tuple('abcd'),
                   columns=tuple('xyz'))
        s1 = f1.via_fill_value(-1)['y']
        self.assertEqual(s1.to_pairs(),
                         (('a', 1), ('b', 4), ('c', 7), ('d', 10)))

        f2 = f1.via_fill_value(-1)[['y', 'w']]
        self.assertEqual(f2.to_pairs(),
                         (('y', (('a', 1), ('b', 4), ('c', 7), ('d', 10))),
                          ('w', (('a', -1), ('b', -1), ('c', -1), ('d', -1)))))
Exemplo n.º 10
0
    def test_display_rows_b(self) -> None:
        # this isseu was found only with Frame, not with Series
        dc = DisplayConfig(display_rows=8, type_color=False)
        self.assertEqual(
            Frame(np.arange(7, dtype=np.int64)).display(dc).to_rows(), [
                '<Frame>', '<Index> 0       <int64>', '<Index>', '0       0',
                '1       1', '2       2', '3       3', '4       4',
                '5       5', '6       6', '<int64> <int64>'
            ])

        self.assertEqual(
            Frame(np.arange(8, dtype=np.int64)).display(dc).to_rows(), [
                '<Frame>', '<Index> 0       <int64>', '<Index>', '0       0',
                '1       1', '2       2', '3       3', '4       4',
                '5       5', '6       6', '7       7', '<int64> <int64>'
            ])

        self.assertEqual(
            Frame(np.arange(9, dtype=np.int64)).display(dc).to_rows(), [
                '<Frame>', '<Index> 0       <int64>', '<Index>', '0       0',
                '1       1', '2       2', '...     ...', '6       6',
                '7       7', '8       8', '<int64> <int64>'
            ])
Exemplo n.º 11
0
    def test_display_html_pre_a(self):
        f = Frame(dict(a=(1, 2), b=(1.2, 3.4), c=(False, True)))

        expected = f.display(
            sf.DisplayConfig(display_format='html_pre', type_color=False))

        html = '''<div style="white-space: pre; font-family: monospace">&lt;Frame&gt;
&lt;Index&gt; a       b         c      &lt;&lt;U1&gt;
&lt;Index&gt;
0       1       1.2       False
1       2       3.4       True
&lt;int64&gt; &lt;int64&gt; &lt;float64&gt; &lt;bool&gt;</div>'''

        self.assertEqual(html.strip(), str(expected).strip())
Exemplo n.º 12
0
    def test_frame_via_fill_value_e(self) -> None:

        f1 = FrameGO(index=range(5))
        f1.via_fill_value(0)['a'] = Series([10, 20], index=(2, 4))
        f1.via_fill_value(-1)['b'] = Series([10, 20], index=(0, 1))

        self.assertEqual(f1.to_pairs(),
                         (('a', ((0, 0), (1, 0), (2, 10), (3, 0), (4, 20))),
                          ('b', ((0, 10), (1, 20), (2, -1), (3, -1),
                                 (4, -1)))))

        f2 = Frame(index=range(5))
        with self.assertRaises(TypeError):
            f2.via_fill_value(0)['a'] = range(5)  # type: ignore #pylint: disable=E1137
Exemplo n.º 13
0
    def test_display_type_color_a(self):

        f = Frame(dict(a=(1, 2),
                       b=(1.2, 3.4),
                       c=(False, True),
                       d=(object(), []),
                       e=(1j, 3j),
                       f=(np.datetime64('2014'), np.datetime64('2015')),
                       g=(np.datetime64('2014') - np.datetime64('2015'),
                          np.datetime64('2014') - np.datetime64('2015'))),
                  index=tuple('xy'))
        print(f)
        print(f.loc['x'])

        print(f.display(DisplayConfigs.COLOR))
        print(f.loc['x'].display(DisplayConfigs.COLOR))

        f = sf.Frame(
            dict(a=(1, 2, 3, 4), b=(True, False, True, False), c=list('qrst')))
        f = f.set_index_hierarchy(['a', 'b'])
        f = f.reindex_add_level(columns='I')
        f = f.reindex_add_level(columns='J')
        print(f)
Exemplo n.º 14
0
 def test_index_init_g(self) -> None:
     index = Index(Frame(np.arange(6).reshape((2, 3))))
     self.assertEqual(index.values.tolist(), [(0, 1, 2), (3, 4, 5)])
Exemplo n.º 15
0
    def test_display_type_color_a(self):

        f = Frame(dict(a=(1, 2),
                       b=(1.2, 3.4),
                       c=(False, True),
                       d=(object(), []),
                       e=(1j, 3j),
                       f=(np.datetime64('2014'), np.datetime64('2015')),
                       g=(np.datetime64('2014') - np.datetime64('2015'),
                          np.datetime64('2014') - np.datetime64('2015'))),
                  index=tuple('xy'))
        print(f)
        print(f.loc['x'])

        print(f.display(DisplayConfigs.COLOR))
        print(f.loc['x'].display(DisplayConfigs.COLOR))

        f = sf.Frame(
            dict(a=(1, 2, 3, 4), b=(True, False, True, False), c=list('qrst')))
        f = f.set_index_hierarchy(['a', 'b'])
        f = f.reindex_add_level(columns='I')
        f = f.reindex_add_level(columns='J')
        print(f)

        # columns = sf.IndexHierarchy.from_product((96361, 96345), (0, 1))
        # index = sf.IndexHierarchy.from_product((32155, 32175), (0, 4))
        # columns = range(4)
        # index = range(4)
        # f = sf.Frame.from_records(
        #     ([y for y in range(x, x + 4)] for x in range(4)),
        #     index=index, columns=columns)

        from itertools import product
        index = (0x2210, 0x2330)
        columns = (0x1, 0xe)
        f = Frame.from_element_loc_items(
            ((x, chr(sum(x))) for x in product(index, columns)),
            index=index,
            columns=columns,
            dtype=str)
        print(f)

        columns = list('abcdefgh')
        index = range(1, 9)

        f = sf.Frame(np.empty((8, 8), dtype='U1'),
                     columns=columns,
                     index=index)
        print(f)

        # f.display(sf.DisplayActive.get(display_format='html_datatables'))

        # f.to_html_datatables()
        columns = tuple('efgh')
        index = range(3, 0, -1)

        f = Frame.from_element_loc_items(
            (
                ((2, 'f'), chr(0x265F)),  # pawn
                ((2, 'g'), chr(0x265F)),
                ((2, 'h'), chr(0x265F)),
                ((1, 'e'), chr(0x265A)),  # king
                ((1, 'h'), chr(0x265C)),  # rook
            ),
            index=index,
            columns=columns,
            dtype=str)

        #part of Sicilian Defense Najdorf Variation
        columns = tuple('hgfe')
        index = range(6, 9)

        f = Frame.from_element_loc_items(
            (
                ((7, 'h'), chr(0x265F)),  # pawn
                ((6, 'g'), chr(0x265F)),
                ((7, 'f'), chr(0x265F)),
                ((7, 'e'), chr(0x265F)),
                ((8, 'e'), chr(0x265A)),  # king
                ((7, 'g'), chr(0x265D)),  # biship
                ((6, 'f'), chr(0x265E)),  # horse
                ((8, 'h'), chr(0x265C)),  # rook
            ),
            index=index,
            columns=columns,
            dtype=str)

        # s = Series(('', chr(0x265C), '', chr(0x265A)), index=tuple('efgh'))

        # s = Series.from_items((('f', chr(0x265C)), ('h', chr(0x265A)))).reindex(tuple('efgh'), fill_value='')

        s = Series.from_items((('f', chr(0x265C)), ('g', chr(0x265A))))

        f.assign.loc[8, :](s, fill_value='')
Exemplo n.º 16
0
 def test_frame_via_fill_value_d(self) -> None:
     f1 = Frame(np.arange(20).reshape(4, 5), index=tuple('abcd'))
     with self.assertRaises(RuntimeError):
         f2 = f1.via_T.via_fill_value(0) * Series(
             (0, 2), index=tuple('bc')).via_fill_value(1)