CUSTOMER LIFE TIME VALUE (CLTV) ✔

Ahmet Enes Yalçınkaya
6 min readJan 23, 2022

--

İşletmemizi büyütmek için iki adet yöntemimiz vardır.

  • Yeni müşteri elde etmek.
  • Var olan müşteriyi elde tutmak ve onun kalıcı olmasını sağlamak.

Yapılan araştırma verileri gösteriyor ki şirketlerin %44'ü paralarının ve zamanlarını çoğunu yeni müşteri elde etmek için ayırırken sadece %16'sı hali hazırda bulunan mevcut müşterilerini elde etmek için daha çok çaba sarf ediyor. Ama unutmamalıyız ki mevcut müşterilerimizi korumak, yeni müşteri elde etmekten hem daha ucuz hem de daha az zamanımızı alacaktır.

CRM terimini birçoğumuzun önceden duyduğunuzu düşünüyorum. Customer relationship management (Müşteri ilişkileri yönetimi). Yukarıda tanımladığımız gibi elimizde mevcut müşteriler var ve gelecekte kazanabileceğimiz potansiyel müşterilerimiz var. Bir şirketin bu iki tür müşteriler ile ilişkilerini yöneten kavrama CRM diyoruz.

Bugün ise daha farklı bir kavram olan başlığımızda da yer alan CLTV -Customer life time value (Müşteri yaşam boyu değeri)’ni inceleyeceğiz.

Nedir peki bu CLTV ?

Müşterilerin şirketle kurduğu ilişkinin parasal değeridir. Yani şirketimizin zaman içinde bir müşteriden ne kadar net kar elde edebileceğini gösterir.

Customer Lifetime Value

Müşteriden elde edebileceğimiz net karın arttırılması için birçok yöntem bulunmaktadır. Ancak bu yöntemleri belirleyebilmek için öncelikle müşterilerimizden elde ettiğimiz dataları analiz etmemiz gerekecektir.

Bu yazımda sizlere market satış datası üzerinden CLTV değerini nasıl hesaplayabileceğimizi göstereceğim. 😎 Bu sayede müşterilerimizi sağlıklı bir şekilde gruplandırıp, üzerlerinde nasıl aksiyonlar alabileceğimizi değerlendireceğiz. Bu çalışmada Ömer Çolakoğlu hocamızın kaggle adresinden bulunan Turkish Market Sales Dataset With 9.000+Items isimli veriyi kullanacağız. Veri 52.000'den fazla unique Türkçe müşteri ismi ,soyismi cinsiyeti, yaşı, doğum tarihi, 9.000'den fazla kategorilere ayrılmış ve kategorilere ayrılmamış öğeleri, 81 farklı marketi, 1200'den fazla satıcı ismini ve müşterilerin lokasyon bilgilerinden oluşan 3 aylık bir satış datasını içermektedir.

O zaman başlayalımmmmmmm !🚀

İlk olarak işlemlerimize gerekli kütüphaneleri yükleyerek başlıyoruz. Veri işlemesi ve analizi için pandas, matemamatiksel işlemleri gerçekleştire-ceğimiz numpy, bir çizim kütüphanesi olan matplotlib, veri görselleştirmede kullandığımız seaborn, verimizin içerisinde bulunan eksik verileri görselleştirmek için missingno, tarih ve zaman işlemlerini gerçekleştir-diğimiz datetime, grafik işleme kütüphanesi olan PIL, excel formatında olan datamızı okumak için xlrd kütüphanelerimizi import ediyoruz.

import libraries

Excel formatında bulunan MarketSales.xlsx ismindeki datamızı pandas kütüphanesi yardımı ile okuma işlemini gerçekleştiriyoruz.

read excel file

Verimiz üzerinde çeşitli uygulamalar gerçekleştireceğiz. Ancak ondan önce verimizin bir adet kopyasını oluşturarak asıl verimizi korumak istiyoruz. Bunun için tek yapmamız gereken oluşturduğumuz data isimli değişkenimize copy() fonksiyonunu uygulayarak df isminde farklı bir dataframe oluşturduk.

Verimizin içerisinde bulunan değerleri görmek istiyorum. Bunun için pandas kütüphanesinin head() fonksiyonunu kullanıyorduk. Ve bu işlem bize ilk 5 satırda bulunan verileri bize gösterecektir.

Verilerimizin satır ve sütunlarına kısaca bir göz attık. Sırada verimizin içerisinden kullanacağımız sütunları seçeceğiz ve bu sütunların içerisinde bulunan eksik verilerin sayılarını tespit edeceğiz.

determine null numbers of data

Belirlediğimiz kolonların içerisinde kaçar adet eksik veri yani null değeri döndürdüğünü bulduk.

Bunlardan nasıl kurtulabiliriz ?

Oluşturduğumuz dataframe’e dropna() fonksiyonu uygulayarak verimiz üzerinde temizleme işlemi gerçekleştirmiş oluyoruz ve datamızı tekrar ekrana bastırıyoruz.

