How to use#

[1]:
import warnings
warnings.simplefilter(action='ignore', category=FutureWarning)

Init Pyspark#

[2]:
import pyspark.sql.functions as F
from pyspark.sql import SparkSession
[3]:
spark = (
    SparkSession.builder.master("local[*]")
    .config("spark.executor.memory", "6g")
    .config("spark.driver.memory", "6g")
    .getOrCreate()
)

spark.sparkContext.setLogLevel("ERROR")

spark.conf.set("spark.sql.repl.eagerEval.enabled", True)
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
23/02/26 12:48:37 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

Create a sample dataset#

[4]:
import numpy as np
import pandas as pd
[5]:
def make_transactions(n=10000):
    return pd.DataFrame(
        data={
            "transaction_id": range(n),
            "consumer_id": [np.random.choice(list(range(100))) for _ in range(n)],
            "paid_value": np.random.normal(1000, 100, n),
            "discount": [np.random.choice([10, 0, 25]) for _ in range(n)],
            "product_type": [
                str(np.random.choice(["a", "b", "c", "d", "e", "f", "g", "h"])) for _ in range(n)
            ],
            "buy_type": [
                str(
                    np.random.choice(
                        ["f_1", "f_2", "f_3", "f_4", "f_5", "f_6", "f_7", "f_8", "f_9"]
                    )
                )
                for _ in range(n)
            ],
            "paymnent_date": pd.date_range("2022-01-01", "2023-01-01", periods=n),
        }
    )

[6]:
make_transactions().head()
[6]:
transaction_id consumer_id paid_value discount product_type buy_type paymnent_date
0 0 84 938.706334 25 d f_3 2022-01-01 00:00:00.000000000
1 1 74 978.164629 0 f f_5 2022-01-01 00:52:33.915391539
2 2 95 1013.975424 25 h f_1 2022-01-01 01:45:07.830783078
3 3 21 1000.291093 0 g f_9 2022-01-01 02:37:41.746174617
4 4 32 1115.160083 0 f f_3 2022-01-01 03:30:15.661566156

Generate public#

We will select the monthly active users as our public.

[7]:
transactions = spark.createDataFrame(make_transactions())

public = transactions.select(F.col("consumer_id").alias("consumer_id_ref"), F.to_date(F.date_trunc("month", "paymnent_date")).alias("date_ref")).distinct()

Generate Dataset#

We will defime a 30 days window to build features

In our case it means that we wil select every transaction in the window defined by date_ref and date_ref - 30 days.

[8]:
from autofeats.types import Dataset
[9]:
df = Dataset(
    table=transactions,
    primary_key_col="transaction_id",
    table_join_key_col="consumer_id",
    table_join_date_col="paymnent_date",
    numerical_cols=["paid_value", "discount"],
    categorical_cols=["product_type", "buy_type"],
    public=public,
    public_join_key_col="consumer_id_ref",
    public_join_date_col="date_ref",
    subtract_in_end=30
)

[10]:
from autofeats import make_features

numerical_statistics example#

[11]:
features = make_features.run(
    df=df,
    suites=[
        "numerical_statistics",
    ],
    options={},
)

print(f"Features created: {features.columns}")

print(f"Number of features: {len(features.columns)}")
Features created: ['consumer_id_ref', 'date_ref', 'sum___paid_value', 'sum___discount', 'mean___paid_value', 'mean___discount', 'stddev___paid_value', 'stddev___discount', 'min___paid_value', 'min___discount', 'max___paid_value', 'max___discount', 'kurtosis___paid_value', 'kurtosis___discount', 'skewness___paid_value', 'skewness___discount']
Number of features: 16
[12]:
features.limit(5)

[12]:
consumer_id_refdate_refsum___paid_valuesum___discountmean___paid_valuemean___discountstddev___paid_valuestddev___discountmin___paid_valuemin___discountmax___paid_valuemax___discountkurtosis___paid_valuekurtosis___discountskewness___paid_valueskewness___discount
292022-01-01nullnullnullnullnullnullnullnullnullnullnullnullnullnull
292022-02-018853.40968120304135983.712186800337815.086.8300381351163812.24744871391589861.529967174590601126.496144705003425-0.9476942065305236-1.73437499999999980.07809048749090707-0.3788861141556918
262022-02-0111788.166930957694951071.65153917797228.63636363636363790.9490634918916111.2006493318265869.592119742312201165.640254915553250.16024140568439948-1.263311279143037-1.11801887802843260.6930338494981549
262022-01-01nullnullnullnullnullnullnullnullnullnullnullnullnullnull
292022-03-017154.169974038491201022.024282005498517.14285714285714280.7877903271225510.350983390135314913.290784073820901114.748740293195225-1.5832487921323395-1.1907407407407404-0.1951677930825345-0.6211299937499416

numerical_in_categorical_groups example#

[13]:
features = make_features.run(
    df=df,
    suites=[
        "numerical_in_categorical_groups",
    ],
    options={},
)

print(f"Features created: {features.columns}")

