Exemple #1
0
    def test_percentiles(self):
        with warnings.catch_warnings():
            warnings.simplefilter('error')

            with self.assertRaises(NullCalculationWarning):
                Percentiles('one').validate(self.table)

        with self.assertRaises(DataTypeError):
            Percentiles('three').validate(self.table)

        warnings.simplefilter('ignore')

        try:
            Percentiles('two').validate(self.table)
        finally:
            warnings.resetwarnings()

        rows = [(n, ) for n in range(1, 1001)]

        table = Table(rows, ['ints'], [self.number_type])

        percentiles = Percentiles('ints').run(table)

        self.assertEqual(percentiles[0], Decimal('1'))
        self.assertEqual(percentiles[25], Decimal('250.5'))
        self.assertEqual(percentiles[50], Decimal('500.5'))
        self.assertEqual(percentiles[75], Decimal('750.5'))
        self.assertEqual(percentiles[99], Decimal('990.5'))
        self.assertEqual(percentiles[100], Decimal('1000'))
Exemple #2
0
    def prepare(self, table):
        column = table.columns[self._column_name]

        if not isinstance(column.data_type, Number):
            raise DataTypeError(
                'PercentileRank column must contain Number data.')

        self._percentiles = Percentiles(self._column_name).run(table)
    def run(self, table):
        """
        :returns:
            :class:`int`
        """
        percentiles = Percentiles(self._column_name).run(table)

        new_column = []

        for row in table.rows:
            new_column.append(percentiles.locate(row[self._column_name]))

        return new_column
    def run(self, table):
        """
        :returns:
            :class:`int`
        """
        percentiles = Percentiles(self._column_name).run(table)

        new_column = []

        for row in table.rows:
            new_column.append(percentiles.locate(row[self._column_name]))

        return new_column
Exemple #5
0
    def prepare(self, table):
        column = table.columns[self._column_name]

        if not isinstance(column.data_type, Number):
            raise DataTypeError('PercentileRank column must contain Number data.')

        self._percentiles = Percentiles(self._column_name).run(table)
Exemple #6
0
    def test_percentiles_locate(self):
        rows = [(n, ) for n in range(1, 1001)]

        table = Table(rows, ['ints'], [self.number_type])

        percentiles = Percentiles('ints').run(table)

        self.assertEqual(percentiles.locate(251), Decimal('25'))
        self.assertEqual(percentiles.locate(260), Decimal('25'))
        self.assertEqual(percentiles.locate(261), Decimal('26'))

        with self.assertRaises(ValueError):
            percentiles.locate(0)

        with self.assertRaises(ValueError):
            percentiles.locate(1012)
Exemple #7
0
class PercentileRank(Rank):
    """
    Assign each value in a column to the percentile into which it falls.

    See :class:`.Percentiles` for implementation details.
    """
    def prepare(self, table):
        column = table.columns[self._column_name]

        if not isinstance(column.data_type, Number):
            raise DataTypeError('PercentileRank column must contain Number data.')

        self._percentiles = Percentiles(self._column_name).run(table)

    def run(self, row):
        """
        :returns:
            :class:`int`
        """
        return self._percentiles.locate(row[self._column_name])
Exemple #8
0
class PercentileRank(Rank):
    """
    Assign each value in a column to the percentile into which it falls.

    See :class:`.Percentiles` for implementation details.
    """
    def prepare(self, table):
        column = table.columns[self._column_name]

        if not isinstance(column.data_type, Number):
            raise DataTypeError(
                'PercentileRank column must contain Number data.')

        self._percentiles = Percentiles(self._column_name).run(table)

    def run(self, row):
        """
        :returns:
            :class:`int`
        """
        return self._percentiles.locate(row[self._column_name])
Exemple #9
0
 def test_percentiles_all_nulls(self):
     self.assertEqual(
         Percentiles('four').run(self.table), Quantiles([None] * 101))