drop null values from data

Tekrar herhangi bir null değerimizin olup olmadığını kontrol edelim ❔

check null values

Verimizi tamamen null değerlerden temizlemiş olduk. 🎉👏

Verimiz hakkında bir öngörüye sahip olmak için bir kaç işlem uygulayacağız ve bu işlemleri data_understanding isminde bir fonksiyon içerisinde gerçekleştireceğiz. Bu fonksiyonumun içerisinde verimin boyutunu, sütunlarımda bulunan değişkenlerin dtype’larını (float,object,Integer,Datetime vs.), null değerlerimi grafik olarak bize göstermesi için missigno kütüphanesi yardımı ile bar ve heatmap’lerini oluşturacağız. Son olarak seaborn kütüphanesi yardımı ile corrolation matrix’ini oluşturup bu çıktılar üzerinde incelemeler yapacağız.

create function
bar
heatmap
corrolelation

Amacımız CLTV hesabı yapmak. Bunun için aşağıda sizlerle CLTV değerini hesapladığımız formülleri paylaşıyorum. 👇

Verimiz üzerinde birkaç işlem gerçekleştireceğiz. Öncelikle her müşteriye unique olarak verilen CLIENTCODE (müşteri kodu)’na göre gruplandıracağız. Bu gruplandırmayı yaparken ise CLTV için bize gerekli olan verileri bulmaya çalışacağız. Öncelikle DATE_ kolonumda bulunan tarih değerleri ile müşterimizin ilk ve son alışveriş tarihleri arasındaki gün değerini bulacağız. Daha sonrasında müşterim kaç kez alışveriş yaptığını bize verecek olan FICHENO (fatura numarası) yardımı ile kaç kere işlem yaptığını elde edeceğiz. Bu işlemler sırasında toplam kaç adet ürün aldığını AMOUNT kolonumu kullanarak bulacağım son olarak müşterim bu ürünleri alırken ne kadar para ödediğini bulmak için LINENETTOTAL sütunumdaki değerlerin her müşteriye göre toplamını alacağım.

Şimdi daha iyi anlaşılması açısından çıkan sonucu sizlere yorumlayacağım. Bir müşterim var ve bu müşterim bir müşteri numarasına sahip. Her müşterime göre gruplandırma yaparak bazı değerler elde ettim. Örneğin 10000120 numaralı müşterimin ilk ve son alışveriş tarihlerinin arasında 45 günlük bir süre var. Bu süre içerisinde toplam 5 kere işlem gerçekleştirmiş. Bu işlemler sırasında 7 adet ürün almış ve 24.27 birimlik bir para harcaması gerçekleştirmiş. 💵

Yavaş yavaş CLTV değerimizi hesaplamaya başlayacağız. İlk olarak müşteri başına ortalama bırakılan parayı bulmak için total harcama miktarını, toplam sipariş sayısına bölüyoruz ve bu sonuç bize ortalama bırakılan parayı veriyor. Bu değerimizi sütunlarımızın sonuna yeni bir değer oluşturarak her satır için ayrı ayrı uyguluyoruz.

Sırada purchase freq(satın alma sıklığı), churn rate(kayıp müşteri oranı),repeat rate(yineleme oranı) değerlerini buluyoruz.

Eğer her satıştan %5 kar elde ettiğimizi düşünürsek kar marjımızı toplam satış rakamımızı %5 ile çarparak bulabiliriz.

Customer Value değerini hesaplamak için birim başına kazanç değeri ile kişinin yaptığı tüm işlemleri çarpıyoruz ve bunu churn rate değerine bölüyoruz. Burada churn rate değerinde sadece 1 adet alışveriş yapmış müşteriyi kayıp müşteri olarak görüyoruz.

Ve son olarak CLTV değerimizi bulmak için hesapladığımız Customer Value değeri ile kar marjlarımızı çarpıyoruz ve yeni bir sütunda CLTV değerini her müşterimiz için buluyoruz.

Bulduğumuz CLTV değerlerini büyüklüklerine göre A,B,C,D harfleri ile sınıflandırıyoruz. A harfi en yüksek CLTV değeri sınıfını gösterirken D harfi ise en düşük CLTV değerine sahip sınıfımızı nitelendiriyor.

Bu sayede her müşteri için ayrı ayrı bu harfleri değerlendirerek, müşterilerimiz üzerinde alacağımız aksiyonları bulabiliriz.

Bir çalışmanın daha sonuna geldik. Veri bilimini alanında çeşitli projeler yapmaya ve paylaşmaya devam edeceğim. Benimle iletişime geçmek için aşağıda bulunan kanalları kullanabilirsiniz. Her türlü soru ve görüşlerinizi bekliyor olacağım. Sağlıcakla kalın. 🏆

🔗 Linkedin

--

--