print(f"Number of features: {len(features.columns)}")
Features created: ['consumer_id_ref', 'date_ref', 'product_type=g__sum___paid_value', 'product_type=g__sum___discount', 'product_type=g__mean___paid_value', 'product_type=g__mean___discount', 'product_type=g__stddev___paid_value', 'product_type=g__stddev___discount', 'product_type=g__min___paid_value', 'product_type=g__min___discount', 'product_type=g__max___paid_value', 'product_type=g__max___discount', 'product_type=g__kurtosis___paid_value', 'product_type=g__kurtosis___discount', 'product_type=g__skewness___paid_value', 'product_type=g__skewness___discount', 'product_type=f__sum___paid_value', 'product_type=f__sum___discount', 'product_type=f__mean___paid_value', 'product_type=f__mean___discount', 'product_type=f__stddev___paid_value', 'product_type=f__stddev___discount', 'product_type=f__min___paid_value', 'product_type=f__min___discount', 'product_type=f__max___paid_value', 'product_type=f__max___discount', 'product_type=f__kurtosis___paid_value', 'product_type=f__kurtosis___discount', 'product_type=f__skewness___paid_value', 'product_type=f__skewness___discount', 'product_type=e__sum___paid_value', 'product_type=e__sum___discount', 'product_type=e__mean___paid_value', 'product_type=e__mean___discount', 'product_type=e__stddev___paid_value', 'product_type=e__stddev___discount', 'product_type=e__min___paid_value', 'product_type=e__min___discount', 'product_type=e__max___paid_value', 'product_type=e__max___discount', 'product_type=e__kurtosis___paid_value', 'product_type=e__kurtosis___discount', 'product_type=e__skewness___paid_value', 'product_type=e__skewness___discount', 'product_type=h__sum___paid_value', 'product_type=h__sum___discount', 'product_type=h__mean___paid_value', 'product_type=h__mean___discount', 'product_type=h__stddev___paid_value', 'product_type=h__stddev___discount', 'product_type=h__min___paid_value', 'product_type=h__min___discount', 'product_type=h__max___paid_value', 'product_type=h__max___discount', 'product_type=h__kurtosis___paid_value', 'product_type=h__kurtosis___discount', 'product_type=h__skewness___paid_value', 'product_type=h__skewness___discount', 'product_type=d__sum___paid_value', 'product_type=d__sum___discount', 'product_type=d__mean___paid_value', 'product_type=d__mean___discount', 'product_type=d__stddev___paid_value', 'product_type=d__stddev___discount', 'product_type=d__min___paid_value', 'product_type=d__min___discount', 'product_type=d__max___paid_value', 'product_type=d__max___discount', 'product_type=d__kurtosis___paid_value', 'product_type=d__kurtosis___discount', 'product_type=d__skewness___paid_value', 'product_type=d__skewness___discount', 'product_type=c__sum___paid_value', 'product_type=c__sum___discount', 'product_type=c__mean___paid_value', 'product_type=c__mean___discount', 'product_type=c__stddev___paid_value', 'product_type=c__stddev___discount', 'product_type=c__min___paid_value', 'product_type=c__min___discount', 'product_type=c__max___paid_value', 'product_type=c__max___discount', 'product_type=c__kurtosis___paid_value', 'product_type=c__kurtosis___discount', 'product_type=c__skewness___paid_value', 'product_type=c__skewness___discount', 'product_type=b__sum___paid_value', 'product_type=b__sum___discount', 'product_type=b__mean___paid_value', 'product_type=b__mean___discount', 'product_type=b__stddev___paid_value', 'product_type=b__stddev___discount', 'product_type=b__min___paid_value', 'product_type=b__min___discount', 'product_type=b__max___paid_value', 'product_type=b__max___discount', 'product_type=b__kurtosis___paid_value', 'product_type=b__kurtosis___discount', 'product_type=b__skewness___paid_value', 'product_type=b__skewness___discount', 'product_type=a__sum___paid_value', 'product_type=a__sum___discount', 'product_type=a__mean___paid_value', 'product_type=a__mean___discount', 'product_type=a__stddev___paid_value', 'product_type=a__stddev___discount', 'product_type=a__min___paid_value', 'product_type=a__min___discount', 'product_type=a__max___paid_value', 'product_type=a__max___discount', 'product_type=a__kurtosis___paid_value', 'product_type=a__kurtosis___discount', 'product_type=a__skewness___paid_value', 'product_type=a__skewness___discount', 'buy_type=f_3__sum___paid_value', 'buy_type=f_3__sum___discount', 'buy_type=f_3__mean___paid_value', 'buy_type=f_3__mean___discount', 'buy_type=f_3__stddev___paid_value', 'buy_type=f_3__stddev___discount', 'buy_type=f_3__min___paid_value', 'buy_type=f_3__min___discount', 'buy_type=f_3__max___paid_value', 'buy_type=f_3__max___discount', 'buy_type=f_3__kurtosis___paid_value', 'buy_type=f_3__kurtosis___discount', 'buy_type=f_3__skewness___paid_value', 'buy_type=f_3__skewness___discount', 'buy_type=f_5__sum___paid_value', 'buy_type=f_5__sum___discount', 'buy_type=f_5__mean___paid_value', 'buy_type=f_5__mean___discount', 'buy_type=f_5__stddev___paid_value', 'buy_type=f_5__stddev___discount', 'buy_type=f_5__min___paid_value', 'buy_type=f_5__min___discount', 'buy_type=f_5__max___paid_value', 'buy_type=f_5__max___discount', 'buy_type=f_5__kurtosis___paid_value', 'buy_type=f_5__kurtosis___discount', 'buy_type=f_5__skewness___paid_value', 'buy_type=f_5__skewness___discount', 'buy_type=f_8__sum___paid_value', 'buy_type=f_8__sum___discount', 'buy_type=f_8__mean___paid_value', 'buy_type=f_8__mean___discount', 'buy_type=f_8__stddev___paid_value', 'buy_type=f_8__stddev___discount', 'buy_type=f_8__min___paid_value', 'buy_type=f_8__min___discount', 'buy_type=f_8__max___paid_value', 'buy_type=f_8__max___discount', 'buy_type=f_8__kurtosis___paid_value', 'buy_type=f_8__kurtosis___discount', 'buy_type=f_8__skewness___paid_value', 'buy_type=f_8__skewness___discount', 'buy_type=f_4__sum___paid_value', 'buy_type=f_4__sum___discount', 'buy_type=f_4__mean___paid_value', 'buy_type=f_4__mean___discount', 'buy_type=f_4__stddev___paid_value', 'buy_type=f_4__stddev___discount', 'buy_type=f_4__min___paid_value', 'buy_type=f_4__min___discount', 'buy_type=f_4__max___paid_value', 'buy_type=f_4__max___discount', 'buy_type=f_4__kurtosis___paid_value', 'buy_type=f_4__kurtosis___discount', 'buy_type=f_4__skewness___paid_value', 'buy_type=f_4__skewness___discount', 'buy_type=f_2__sum___paid_value', 'buy_type=f_2__sum___discount', 'buy_type=f_2__mean___paid_value', 'buy_type=f_2__mean___discount', 'buy_type=f_2__stddev___paid_value', 'buy_type=f_2__stddev___discount', 'buy_type=f_2__min___paid_value', 'buy_type=f_2__min___discount', 'buy_type=f_2__max___paid_value', 'buy_type=f_2__max___discount', 'buy_type=f_2__kurtosis___paid_value', 'buy_type=f_2__kurtosis___discount', 'buy_type=f_2__skewness___paid_value', 'buy_type=f_2__skewness___discount', 'buy_type=f_9__sum___paid_value', 'buy_type=f_9__sum___discount', 'buy_type=f_9__mean___paid_value', 'buy_type=f_9__mean___discount', 'buy_type=f_9__stddev___paid_value', 'buy_type=f_9__stddev___discount', 'buy_type=f_9__min___paid_value', 'buy_type=f_9__min___discount', 'buy_type=f_9__max___paid_value', 'buy_type=f_9__max___discount', 'buy_type=f_9__kurtosis___paid_value', 'buy_type=f_9__kurtosis___discount', 'buy_type=f_9__skewness___paid_value', 'buy_type=f_9__skewness___discount', 'buy_type=f_1__sum___paid_value', 'buy_type=f_1__sum___discount', 'buy_type=f_1__mean___paid_value', 'buy_type=f_1__mean___discount', 'buy_type=f_1__stddev___paid_value', 'buy_type=f_1__stddev___discount', 'buy_type=f_1__min___paid_value', 'buy_type=f_1__min___discount', 'buy_type=f_1__max___paid_value', 'buy_type=f_1__max___discount', 'buy_type=f_1__kurtosis___paid_value', 'buy_type=f_1__kurtosis___discount', 'buy_type=f_1__skewness___paid_value', 'buy_type=f_1__skewness___discount', 'buy_type=f_7__sum___paid_value', 'buy_type=f_7__sum___discount', 'buy_type=f_7__mean___paid_value', 'buy_type=f_7__mean___discount', 'buy_type=f_7__stddev___paid_value', 'buy_type=f_7__stddev___discount', 'buy_type=f_7__min___paid_value', 'buy_type=f_7__min___discount', 'buy_type=f_7__max___paid_value', 'buy_type=f_7__max___discount', 'buy_type=f_7__kurtosis___paid_value', 'buy_type=f_7__kurtosis___discount', 'buy_type=f_7__skewness___paid_value', 'buy_type=f_7__skewness___discount', 'buy_type=f_6__sum___paid_value', 'buy_type=f_6__sum___discount', 'buy_type=f_6__mean___paid_value', 'buy_type=f_6__mean___discount', 'buy_type=f_6__stddev___paid_value', 'buy_type=f_6__stddev___discount', 'buy_type=f_6__min___paid_value', 'buy_type=f_6__min___discount', 'buy_type=f_6__max___paid_value', 'buy_type=f_6__max___discount', 'buy_type=f_6__kurtosis___paid_value', 'buy_type=f_6__kurtosis___discount', 'buy_type=f_6__skewness___paid_value', 'buy_type=f_6__skewness___discount']
Number of features: 240
[14]:
features.limit(5)

