Przejdź do treści

Numpy. Funkcja np.select(). Etykiety segmentu klienta według LTV i recency.

Na czym to polega w sklepie

Funkcja np.select wybiera wartość z listy opcji dla pierwszego spełnionego warunku (jak switch-case wektorowy). W CRM e-commerce oznaczasz klientów Champions / At Risk / Lost na podstawie progów LTV i dni od ostatniego zakupu.

Przykład ze sklepu internetowego

Tablice ltv i days_since_purchase z eksportu klientów. Chcesz kolumnę segmentu pod import do narzędzia mailingowego:

import numpy as np

ltv = np.array([1200, 450, 80, 2100, 320, 50])
recency = np.array([5, 45, 120, 12, 90, 200])

conditions = [
    (ltv >= 1000) & (recency <= 30),
    (ltv >= 500) & (recency <= 60),
    recency > 90,
]
choices = ["champion", "loyal", "at_risk"]
segments = np.select(conditions, choices, default="standard")
# Kolejność conditions ma znaczenie - pierwszy match wygrywa

Co zrobić po stronie biznesu

  • Flagi ROAS: „scale”, „hold”, „pause” na podstawie progów spend i revenue.
  • Klasyfikacja bounce rate sesji GA4: engaged / neutral / bounce po czasie i pageviews.
  • Pułapka: nakładające się warunki - wyższy priorytet musi być pierwszy w liście, inaczej segment się nie zgadza.

W skrócie

np.select zastępuje kolumnę z dziesiątkiem np.where. Parametr default łapie resztę - bez niego dostaniesz 0 i pomyłisz z metryką.