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
« 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
4from pyspark.sql import Column
5import pyspark.sql.functions as f
7from jstark.feature_period import FeaturePeriod
8from .basket_count import BasketCount
11class AverageBasket(DerivedFeature):
12 "Average baskets per given periodunitofmeasure feature"
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 )
27 def default_value(self) -> Column:
28 return f.lit(None)
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 )
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 )