[14]:
consumer_id_refdate_refproduct_type=g__sum___paid_valueproduct_type=g__sum___discountproduct_type=g__mean___paid_valueproduct_type=g__mean___discountproduct_type=g__stddev___paid_valueproduct_type=g__stddev___discountproduct_type=g__min___paid_valueproduct_type=g__min___discountproduct_type=g__max___paid_valueproduct_type=g__max___discountproduct_type=g__kurtosis___paid_valueproduct_type=g__kurtosis___discountproduct_type=g__skewness___paid_valueproduct_type=g__skewness___discountproduct_type=f__sum___paid_valueproduct_type=f__sum___discountproduct_type=f__mean___paid_valueproduct_type=f__mean___discountproduct_type=f__stddev___paid_valueproduct_type=f__stddev___discountproduct_type=f__min___paid_valueproduct_type=f__min___discountproduct_type=f__max___paid_valueproduct_type=f__max___discountproduct_type=f__kurtosis___paid_valueproduct_type=f__kurtosis___discountproduct_type=f__skewness___paid_valueproduct_type=f__skewness___discountproduct_type=e__sum___paid_valueproduct_type=e__sum___discountproduct_type=e__mean___paid_valueproduct_type=e__mean___discountproduct_type=e__stddev___paid_valueproduct_type=e__stddev___discountproduct_type=e__min___paid_valueproduct_type=e__min___discountproduct_type=e__max___paid_valueproduct_type=e__max___discountproduct_type=e__kurtosis___paid_valueproduct_type=e__kurtosis___discountproduct_type=e__skewness___paid_valueproduct_type=e__skewness___discountproduct_type=h__sum___paid_valueproduct_type=h__sum___discountproduct_type=h__mean___paid_valueproduct_type=h__mean___discountproduct_type=h__stddev___paid_valueproduct_type=h__stddev___discountproduct_type=h__min___paid_valueproduct_type=h__min___discountproduct_type=h__max___paid_valueproduct_type=h__max___discountproduct_type=h__kurtosis___paid_valueproduct_type=h__kurtosis___discountproduct_type=h__skewness___paid_valueproduct_type=h__skewness___discountproduct_type=d__sum___paid_valueproduct_type=d__sum___discountproduct_type=d__mean___paid_valueproduct_type=d__mean___discountproduct_type=d__stddev___paid_valueproduct_type=d__stddev___discountproduct_type=d__min___paid_valueproduct_type=d__min___discountproduct_type=d__max___paid_valueproduct_type=d__max___discountproduct_type=d__kurtosis___paid_valueproduct_type=d__kurtosis___discountproduct_type=d__skewness___paid_valueproduct_type=d__skewness___discountproduct_type=c__sum___paid_valueproduct_type=c__sum___discountproduct_type=c__mean___paid_valueproduct_type=c__mean___discountproduct_type=c__stddev___paid_valueproduct_type=c__stddev___discountproduct_type=c__min___paid_valueproduct_type=c__min___discountproduct_type=c__max___paid_valueproduct_type=c__max___discountproduct_type=c__kurtosis___paid_valueproduct_type=c__kurtosis___discountproduct_type=c__skewness___paid_valueproduct_type=c__skewness___discountproduct_type=b__sum___paid_valueproduct_type=b__sum___discountproduct_type=b__mean___paid_valueproduct_type=b__mean___discountproduct_type=b__stddev___paid_valueproduct_type=b__stddev___discountproduct_type=b__min___paid_valueproduct_type=b__min___discountproduct_type=b__max___paid_valueproduct_type=b__max___discountproduct_type=b__kurtosis___paid_valueproduct_type=b__kurtosis___discountproduct_type=b__skewness___paid_valueproduct_type=b__skewness___discountproduct_type=a__sum___paid_valueproduct_type=a__sum___discountproduct_type=a__mean___paid_valueproduct_type=a__mean___discountproduct_type=a__stddev___paid_valueproduct_type=a__stddev___discountproduct_type=a__min___paid_valueproduct_type=a__min___discountproduct_type=a__max___paid_valueproduct_type=a__max___discountproduct_type=a__kurtosis___paid_valueproduct_type=a__kurtosis___discountproduct_type=a__skewness___paid_valueproduct_type=a__skewness___discountbuy_type=f_3__sum___paid_valuebuy_type=f_3__sum___discountbuy_type=f_3__mean___paid_valuebuy_type=f_3__mean___discountbuy_type=f_3__stddev___paid_valuebuy_type=f_3__stddev___discountbuy_type=f_3__min___paid_valuebuy_type=f_3__min___discountbuy_type=f_3__max___paid_valuebuy_type=f_3__max___discountbuy_type=f_3__kurtosis___paid_valuebuy_type=f_3__kurtosis___discountbuy_type=f_3__skewness___paid_valuebuy_type=f_3__skewness___discountbuy_type=f_5__sum___paid_valuebuy_type=f_5__sum___discountbuy_type=f_5__mean___paid_valuebuy_type=f_5__mean___discountbuy_type=f_5__stddev___paid_valuebuy_type=f_5__stddev___discountbuy_type=f_5__min___paid_valuebuy_type=f_5__min___discountbuy_type=f_5__max___paid_valuebuy_type=f_5__max___discountbuy_type=f_5__kurtosis___paid_valuebuy_type=f_5__kurtosis___discountbuy_type=f_5__skewness___paid_valuebuy_type=f_5__skewness___discountbuy_type=f_8__sum___paid_valuebuy_type=f_8__sum___discountbuy_type=f_8__mean___paid_valuebuy_type=f_8__mean___discountbuy_type=f_8__stddev___paid_valuebuy_type=f_8__stddev___discountbuy_type=f_8__min___paid_valuebuy_type=f_8__min___discountbuy_type=f_8__max___paid_valuebuy_type=f_8__max___discountbuy_type=f_8__kurtosis___paid_valuebuy_type=f_8__kurtosis___discountbuy_type=f_8__skewness___paid_valuebuy_type=f_8__skewness___discountbuy_type=f_4__sum___paid_valuebuy_type=f_4__sum___discountbuy_type=f_4__mean___paid_valuebuy_type=f_4__mean___discountbuy_type=f_4__stddev___paid_valuebuy_type=f_4__stddev___discountbuy_type=f_4__min___paid_valuebuy_type=f_4__min___discountbuy_type=f_4__max___paid_valuebuy_type=f_4__max___discountbuy_type=f_4__kurtosis___paid_valuebuy_type=f_4__kurtosis___discountbuy_type=f_4__skewness___paid_valuebuy_type=f_4__skewness___discountbuy_type=f_2__sum___paid_valuebuy_type=f_2__sum___discountbuy_type=f_2__mean___paid_valuebuy_type=f_2__mean___discountbuy_type=f_2__stddev___paid_valuebuy_type=f_2__stddev___discountbuy_type=f_2__min___paid_valuebuy_type=f_2__min___discountbuy_type=f_2__max___paid_valuebuy_type=f_2__max___discountbuy_type=f_2__kurtosis___paid_valuebuy_type=f_2__kurtosis___discountbuy_type=f_2__skewness___paid_valuebuy_type=f_2__skewness___discountbuy_type=f_9__sum___paid_valuebuy_type=f_9__sum___discountbuy_type=f_9__mean___paid_valuebuy_type=f_9__mean___discountbuy_type=f_9__stddev___paid_valuebuy_type=f_9__stddev___discountbuy_type=f_9__min___paid_valuebuy_type=f_9__min___discountbuy_type=f_9__max___paid_valuebuy_type=f_9__max___discountbuy_type=f_9__kurtosis___paid_valuebuy_type=f_9__kurtosis___discountbuy_type=f_9__skewness___paid_valuebuy_type=f_9__skewness___discountbuy_type=f_1__sum___paid_valuebuy_type=f_1__sum___discountbuy_type=f_1__mean___paid_valuebuy_type=f_1__mean___discountbuy_type=f_1__stddev___paid_valuebuy_type=f_1__stddev___discountbuy_type=f_1__min___paid_valuebuy_type=f_1__min___discountbuy_type=f_1__max___paid_valuebuy_type=f_1__max___discountbuy_type=f_1__kurtosis___paid_valuebuy_type=f_1__kurtosis___discountbuy_type=f_1__skewness___paid_valuebuy_type=f_1__skewness___discountbuy_type=f_7__sum___paid_valuebuy_type=f_7__sum___discountbuy_type=f_7__mean___paid_valuebuy_type=f_7__mean___discountbuy_type=f_7__stddev___paid_valuebuy_type=f_7__stddev___discountbuy_type=f_7__min___paid_valuebuy_type=f_7__min___discountbuy_type=f_7__max___paid_valuebuy_type=f_7__max___discountbuy_type=f_7__kurtosis___paid_valuebuy_type=f_7__kurtosis___discountbuy_type=f_7__skewness___paid_valuebuy_type=f_7__skewness___discountbuy_type=f_6__sum___paid_valuebuy_type=f_6__sum___discountbuy_type=f_6__mean___paid_valuebuy_type=f_6__mean___discountbuy_type=f_6__stddev___paid_valuebuy_type=f_6__stddev___discountbuy_type=f_6__min___paid_valuebuy_type=f_6__min___discountbuy_type=f_6__max___paid_valuebuy_type=f_6__max___discountbuy_type=f_6__kurtosis___paid_valuebuy_type=f_6__kurtosis___discountbuy_type=f_6__skewness___paid_valuebuy_type=f_6__skewness___discount
292022-01-01nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
292022-02-01978.170096728930225978.170096728930225.0nullnull978.170096728930225978.170096728930225nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull2005.3660480401836501002.683024020091825.0175.098194472338720.0878.8699033351803251126.496144705003425-2.0000000000000004null0.0null1908.343027310593710954.17151365529685.048.712658902439767.0710678118654755919.72646221575450988.616565094839310-1.9999999999999996-2.00.00.0nullnullnullnullnullnullnullnullnullnullnullnullnullnull1926.650682996745225963.325341498372612.5143.9603989555383817.67766952966369861.529967174590601065.120715822154625-1.9999999999999991-2.00.00.0nullnullnullnullnullnullnullnullnullnullnullnullnullnull2034.879826126586251017.43991306329312.530.9285964104270517.67766952966369995.570092808898201039.30973331768825-2.000000000000001-2.00.00.01065.1207158221546251065.120715822154625.0nullnull1065.1207158221546251065.120715822154625nullnullnullnull4811.64628840645175962.329257681290315.063.3686455202173913.693063937629153878.869903335180301039.30973331768825-1.2904340099690859-1.8333333333333335-0.1776892000819694-0.4082482904638631nullnullnullnullnullnullnullnullnullnullnullnullnullnull988.616565094839310988.616565094839310.0nullnull988.616565094839310988.616565094839310nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull1988.02611187959425994.01305593979712.5187.3593809168335217.67766952966369861.529967174590601126.496144705003425-2.0-2.00.00.0nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
262022-02-014361.685585232964351090.4213963082418.7589.2313461168010211.814539065631521961.959531146225301165.64025491555325-0.8498265554253606-1.1419024281577181-0.88410135327432250.68925447711467771148.7468889856796251148.746888985679625.0nullnull1148.7468889856796251148.746888985679625nullnullnullnull869.592119742312225869.592119742312225.0nullnull869.592119742312225869.592119742312225nullnullnullnull2168.86006729875201084.4300336493760.052.415361363995580.01047.366776190551301121.49329110820050-2.000000000000001null0.0null1009.6418154519044101009.641815451904410.0nullnull1009.6418154519044101009.641815451904410nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull1113.504363062723501113.50436306272350.0nullnull1113.504363062723501113.50436306272350nullnullnullnull1116.13609118335801116.1360911833580.0nullnull1116.13609118335801116.1360911833580nullnullnullnull869.592119742312225869.592119742312225.0nullnull869.592119742312225869.592119742312225nullnullnullnull1113.504363062723501113.50436306272350.0nullnull1113.504363062723501113.50436306272350nullnullnullnull961.95953114622530961.95953114622530.0nullnull961.95953114622530961.95953114622530nullnullnullnull1104.6138403921893101104.613840392189310.0nullnull1104.6138403921893101104.613840392189310nullnullnullnull3342.4789898851004251114.15966329503348.33333333333333460.60531113004448414.4337567297406441047.366776190551301165.64025491555325-1.5-1.5000000000000004-0.43452911372408960.70710678118654782264.8829801690376251132.441490084518812.523.05931626592488517.677669529663691116.13609118335801148.746888985679625-1.999999999999999-2.00.00.0nullnullnullnullnullnullnullnullnullnullnullnullnullnull1009.6418154519044101009.641815451904410.0nullnull1009.6418154519044101009.641815451904410nullnullnullnull1121.493291108200501121.49329110820050.0nullnull1121.493291108200501121.49329110820050nullnullnullnull
262022-01-01nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
292022-03-01nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull1114.7487402931952251114.748740293195225.0nullnull1114.7487402931952251114.748740293195225nullnullnullnull2017.6059546732924351008.802977336646217.560.7361312650921310.606601717798213965.8560470560633101051.749907617229225-2.0000000000000036-2.03.674123667735640...0.0nullnullnullnullnullnullnullnullnullnullnullnullnullnull1065.1207158221546251065.120715822154625.0nullnull1065.1207158221546251065.120715822154625nullnullnullnull2956.694563249847835985.56485441661611.666666666666666101.6821557784447212.583057392117917913.290784073820901101.836806264924225-1.4999999999999991-1.49999999999999980.64608832880153070.23906314692954492nullnullnullnullnullnullnullnullnullnullnullnullnullnull2116.870623439384501058.43531171969225.09.4545891516474970.01051.7499076172292251065.120715822154625-1.9999999999999976null-3.80475937533656...nullnullnullnullnullnullnullnullnullnullnullnullnullnullnull1101.836806264924201101.83680626492420.0nullnull1101.836806264924201101.83680626492420nullnullnullnull1879.14683112988435939.57341556494217.537.1692539095978110.606601717798213913.290784073820910965.856047056063325-1.9999999999999996-2.00.00.0nullnullnullnullnullnullnullnullnullnullnullnullnullnull1114.7487402931952251114.748740293195225.0nullnull1114.7487402931952251114.748740293195225nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull941.566972911102510941.566972911102510.0nullnull941.566972911102510941.566972911102510nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull

