امروزه برای اینکه یک متخصص بازاریابی موفق باشید ، تجزیه و تحلیل بازاریابی امری ضروری است. بنابراین ، کارشناسان بازاریابی با دانش اقتصاد و آمار معمولاً جایگاه شغلی بهتری نسبت به سایر بازار یاب ها دارند. اما اگر سواد مناسب برای بازار یابی و فروش ندارید ، یک روش تجزیه و تحلیل بازار یابی با کمک علم داده وجود دارد که می توانید از آن استفاده کنید.
مدل RFM ابزاری برای تحلیل مشتریان است که برای تعیین بهترین مشتریان استفاده می شود. مدل RFM بر اساس 3 فاکتور کمی ساخته شده است. R یا Recency نشان می دهد مشتری اخرین بار کی خرید کرده است. F یا فرکانس می گوید مشتری هر چند وقت یکبار خرید می کند. در اخر M یا مبلغ، نشان می دهد مشتری چقدر پول خرج می کند.
در این مقاله قصد داریم با یک مثال عملی با استفاده از پایتون مدل RFM را بر روی یک مجموعه داده پیاده کنیم.
مجموعه داده های مورد استفاده در این مقاله را می توانید از لینک زیر دریافت کنید.
مجموعه داده تحلیل مشتریان بر اساس مدل RFM
برای طراحی مدل ما با ستون های customer_id ، order_date و sales کار خواهیم کرد.
طراحی مدل RFM
طبق معمول اولین کار اضافه کردن کتابخانه های مورد نیاز است.
import pandas as pd import numpy as np import matplotlib.pyplot as plt from pandasql import sqldf from sklearn.preprocessing import scale from scipy.cluster.hierarchy import linkage, dendrogram, cut_tree
فرمت تاریخ باید تغییر کند . همچنین بایستی مشخص شود اولین خرید در چه تاریخی بوده است.
df["order_date"] = df["order_date"].astype('datetime64[ns]') print(df["order_date"].max(),"\n",df["order_date"].min())
همچنین یک ستون جدید ایجاد می کنیم و نام آن را days_since قرار می دهیم این کار برای نشان دادن روزهای آخرین خرید است.
df['days_since'] = (pd.Timestamp('2020-01-01') - df['order_date']).dt.days
این قسمت مهم ترین بخش این مقاله است. در اینجا درستورات SQL را درون کد پایتون قرار می دهیم. روش های مختلفی برای محاسبه rfm وجود دارد. در اینجا با استفاده از Group by ستون های r ,f و m را ایجاد می کنیم.
rfm = sqldf("SELECT customer_id, MIN(days_since) AS 'recency', COUNT(*) AS 'frequency', AVG(sales) AS 'amount' FROM df GROUP BY 1", globals()) rfm.head()
مصور سازی داده ها
rfm.recency.hist(bins=20)
customers.frequency.hist(bins=6)
customers.amount.hist()
نتایج بدست آمده از مدل RFM
۱. بیشتر مشتریان به تازگی خرید کرده اند.
۲.بیشتر مشتریان فقط یک بار به فروشگاه آمده اند و در طول سال به ندرت بیش از 2 بار مراجعه می کنند ، این بدان معناست که کارهای زیادی در زمینه تحلیل مشتریان باید انجام شود.
حال داده های متشریان را در یک دیتا فریم جدید می ریزیم و customer_id را به عنوان اندیس آن قرار می دهیم.
new_data = rfm new_data = new_data.set_index(new_data.customer_id).iloc[:,1:4]
سپس از مقدار مجموع خرید لگاریتم گرفته و نمودار plot آن را رسم می کنیم.
new_data.amount = np.log(new_data.amount) new_data.amount.hist(bins=7)
استاندارد سازی متغییر ها
new_data = pd.DataFrame(scale(new_data), index=new_data.index, columns=new_data.columns) new_data.head()
طبقه بندی سلسله مراتبی
از داده ها استاندار شده ۱۰٪ نمونه جدا می کنیم و آن ها را خوشه بندی می کنیم.
new_data_sample = new_data.iloc[::10, :] c = linkage(new_data_sample, method='ward')
سپس تعداد خوشه ها را ۳ قرار می دهیم.
members = pd.DataFrame(cut_tree(c, n_clusters = 3), index=new_data_sample.index, columns=['ClusterNumber']) members.ClusterNumber.value_counts(sort=False)
10 نمونه اول را نمایش می دهیم.
members.iloc[0:10]
نتیجه گیری
با استفاده از داده های بدست آمده می توان اطلاعات مشتریان را به خوبی تحلیل کرد و استراژی هایی برای افزایش فروش مجموعه طراحی کرد. مثلا مشتریان که قبلا خرید خوبی داشته اند ولی مدتی از اخرین خرید آن ها می گذرد، بایستی با روش های تشویقی ترقیب شوند مجددا خرید کنند. به همین ترتیب با تحلیل های متنوع می توان می توان افزایش فروش مجموعه را افزایش داد.
در همین راستا می توانید مقاله تحلیل رفتار مصرف کننده: کلیک بر روی تبلیغات را مطالعه کنید