def test_order_by_nulls(self): rows = ( (1, 2, None), (2, None, None), (1, 1, 'c'), (1, None, 'a') ) table = Table(rows, self.column_names, self.column_types) new_table = table.order_by('two') self.assertIsNot(new_table, table) self.assertColumnNames(new_table, self.column_names) self.assertColumnTypes(new_table, [Number, Number, Text]) self.assertRows(new_table, [ rows[2], rows[0], rows[1], rows[3] ]) new_table = table.order_by('three') self.assertIsNot(new_table, table) self.assertColumnNames(new_table, self.column_names) self.assertColumnTypes(new_table, [Number, Number, Text]) self.assertRows(new_table, [ rows[3], rows[2], rows[0], rows[1] ])
def test_order_by_nulls(self): rows = ((1, 2, None), (2, None, None), (1, 1, 'c'), (1, None, 'a')) table = Table(rows, self.columns) new_table = table.order_by('two') self.assertSequenceEqual(new_table.columns['two'], (1, 2, None, None)) new_table = table.order_by('three') self.assertSequenceEqual(new_table.columns['three'], ('a', 'c', None, None))
def test_order_by_preserves_rows(self): table = Table(self.rows, self.column_names, self.column_types) table2 = table.order_by(lambda r: r['one']) table3 = table2.order_by(lambda r: r['one']) self.assertIs(table.rows[0], table2.rows[0]) self.assertIs(table2.rows[0], table3.rows[0])
def test_order_by_preserves_rows(self): table = Table(self.rows, self.columns) table2 = table.order_by(lambda r: r['one']) table3 = table2.order_by(lambda r: r['one']) self.assertIsNot(table._data[0], table2._data[0]) self.assertIs(table2._data[0], table3._data[0])
def test_order_by_preserves_rows(self): table = Table(self.rows, self.columns) table2 = table.order_by(lambda r: r['one']) table3 = table2.order_by(lambda r: r['one']) self.assertIs(table.rows[0], table2.rows[0]) self.assertIs(table2.rows[0], table3.rows[0])
def test_order_by_nulls(self): rows = ( (1, 2, None), (2, None, None), (1, 1, 'c'), (1, None, 'a') ) table = Table(rows, self.column_names, self.column_types) new_table = table.order_by('two') self.assertSequenceEqual(new_table.columns['two'], (1, 2, None, None)) new_table = table.order_by('three') self.assertSequenceEqual(new_table.columns['three'], ('a', 'c', None, None))
def test_order_by_with_row_names(self): table = Table(self.rows, self.column_names, self.column_types, row_names='three') new_table = table.order_by('two') self.assertRowNames(new_table, [u'π', 'b', 'a'])
def test_order_by_reverse(self): table = Table(self.rows, self.column_names, self.column_types) new_table = table.order_by(lambda r: r['two'], reverse=True) self.assertIsNot(new_table, table) self.assertColumnNames(new_table, self.column_names) self.assertColumnTypes(new_table, [Number, Number, Text]) self.assertRows(new_table, [self.rows[0], self.rows[1], self.rows[2]])
def test_order_by_reverse(self): table = Table(self.rows, self.columns) new_table = table.order_by(lambda r: r['two'], reverse=True) self.assertEqual(len(new_table.rows), 3) self.assertSequenceEqual(new_table.rows[0], (1, 4, 'a')) self.assertSequenceEqual(new_table.rows[1], (2, 3, 'b')) self.assertSequenceEqual(new_table.rows[2], (None, 2, u'π'))
def test_order_by_reverse(self): table = Table(self.rows, self.column_names, self.column_types) new_table = table.order_by(lambda r: r['two'], reverse=True) self.assertEqual(len(new_table.rows), 3) self.assertSequenceEqual(new_table.rows[0], (1, 4, 'a')) self.assertSequenceEqual(new_table.rows[1], (2, 3, 'b')) self.assertSequenceEqual(new_table.rows[2], (None, 2, u'π'))
def test_order_by_func(self): rows = ((1, 2, 'a'), (2, 1, 'b'), (1, 1, 'c')) table = Table(rows, self.column_names, self.column_types) new_table = table.order_by(lambda r: (r['one'], r['two'])) self.assertIsNot(new_table, table) self.assertColumnNames(new_table, self.column_names) self.assertColumnTypes(new_table, [Number, Number, Text]) self.assertRows(new_table, [rows[2], rows[0], rows[1]])
def test_order_by_func(self): rows = ((1, 2, 'a'), (2, 1, 'b'), (1, 1, 'c')) table = Table(rows, self.columns) new_table = table.order_by(lambda r: (r['one'], r['two'])) self.assertIsNot(new_table, table) self.assertEqual(len(new_table.rows), 3) self.assertSequenceEqual(new_table.rows[0], (1, 1, 'c')) self.assertSequenceEqual(new_table.rows[1], (1, 2, 'a')) self.assertSequenceEqual(new_table.rows[2], (2, 1, 'b'))
def test_order_by(self): table = Table(self.rows, self.column_names, self.column_types) new_table = table.order_by('two') self.assertIsNot(new_table, table) self.assertColumnNames(new_table, self.column_names) self.assertColumnTypes(new_table, [Number, Number, Text]) self.assertRows(new_table, [self.rows[2], self.rows[1], self.rows[0]]) # Verify old table not changed self.assertRows(table, self.rows)
def test_order_by_reverse(self): table = Table(self.rows, self.column_names, self.column_types) new_table = table.order_by(lambda r: r['two'], reverse=True) self.assertIsNot(new_table, table) self.assertColumnNames(new_table, self.column_names) self.assertColumnTypes(new_table, [Number, Number, Text]) self.assertRows(new_table, [ self.rows[0], self.rows[1], self.rows[2] ])
def test_order_by(self): table = Table(self.rows, self.column_names, self.column_types) new_table = table.order_by('two') self.assertIsNot(new_table, table) self.assertEqual(len(new_table.rows), 3) self.assertSequenceEqual(new_table.rows[0], (None, 2, u'π')) self.assertSequenceEqual(new_table.rows[1], (2, 3, 'b')) self.assertSequenceEqual(new_table.rows[2], (1, 4, 'a')) # Verify old table not changed self.assertSequenceEqual(table.rows[0], (1, 4, 'a')) self.assertSequenceEqual(table.rows[1], (2, 3, 'b')) self.assertSequenceEqual(table.rows[2], (None, 2, u'π'))
def test_order_by(self): table = Table(self.rows, self.columns) new_table = table.order_by('two') self.assertIsNot(new_table, table) self.assertEqual(len(new_table.rows), 3) self.assertSequenceEqual(new_table.rows[0], (None, 2, u'π')) self.assertSequenceEqual(new_table.rows[1], (2, 3, 'b')) self.assertSequenceEqual(new_table.rows[2], (1, 4, 'a')) # Verify old table not changed self.assertSequenceEqual(table.rows[0], (1, 4, 'a')) self.assertSequenceEqual(table.rows[1], (2, 3, 'b')) self.assertSequenceEqual(table.rows[2], (None, 2, u'π'))
def test_order_by_func(self): rows = ( (1, 2, 'a'), (2, 1, 'b'), (1, 1, 'c') ) table = Table(rows, self.column_names, self.column_types) new_table = table.order_by(lambda r: (r['one'], r['two'])) self.assertIsNot(new_table, table) self.assertEqual(len(new_table.rows), 3) self.assertSequenceEqual(new_table.rows[0], (1, 1, 'c')) self.assertSequenceEqual(new_table.rows[1], (1, 2, 'a')) self.assertSequenceEqual(new_table.rows[2], (2, 1, 'b'))
def test_order_by(self): table = Table(self.rows, self.column_names, self.column_types) new_table = table.order_by('two') self.assertIsNot(new_table, table) self.assertColumnNames(new_table, self.column_names) self.assertColumnTypes(new_table, [Number, Number, Text]) self.assertRows(new_table, [ self.rows[2], self.rows[1], self.rows[0] ]) # Verify old table not changed self.assertRows(table, self.rows)
def test_order_by_nulls(self): self.rows = ( (1, 4, 'a'), (None, 3, 'c'), (2, 3, 'b'), (None, 2, u'π') ) table = Table(self.rows, self.column_names, self.column_types) new_table = table.order_by('one') self.assertIsNot(new_table, table) self.assertEqual(len(new_table.rows), 3) self.assertSequenceEqual(new_table.rows[0], (1, 4, 'a')) self.assertSequenceEqual(new_table.rows[1], (2, 3, 'b')) self.assertSequenceEqual(new_table.rows[2], (None, 3, 'c')) self.assertSequenceEqual(new_table.rows[3], (None, 2, u'π'))
def test_order_by_nulls(self): self.rows = ( (1, 4, 'a'), (None, 3, 'c'), (2, 3, 'b'), (None, 2, u'π') ) table = Table(self.rows, self.columns) new_table = table.order_by('one') self.assertIsNot(new_table, table) self.assertEqual(len(new_table.rows), 3) self.assertSequenceEqual(new_table.rows[0], (1, 4, 'a')) self.assertSequenceEqual(new_table.rows[1], (2, 3, 'b')) self.assertSequenceEqual(new_table.rows[2], (None, 3, 'c')) self.assertSequenceEqual(new_table.rows[3], (None, 2, u'π'))
def test_order_by_func(self): rows = ( (1, 2, 'a'), (2, 1, 'b'), (1, 1, 'c') ) table = Table(rows, self.column_names, self.column_types) new_table = table.order_by(lambda r: (r['one'], r['two'])) self.assertIsNot(new_table, table) self.assertColumnNames(new_table, self.column_names) self.assertColumnTypes(new_table, [Number, Number, Text]) self.assertRows(new_table, [ rows[2], rows[0], rows[1] ])
def test_order_by_empty_table(self): table = Table([], self.column_names) new_table = table.order_by('three') # noqa
# Aggregate totals for all counties totals = counties.aggregate([ ('total_cost', Sum(), 'total_cost_sum') ]) totals = totals.order_by('total_cost_sum', reverse=True).rows[:5] print('Five most spendy counties:') for i, row in enumerate(totals): text = '# {}: {}, ${:,}'.format(i + 1, row['group'], row['total_cost_sum']) print(text) # Get the five most recent purchases recent_five = table.order_by('ship_date', reverse=True).rows[:5] print('Five most recent purchases:') for row in recent_five: text = '{}: {} {}, ${:,}'.format(row['ship_date'], row['quantity'], row['item_name'], row['total_cost']) print(text) # Calculate the standard of deviation for the total_costs stdev = table.columns['total_cost'].aggregate(StDev()) print('Standard deviation of total_cost: %.2f' % stdev) # How many roborts were purchased? robots = table.where(lambda r: 'ROBOT' in (r['item_name'] or [])).columns['quantity'].aggregate(Sum())
def test_order_by_with_row_names(self): table = Table(self.rows, self.column_names, self.column_types, row_names='three') new_table = table.order_by('two') self.assertSequenceEqual(new_table.rows[u'a'], (1, 4, 'a')) self.assertSequenceEqual(new_table.row_names, (u'π', 'b', 'a'))
def test_order_by_with_row_names(self): table = Table(self.rows, self.columns, row_names='three') new_table = table.order_by('two') self.assertSequenceEqual(new_table.rows[u'a'], (1, 4, 'a')) self.assertSequenceEqual(new_table.row_names, (u'π', 'b', 'a'))