correlation example#

[15]:
features = make_features.run(
    df=df,
    suites=[
        "correlation",
    ],
    options={},
)

print(f"Features created: {features.columns}")

print(f"Number of features: {len(features.columns)}")
Features created: ['consumer_id_ref', 'date_ref', 'corr_between___paid_value_discount']
Number of features: 3
[16]:
features.limit(5)
[16]:
consumer_id_refdate_refcorr_between___paid_value_discount
292022-01-01null
292022-02-010.5035732318016096
262022-02-01-0.10453224926952913
262022-01-01null
292022-03-010.010776511903292301
[17]:
features = make_features.run(
    df=df,
    suites=[
        "categorical_statistics",
    ],
    options={},
)

print(f"Features created: {features.columns}")

print(f"Number of features: {len(features.columns)}")
Features created: ['consumer_id_ref', 'date_ref', 'product_type=g__count___product_type', 'product_type=f__count___product_type', 'product_type=e__count___product_type', 'product_type=h__count___product_type', 'product_type=d__count___product_type', 'product_type=c__count___product_type', 'product_type=b__count___product_type', 'product_type=a__count___product_type', 'buy_type=f_3__count___buy_type', 'buy_type=f_5__count___buy_type', 'buy_type=f_8__count___buy_type', 'buy_type=f_4__count___buy_type', 'buy_type=f_2__count___buy_type', 'buy_type=f_9__count___buy_type', 'buy_type=f_1__count___buy_type', 'buy_type=f_7__count___buy_type', 'buy_type=f_6__count___buy_type', 'count___product_type', 'countDistinct___product_type', 'count___buy_type', 'countDistinct___buy_type']
Number of features: 23
[18]:
features.limit(5)

