Coverage for jstark/features/average_basket.py: 100%

16 statements  

« prev     ^ index     » next       coverage.py v7.4.3, created at 2024-02-25 20:09 +0000

1"Average baskets per given periodunitofmeasure feature" 

2from .feature import DerivedFeature 

3 

4from pyspark.sql import Column 

5import pyspark.sql.functions as f 

6 

7from jstark.feature_period import FeaturePeriod 

8from .basket_count import BasketCount 

9 

10 

11class AverageBasket(DerivedFeature): 

12 "Average baskets per given periodunitofmeasure feature" 

13 

14 def column_expression(self) -> Column: 

15 return ( 

16 BasketCount( 

17 as_at=self.as_at, 

18 feature_period=FeaturePeriod( 

19 self.feature_period.period_unit_of_measure, 

20 self.feature_period.start, 

21 self.feature_period.end, 

22 ), 

23 ).column 

24 / self.feature_period.number_of_periods 

25 ) 

26 

27 def default_value(self) -> Column: 

28 return f.lit(None) 

29 

30 @property 

31 def description_subject(self) -> str: 

32 return ( 

33 "Average number of baskets per " 

34 + f"{self.feature_period.period_unit_of_measure.name.lower()}" 

35 ) 

36 

37 @property 

38 def feature_name(self) -> str: 

39 return ( 

40 "AverageBasketsPer" 

41 + f"{self.feature_period.period_unit_of_measure.name.title()}" 

42 + f"_{self.feature_period.mnemonic}" 

43 )