Beräkna RFM-mätvärden

Kundsegmentering i Python

Karolis Urbonas

Head of Data Science, Amazon

Definitioner

  • Recency – dagar sedan kundens senaste transaktion
  • Frequency – antal transaktioner de senaste 12 månaderna
  • Monetary Value – total utgift de senaste 12 månaderna
Kundsegmentering i Python

Datamängd och förberedelser

  • Samma online-datamängd som i tidigare lektioner
  • Viss dataförberedelse krävs
  • Ny kolumn TotalSum = Quantity x UnitPrice.

De 5 översta raderna

Kundsegmentering i Python

Dataförberedelsesteg

Vi utgår från en förbehandlad online-DataFrame med enbart data från de senaste 12 månaderna:

print('Min:{}; Max:{}'.format(min(online.InvoiceDate),
                              max(online.InvoiceDate)))
Min:2010-12-10; Max:2011-12-09

Låt oss skapa ett hypotetiskt snapshot_day-datum som om analysen görs nyligen.

snapshot_date = max(online.InvoiceDate) + datetime.timedelta(days=1)
Kundsegmentering i Python

Beräkna RFM-mätvärden

# Aggregate data on a customer level
datamart = online.groupby(['CustomerID']).agg({
    'InvoiceDate': lambda x: (snapshot_date - x.max()).days,
    'InvoiceNo': 'count',
    'TotalSum': 'sum'})

# Rename columns for easier interpretation datamart.rename(columns = {'InvoiceDate': 'Recency', 'InvoiceNo': 'Frequency', 'TotalSum': 'MonetaryValue'}, inplace=True)
# Check the first rows datamart.head()
Kundsegmentering i Python

Slutliga RFM-värden

Vår tabell för RFM-segmentering är klar!

rfm topp 5

Kundsegmentering i Python

Nu kör vi en övning!

Kundsegmentering i Python

Preparing Video For Download...