[18]:
consumer_id_refdate_refproduct_type=g__count___product_typeproduct_type=f__count___product_typeproduct_type=e__count___product_typeproduct_type=h__count___product_typeproduct_type=d__count___product_typeproduct_type=c__count___product_typeproduct_type=b__count___product_typeproduct_type=a__count___product_typebuy_type=f_3__count___buy_typebuy_type=f_5__count___buy_typebuy_type=f_8__count___buy_typebuy_type=f_4__count___buy_typebuy_type=f_2__count___buy_typebuy_type=f_9__count___buy_typebuy_type=f_1__count___buy_typebuy_type=f_7__count___buy_typebuy_type=f_6__count___buy_typecount___product_typecountDistinct___product_typecount___buy_typecountDistinct___buy_type
702022-02-0130311111311311001117117
462022-03-01310001202200011107475
552022-03-0120132101201110041106106
12022-04-0111221111201210112108107
802022-11-01032011002011010117476

first_observation_features example#

[19]:
features = make_features.run(
    df=df,
    suites=[
        "first_observation_features",
    ],
    options={},
)

print(f"Features created: {features.columns}")

print(f"Number of features: {len(features.columns)}")
Features created: ['consumer_id_ref', 'date_ref', 'first___paid_value', 'first___discount']
Number of features: 4
[20]:
features.limit(5)
[20]:
consumer_id_refdate_reffirst___paid_valuefirst___discount
02022-01-01nullnull
02022-02-011160.60020740148910
02022-03-01907.041784672919725
02022-04-011146.734160730558210
02022-05-011112.518151737250310

