Python-da marketing tahlili. RFM segmentatsiyasi uchun kod yozish
RFM - bu sizning mijozlar bazangizni segmentlash uchun klassik marketing vositasi. Men uni B2B, B2G segmentida ishlash uchun ishlataman. U menejerga tushunarli bo'lgan qadriyatlarga asoslanadi: LTV va Xarid qilish chastotasi.
Ushbu vositadan qanday foydalanishingiz mumkin:
Mijozlar bazasining chiqib ketishini hisoblang
Chiqib ketayotgan mijozlarni toping - negadir tez-tez va ko'p sotib olgan, keyin esa to'xtab qolgan eng yirik mijozlar. Avvalo, chiqib ketish sababini aniqlash va ushbu sheriklarni qaytarib olishga harakat qilish kerak.
Asosiy mijozlarni aniqlang - ko'p, tez-tez va uzoq vaqt sotib oladiganlar. Eng sodiq foydalanuvchilarning ushbu segmenti so'rovnomalar o'tkazish, mahsulotingiz yoki xizmatingizdan foydalanishning qo'shma holatlarini yaratish, brend himoyachilarini rivojlantirish va shunchaki do'stona aloqalarni mustahkamlash uchun - masalan, tadbirlarga taklifnomalar uchun ishlatilishi mumkin.
Tez-tez va uzoq vaqt davomida buyurtma beradigan foydalanuvchilar segmentini aniqlang - bunday segment bilan ishlash o'rtacha hisobni oshirishga urinishdan iborat bo'ladi - ehtimol bu foydalanuvchilar kompaniyaning barcha mahsulotlari va xizmatlaridan xabardor emaslar.
RFM metodologiyasi juda oddiy: tadqiqotchi har bir mijozga quyidagilarga qarab "1", "2", "3" darajasini belgilashi kerak:
kontragent bilan ishlashning butun davri uchun jo'natilgan (ko'rsatilgan va to'langan xizmatlar) buyurtmalarning umumiy miqdori. Buning uchun Monetar (M) ko'rsatkichi javobgardir
Buyurtma chastotasi - chastota (F)
oxirgi savdo qanchalik yaqinda amalga oshirilgan - Yangilik (R)
Ko'proq darajalar bo'lishi mumkin - bu ma'lumotlarning qanchalik bir hilligiga bog'liq bo'ladi. RFMda qanday kombinatsiyalar paydo bo'lishi mumkin:
R=3, F=1, M=1 = eng yuqori LTV va yuqori tartib chastotasiga ega boʻlgan, oxirgi buyurtmani uzoq vaqt oldin qilgan mijozlar toʻxtab qolgan. Bunday kontragentlar chiqish va mijozni qaytarishga urinish sabablarini aniqlash uchun favqulodda choralar ko'rishni talab qiladi
M = 1, F = 1, R = 1 = potentsial fikr yetakchilari, brendingiz himoyachilari. Agar ma'lumotlar bazasida maqsadli auditoriya segmentlari ko'p bo'lsa, bunday kontragentlarning sifat tarkibini o'rganish foydalidir.
M=2/3, F=1, R=1= ushbu segmentda o'rtacha chekni oshirishga qaratilgan tadbirlarni amalga oshirish juda yaxshi.
Ushbu tadqiqotni amalga oshirayotgan ko'pchilik sotuvchilar o'zlarining CRM-dan yuklashdan foydalanadilar va Excelda saralashni amalga oshiradilar. Ushbu yondashuv jiddiy kamchiliklarga ega:
Ma'lumotlarning bir xilligini o'rganish uchun oddiy va tezkor yechim yo'q. Masalan, mijozlaringizning 5 foizi uchun LTV bir necha million rubldan ko'proq bo'lishi mumkin (siz marjinal foyda yoki umumiy daromadni hisobga olsangiz, unchalik muhim emas), qolgan 95 foiz mijozlar uchun esa bir necha yuz mingdan kam bo'lishi mumkin. rubl. Bunday vaziyatda "ma'lumotlar bazasini 3 ta segmentga bo'lish" ishlamaydi
Excel katta hajmdagi ma'lumotlar bilan juda sekin ishlaydi (men taqdim etgan misolda biz 3480 ta kompaniyadan iborat First Profile Plant ishlab chiqaruvchi kompaniyasining pudratchilari ma'lumotlar bazasini o'rgandik)
Ma'lumotni vizuallashtirish uchun oddiy va tezkor yechim yo'q (Pythonda bu bir necha qatorda amalga oshiriladi), bizga talabni prognoz qilish, tendentsiyalarni va mavsumiylikni aniqlash uchun vizualizatsiya kerak bo'ladi (ehtimol, men ushbu talabni o'rganish metodologiyasi haqida material yozaman va gaplashaman) Python-da ARIMA va SARIMA vaqt seriyalari modellarini qo'llashga urinishlarim haqida).
Men Yupiter Notebook, Python kutubxonalari Numpy, Pandas, Matplotlib dan foydalanaman. Bor.
Avvalo, men ma'lumotlarni to'g'ridan-to'g'ri Excelda oldindan qayta ishlashim va yuklashni 1C dan shaklga olib kelishim kerak edi:
Jadvalda kontragentlarning noyob nomlari, hamkorlikning butun davri uchun ularning barcha buyurtmalarining sanalari va miqdorlari ko'rsatilgan. Har bir noyob MChJ nomiga noyob User_id belgilanadi. Agar siz Python-ning boshlang'ich foydalanuvchisi bo'lsangiz, jadval ustunlari nomlariga e'tibor bering - biz ularni kodda ishlatamiz. Ish jarayonlari haqidagi sharhlarimni skrinshotlarda ''#” belgisidan keyin topasiz.
Ma'lumotlarni oldindan qayta ishlashni amalga oshirgandan so'ng, faylni saqlang va unga yo'lni ko'chiring, Jupiter Notebook-da yangi loyihani oching va kerakli kutubxonalarni import qiling. Keling, ma'lumotlar bilan faylni ochaylik - kompaniya nomi, kompaniya identifikatori, kompaniya buyurtma sanasi va buyurtma miqdori. Ma'lumotlar qatorini sanaga aylantirish va har bir kontragentning bugungi va oxirgi buyurtma sanasi o'rtasidagi kunlar deltasini hisoblash uchun bizga Datetime kutubxonasi kerak bo'ladi.
Men sizning e'tiboringizni dataframelar bilan ishlash tamoyillariga qarataman, bu sizga tadqiqot vaqtingizni sezilarli darajada qisqartirishga va xatolarimdan qochishingizga yordam beradi:
Konversiyadan so'ng qayta saqlash yoki yangi dataframe yaratishni unutmang.
Birlashtirish usuli yordamida indekslarni yoki ulangan ma'lumotlar ramkalarini o'rnatganingizdan so'ng, dataframedagi qatorlar sonini tekshiring.
Ustunlarni o'zgartirgandan so'ng nomini o'zgartiring, bu chalkashliklarni oldini olishga yordam beradi.
Keyinchalik, biz qator ma'lumotlar turini sanaga aylantirishimiz va tartib chastotasini topishimiz kerak (buyurtma chastotasi noyob user_id ni eslatish soniga mos keladi), buni quyidagi kod yordamida amalga oshirish mumkin: