Coverage for jstark / grocery / average_quantity_per_basket.py: 100%

16 statements  

« prev     ^ index     » next       coverage.py v7.13.4, created at 2026-03-23 22:34 +0000

1"""AvgQuantityPerBasket feature""" 

2 

3import pyspark.sql.functions as f 

4from pyspark.sql import Column 

5 

6from jstark.features.feature import DerivedFeature 

7from jstark.features.quantity import Quantity 

8from .basket_count import BasketCount 

9 

10 

11class AvgQuantityPerBasket(DerivedFeature): 

12 def column_expression(self) -> Column: 

13 return f.try_divide( 

14 Quantity( 

15 self.as_at, 

16 self.feature_period, 

17 first_day_of_week=self._first_day_of_week, 

18 ).column, 

19 BasketCount( 

20 self.as_at, 

21 self.feature_period, 

22 first_day_of_week=self._first_day_of_week, 

23 ).column, 

24 ) 

25 

26 @property 

27 def description_subject(self) -> str: 

28 return "Average Quantity per Basket" 

29 

30 @property 

31 def commentary(self) -> str: 

32 return ( 

33 "Total Quantity divided by the number of baskets. " 

34 + "Very useful to know how large, on average, each basket is." 

35 ) 

36 

37 def default_value(self) -> Column: 

38 return f.lit(None)