last_observation_features example#

[21]:
features = make_features.run(
    df=df,
    suites=[
        "last_observation_features",
    ],
    options={},
)

print(f"Features created: {features.columns}")

print(f"Number of features: {len(features.columns)}")
Features created: ['consumer_id_ref', 'date_ref', 'last___paid_value', 'last___discount']
Number of features: 4
[22]:
features.limit(5)
[22]:
consumer_id_refdate_reflast___paid_valuelast___discount
02022-01-01nullnull
02022-02-011017.108541884138225
02022-03-011014.186151866983210
02022-04-011232.61352827146125
02022-05-011014.639736975231525

lags example#

[23]:
features = make_features.run(
    df=df,
    suites=[
        "numerical_statistics",
        "lags",
    ],
    options={"n_lags": [1, 3, 4, 5]},
)

print(f"Features created: {features.columns}")

print(f"Number of features: {len(features.columns)}")
Features created: ['consumer_id_ref', 'date_ref', 'sum___paid_value', 'sum___discount', 'mean___paid_value', 'mean___discount', 'stddev___paid_value', 'stddev___discount', 'min___paid_value', 'min___discount', 'max___paid_value', 'max___discount', 'kurtosis___paid_value', 'kurtosis___discount', 'skewness___paid_value', 'skewness___discount', 'lag=1_sum___paid_value', 'lag=1_sum___discount', 'lag=1_mean___paid_value', 'lag=1_mean___discount', 'lag=1_stddev___paid_value', 'lag=1_stddev___discount', 'lag=1_min___paid_value', 'lag=1_min___discount', 'lag=1_max___paid_value', 'lag=1_max___discount', 'lag=1_kurtosis___paid_value', 'lag=1_kurtosis___discount', 'lag=1_skewness___paid_value', 'lag=1_skewness___discount', 'lag=3_sum___paid_value', 'lag=3_sum___discount', 'lag=3_mean___paid_value', 'lag=3_mean___discount', 'lag=3_stddev___paid_value', 'lag=3_stddev___discount', 'lag=3_min___paid_value', 'lag=3_min___discount', 'lag=3_max___paid_value', 'lag=3_max___discount', 'lag=3_kurtosis___paid_value', 'lag=3_kurtosis___discount', 'lag=3_skewness___paid_value', 'lag=3_skewness___discount', 'lag=4_sum___paid_value', 'lag=4_sum___discount', 'lag=4_mean___paid_value', 'lag=4_mean___discount', 'lag=4_stddev___paid_value', 'lag=4_stddev___discount', 'lag=4_min___paid_value', 'lag=4_min___discount', 'lag=4_max___paid_value', 'lag=4_max___discount', 'lag=4_kurtosis___paid_value', 'lag=4_kurtosis___discount', 'lag=4_skewness___paid_value', 'lag=4_skewness___discount', 'lag=5_sum___paid_value', 'lag=5_sum___discount', 'lag=5_mean___paid_value', 'lag=5_mean___discount', 'lag=5_stddev___paid_value', 'lag=5_stddev___discount', 'lag=5_min___paid_value', 'lag=5_min___discount', 'lag=5_max___paid_value', 'lag=5_max___discount', 'lag=5_kurtosis___paid_value', 'lag=5_kurtosis___discount', 'lag=5_skewness___paid_value', 'lag=5_skewness___discount']
Number of features: 72
[24]:
features.limit(5)

