コード例 #1
0
    def run(self, column):
        """
        :returns: :class:`decimal.Decimal`.
        """
        if not isinstance(column, NumberColumn):
            raise UnsupportedAggregationError(self, column)

        return column.sum()
コード例 #2
0
    def run(self, column):
        """
        :returns: :class:`int`.
        """
        if not isinstance(column, TextColumn):
            raise UnsupportedAggregationError(self, column)

        return max([len(d) for d in column.get_data_without_nulls()])
コード例 #3
0
    def get_aggregate_column_type(self, column):
        if isinstance(column, DateColumn):
            return DateType()
        elif isinstance(column, DateTimeColumn):
            return DateTimeType()
        elif isinstance(column, NumberColumn):
            return NumberType()

        raise UnsupportedAggregationError(self, column)
コード例 #4
0
    def run(self, column):
        """
        :returns: :class:`datetime.date`
        """
        supported_columns = (DateColumn, DateTimeColumn, NumberColumn)

        if not any(isinstance(column, t) for t in supported_columns):
            raise UnsupportedAggregationError(self, column)

        return max(column.get_data_without_nulls())
コード例 #5
0
ファイル: aggregators.py プロジェクト: immarvin/agate
    def run(self, column):
        """
        :returns: :class:`decimal.Decimal`.
        """
        super(StDev, self).run(column)

        if not isinstance(column, NumberColumn):
            raise UnsupportedAggregationError(self, column)

        return column._variance().sqrt()
コード例 #6
0
ファイル: aggregations.py プロジェクト: dwillis/agate
    def get_aggregate_data_type(self, table):
        """
        Get the data type that should be used when using this aggregation with
        a :class:`.TableSet` to produce a new column.

        Should raise :class:`.UnsupportedAggregationError` if this column does
        not support aggregation into a :class:`.TableSet`. (For example, if it
        does not return a single value.)
        """
        raise UnsupportedAggregationError()
コード例 #7
0
    def run(self, column):
        """
        :returns: :class:`decimal.Decimal`.
        """
        if not isinstance(column, NumberColumn):
            raise UnsupportedAggregationError(self, column)

        if column.has_nulls():
            raise NullCalculationError

        return column.variance().sqrt()
コード例 #8
0
ファイル: aggregators.py プロジェクト: immarvin/agate
    def run(self, column):
        """
        :returns: :class:`decimal.Decimal`.
        """
        super(IQR, self).run(column)

        if not isinstance(column, NumberColumn):
            raise UnsupportedAggregationError(self, column)

        percentiles = column.percentiles()

        return percentiles[75] - percentiles[25]
コード例 #9
0
    def run(self, column):
        """
        :returns: :class:`decimal.Decimal`.
        """
        if not isinstance(column, NumberColumn):
            raise UnsupportedAggregationError(self, column)

        if column.has_nulls():
            raise NullCalculationError

        percentiles = column.percentiles()

        return percentiles[75] - percentiles[25]
コード例 #10
0
ファイル: aggregators.py プロジェクト: immarvin/agate
    def run(self, column):
        """
        :returns: :class:`decimal.Decimal`.
        """
        super(MAD, self).run(column)

        if not isinstance(column, NumberColumn):
            raise UnsupportedAggregationError(self, column)

        data = column._data_sorted()
        m = column.percentiles()[50]

        return self._median(tuple(abs(n - m) for n in data))
コード例 #11
0
    def run(self, column):
        """
        :returns: :class:`decimal.Decimal`.
        """
        if not isinstance(column, NumberColumn):
            raise UnsupportedAggregationError(self, column)

        if column.has_nulls():
            raise NullCalculationError

        data = column.get_data_sorted()
        m = column.percentiles()[50]

        return self._median(tuple(abs(n - m) for n in data))
コード例 #12
0
ファイル: aggregators.py プロジェクト: immarvin/agate
    def run(self, column):
        """
        :returns: :class:`decimal.Decimal`.
        """
        super(Mode, self).run(column)

        if not isinstance(column, NumberColumn):
            raise UnsupportedAggregationError(self, column)

        data = column._data()
        state = defaultdict(int)

        for n in data:
            state[n] += 1

        return max(state.keys(), key=lambda x: state[x])
コード例 #13
0
    def run(self, column):
        """
        :returns: :class:`decimal.Decimal`.
        """
        if not isinstance(column, NumberColumn):
            raise UnsupportedAggregationError(self, column)

        if column.has_nulls():
            raise NullCalculationError

        data = column.get_data()
        state = defaultdict(int)

        for n in data:
            state[n] += 1

        return max(state.keys(), key=lambda x: state[x])