Source code for featuretools.primitives.standard.aggregation.count_outside_nth_std
import numpy as np
from woodwork.column_schema import ColumnSchema
from woodwork.logical_types import Integer
from featuretools.primitives.base.aggregation_primitive_base import AggregationPrimitive
[docs]class CountOutsideNthSTD(AggregationPrimitive):
    """Determines the number of observations that lie outside
        the first N standard deviations.
    Args:
        n (float): Number of standard deviations. Default is 1
    Examples:
        >>> count_outside_nth_std = CountOutsideNthSTD(n=1.5)
        >>> count_outside_nth_std([1, 10, 15, 20, 100])
        1
    """
    name = "count_outside_nth_std"
    input_types = [ColumnSchema(semantic_tags={"numeric"})]
    return_type = ColumnSchema(logical_type=Integer, semantic_tags={"numeric"})
    stack_on_self = False
    default_value = 0
[docs]    def __init__(self, n=1):
        if n < 0:
            raise ValueError("n must be a positive number")
        self.n = n 
    def get_function(self):
        def count_outside_nth_std(x):
            cond = np.abs(x - np.mean(x)) > np.std(x) * self.n
            return cond.sum()
        return count_outside_nth_std