[24]:
consumer_id_refdate_refsum___paid_valuesum___discountmean___paid_valuemean___discountstddev___paid_valuestddev___discountmin___paid_valuemin___discountmax___paid_valuemax___discountkurtosis___paid_valuekurtosis___discountskewness___paid_valueskewness___discountlag=1_sum___paid_valuelag=1_sum___discountlag=1_mean___paid_valuelag=1_mean___discountlag=1_stddev___paid_valuelag=1_stddev___discountlag=1_min___paid_valuelag=1_min___discountlag=1_max___paid_valuelag=1_max___discountlag=1_kurtosis___paid_valuelag=1_kurtosis___discountlag=1_skewness___paid_valuelag=1_skewness___discountlag=3_sum___paid_valuelag=3_sum___discountlag=3_mean___paid_valuelag=3_mean___discountlag=3_stddev___paid_valuelag=3_stddev___discountlag=3_min___paid_valuelag=3_min___discountlag=3_max___paid_valuelag=3_max___discountlag=3_kurtosis___paid_valuelag=3_kurtosis___discountlag=3_skewness___paid_valuelag=3_skewness___discountlag=4_sum___paid_valuelag=4_sum___discountlag=4_mean___paid_valuelag=4_mean___discountlag=4_stddev___paid_valuelag=4_stddev___discountlag=4_min___paid_valuelag=4_min___discountlag=4_max___paid_valuelag=4_max___discountlag=4_kurtosis___paid_valuelag=4_kurtosis___discountlag=4_skewness___paid_valuelag=4_skewness___discountlag=5_sum___paid_valuelag=5_sum___discountlag=5_mean___paid_valuelag=5_mean___discountlag=5_stddev___paid_valuelag=5_stddev___discountlag=5_min___paid_valuelag=5_min___discountlag=5_max___paid_valuelag=5_max___discountlag=5_kurtosis___paid_valuelag=5_kurtosis___discountlag=5_skewness___paid_valuelag=5_skewness___discount
02022-01-01nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
02022-02-016425.02303262522451070.83717210420337.570.585607694771319.874208829065749991.182318554089601160.600207401489125-1.4862128264472743-0.39053254437869890.338038363074440130.9387234089965415nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
02022-03-011921.227936539902935960.613968269951417.575.7625086088637810.606601717798213907.0417846729197101014.186151866983225-2.000000000000001-2.0-3.78583866001275...0.06425.02303262522451070.83717210420337.570.585607694771319.874208829065749991.182318554089601160.600207401489125-1.4862128264472743-0.39053254437869890.338038363074440130.9387234089965415nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
02022-04-017241.335698029857901034.476528289979612.857142857142858121.038201344237289.063269671749657913.436210726988901232.61352827146125-1.0770315605844292-0.95179584120982950.54821947384194170.32939926625012471921.227936539902935960.613968269951417.575.7625086088637810.606601717798213907.0417846729197101014.186151866983225-2.000000000000001-2.0-3.78583866001275...0.0nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
02022-05-0113005.8255382754831551000.448118328883311.92307692307692378.8092011342179911.46343126687016848.294313215298601112.518151737250325-0.6377760480965216-1.7071386079714457-0.6393411225009750.15459158375875427241.335698029857901034.476528289979612.857142857142858121.038201344237289.063269671749657913.436210726988901232.61352827146125-1.0770315605844292-0.95179584120982950.54821947384194170.32939926625012476425.02303262522451070.83717210420337.570.585607694771319.874208829065749991.182318554089601160.600207401489125-1.4862128264472743-0.39053254437869890.338038363074440130.9387234089965415nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull

