Exemplo n.º 1
0
    def run(self, table):
        """
        :returns:
            An instance of :class:`Quantiles`.
        """
        column = table.columns[self._column_name]

        data = column.values_without_nulls_sorted()

        if not data:
            return Quantiles([None for percentile in range(101)])

        # Zeroth percentile is first datum
        quantiles = [data[0]]

        for percentile in range(1, 100):
            k = len(data) * (float(percentile) / 100)

            low = max(1, int(math.ceil(k)))
            high = min(len(data), int(math.floor(k + 1)))

            # No remainder
            if low == high:
                value = data[low - 1]
            # Remainder
            else:
                value = (data[low - 1] + data[high - 1]) / 2

            quantiles.append(value)

        # Hundredth percentile is final datum
        quantiles.append(data[-1])

        return Quantiles(quantiles)
Exemplo n.º 2
0
    def run(self, column):
        """
        :returns: An array of :class:`decimal.Decimal`.
        """
        if column.aggregate(HasNulls()):
            warn_null_calculation(self, column)

        data = column.values_without_nulls_sorted()

        # Zeroth percentile is first datum
        quantiles = [data[0]]

        for percentile in range(1, 100):
            k = len(data) * (float(percentile) / 100)

            low = max(1, int(math.ceil(k)))
            high = min(len(data), int(math.floor(k + 1)))

            # No remainder
            if low == high:
                value = data[low - 1]
            # Remainder
            else:
                value = (data[low - 1] + data[high - 1]) / 2

            quantiles.append(value)

        # Hundredth percentile is final datum
        quantiles.append(data[-1])

        return Quantiles(quantiles)
Exemplo n.º 3
0
    def run(self, table):
        """
        :returns:
            An instance of :class:`Quantiles`.
        """
        percentiles = Percentiles(self._column_name).run(table)

        return Quantiles([percentiles[i] for i in range(0, 101, 25)])
Exemplo n.º 4
0
class TestQuantiles(unittest.TestCase):
    def setUp(self):
        self.values = [0, 10, 20, 30, 40, 50]
        self.quantiles = Quantiles(self.values)

    def test_methods(self):
        self.assertEqual(len(self.quantiles), 6)
        self.assertEqual(self.quantiles[2], 20)
        self.assertSequenceEqual(list(self.quantiles), self.values)
        self.assertEqual(repr(self.quantiles), repr(self.values))

    def test_locate(self):
        self.assertEqual(self.quantiles.locate(25), 2)
        self.assertEqual(self.quantiles.locate(40), 4)

        with self.assertRaises(ValueError):
            self.quantiles.locate(-10)

        with self.assertRaises(ValueError):
            self.quantiles.locate(51)
Exemplo n.º 5
0
class TestQuantiles(unittest.TestCase):
    def setUp(self):
        self.values = [0, 10, 20, 30, 40, 50]
        self.quantiles = Quantiles(self.values)

    def test_methods(self):
        self.assertEqual(len(self.quantiles), 6)
        self.assertEqual(self.quantiles[2], 20)
        self.assertSequenceEqual(list(self.quantiles), self.values)
        self.assertEqual(repr(self.quantiles), repr(self.values))

    def test_locate(self):
        self.assertEqual(self.quantiles.locate(25), 2)
        self.assertEqual(self.quantiles.locate(40), 4)

        with self.assertRaises(ValueError):
            self.quantiles.locate(-10)

        with self.assertRaises(ValueError):
            self.quantiles.locate(51)
Exemplo n.º 6
0
 def setUp(self):
     self.values = [0, 10, 20, 30, 40, 50]
     self.quantiles = Quantiles(self.values)
Exemplo n.º 7
0
 def setUp(self):
     self.values = [0, 10, 20, 30, 40, 50]
     self.quantiles = Quantiles(self.values)
Exemplo n.º 8
0
 def test_deciles_all_nulls(self):
     self.assertEqual(
         Deciles('four').run(self.table), Quantiles([None] * 11))
Exemplo n.º 9
0
 def test_quintiles_all_nulls(self):
     self.assertEqual(
         Quintiles('four').run(self.table), Quantiles([None] * 6))
Exemplo n.º 10
0
 def test_percentiles_all_nulls(self):
     self.assertEqual(
         Percentiles('four').run(self.table), Quantiles([None] * 101))
Exemplo n.º 11
0
    def run(self, column):
        percentiles = column.aggregate(Percentiles())

        return Quantiles([percentiles[i] for i in range(0, 101, 10)])