increase_rate example#

[25]:
features = make_features.run(
    df=df,
    suites=[
        "numerical_statistics",
        "increase_rate",
    ],
    options={},
)

print(f"Features created: {features.columns}")

print(f"Number of features: {len(features.columns)}")
Features created: ['consumer_id_ref', 'date_ref', 'sum___paid_value', 'sum___discount', 'mean___paid_value', 'mean___discount', 'stddev___paid_value', 'stddev___discount', 'min___paid_value', 'min___discount', 'max___paid_value', 'max___discount', 'kurtosis___paid_value', 'kurtosis___discount', 'skewness___paid_value', 'skewness___discount', 'increase_rate_sum___paid_value', 'increase_rate_sum___discount', 'increase_rate_mean___paid_value', 'increase_rate_mean___discount', 'increase_rate_stddev___paid_value', 'increase_rate_stddev___discount', 'increase_rate_min___paid_value', 'increase_rate_min___discount', 'increase_rate_max___paid_value', 'increase_rate_max___discount', 'increase_rate_kurtosis___paid_value', 'increase_rate_kurtosis___discount', 'increase_rate_skewness___paid_value', 'increase_rate_skewness___discount']
Number of features: 30
[26]:
features.limit(5)

[26]:
consumer_id_refdate_refsum___paid_valuesum___discountmean___paid_valuemean___discountstddev___paid_valuestddev___discountmin___paid_valuemin___discountmax___paid_valuemax___discountkurtosis___paid_valuekurtosis___discountskewness___paid_valueskewness___discountincrease_rate_sum___paid_valueincrease_rate_sum___discountincrease_rate_mean___paid_valueincrease_rate_mean___discountincrease_rate_stddev___paid_valueincrease_rate_stddev___discountincrease_rate_min___paid_valueincrease_rate_min___discountincrease_rate_max___paid_valueincrease_rate_max___discountincrease_rate_kurtosis___paid_valueincrease_rate_kurtosis___discountincrease_rate_skewness___paid_valueincrease_rate_skewness___discount
02022-01-01nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
02022-02-016425.02303262522451070.83717210420337.570.585607694771319.874208829065749991.182318554089601160.600207401489125-1.4862128264472743-0.39053254437869890.338038363074440130.9387234089965415nullnullnullnullnullnullnullnullnullnullnullnullnullnull
02022-03-011921.227936539902935960.613968269951417.575.7625086088637810.606601717798213907.0417846729197101014.186151866983225-2.000000000000001-2.0-3.78583866001275...0.0-0.7009772685974478-0.2222222222222222-0.102931805792343231.33333333333333330.073342159728631960.07417231105914944-0.08488905855777566null-0.126153738902320.00.34570228732375574.121212121212112-1.000000000000001-1.0
02022-04-017241.335698029857901034.476528289979612.857142857142858121.038201344237289.063269671749657913.436210726988901232.61352827146125-1.0770315605844292-0.95179584120982950.54821947384194170.32939926625012472.76911846861407441.57142857142857140.0768909910325927-0.265306122448979550.5976002321823396-0.145506740717792430.007049759076286682-1.00.215372075434457270.0-0.46148421970778564-0.5241020793950852-1.44807933743297...null
02022-05-0113005.8255382754831551000.448118328883311.92307692307692378.8092011342179911.46343126687016848.294313215298601112.518151737250325-0.6377760480965216-1.7071386079714457-0.6393411225009750.15459158375875420.7960533913396620.7222222222222222-0.03289432774018...-0.07264957264957267-0.34888985246829970.264822926167787-0.07131521254214879null-0.097431493148241640.0-0.407839035143551960.7935974649789376-2.1662138121808217-0.5306863141541813