Veri Analizi – E-ticaret Uygulaması

Merhaba VBO okuyucuları! Bu yazımda, e-ticaret örnek verisi üzerinden veri analizi uygulaması yapacağız. Bir önceki yazımda, CRM ve müşteri analitiği hakkında genel bilgiler verip sonraki yazılarımda örnekler uygulayacağımdan bahsetmiştim. Yazıya buradan ulaşabilirsiniz.

Python üzerinde yapacağımız uygulama için, Kaggle.com üzerinden indirdiğimiz e-ticaret verisini analiz edip, bazı çıkarımlarda bulunacağız. Veri analizi, aslında sorular sormakla başlar. Verideki her sütundan birçok soru çıkartılabilir ve cevabı bulunabilir. Bunu yaparken bazı istatistiksel yöntemlerden de destek alabiliriz; histogram grafikleri çizerek, sütunlar arasındaki korelasyona bakarak, boxplot grafiklerinden faydalanarak veri hakkında daha detaylı bilgilere sahip olabiliriz.

Uygulama için kullanacağımız veri setini bu linkten indirebilirsiniz.

Kaggle.com’da veri setleri hakkında özet bilgiler bulunuyor. Örneğin, indirdiğimiz veri 25.900 tekil sipariş kodu, 4.070 tekil stok kodu, 4.223 ürün içeriği içeriyor. Burada şu yorumlamaları yapabiliriz:

  • Bir sipariş ortalama yaklaşık 6 ürün içermekte,
  • Bazı ürünler birden fazla isme sahip,
  • Sipariş tarihi görselinin dağılımına bakıldığında son dönemlere doğru bir artış gözlemlenmekte.

Bu verideki her sütun için aşağıdaki gibi birçok soru sorulabilir ve cevabı alınabilir.

  • Tarih Bazında: Hangi tarihte en çok harcama yapılmış? Hangi müşteriler x tarihinde en yüksek tutarda alışveriş yapmıştır?
  • Müşteri Bazında: En düşük alışveriş tutarına sahip müşteriler kimlerdir? x müşterisi hangi ülkelerden alışveriş yapımaktadır?
  • Sipariş Bazında: Bir siparişte kaç farklı ürün bulunmaktadır?
  • Ürün Bazında: En çok satılan ürünler hangileridir?
  • Ülke Bazında: Hangi ülkeler daha fazla sipariş adetine & tutarına sahiptir?

Şimdi, veriyi Python ile okuyalım ve incelemeye devam edelim:

Verimizi yükledik:

data_1 = pd.read_csv('data.csv',encoding = 'unicode_escape')
data_1.head()
E-ticaret veri analizi örneği

Kullanacağımız bazı kütüphaneleri yüklüyoruz:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

Veri tiplerini incelemek ve gerekirse dönüştürebilmek için aşağıdaki satırı uyguluyoruz:

data_1.dtypes
E-ticaret veri tiplerinin incelenmesi ve dönüştürülmesi

‘InvoiceDate’ sütununu sonraki hesaplamalarda kullanabilmek için object’ten datetime’a çeviriyoruz.

data_1['InvoiceDate'] = pd.to_datetime(data_1['InvoiceDate'])
data_1.dtypes

Fiyatlarda indirim uygulanmış, kirli data vs. olabilir. Bundan kurtulmak için, fiyat ve miktarı 0’dan büyük olan siparişleri alıyoruz:

data_1 = data_1[(data_1['UnitPrice'] > 0) & (data_1['Quantity'] > 0)]
data_1[data_1['UnitPrice'] == 0]
E-ticaret örnek veri analizi
Burada kontrol için ‘UnitPrice’ı 0 olanları filtreledik, herhangi bir değer gelmediğine göre işlem doğru uygulanmış demektir.

Numerik sütunlardaki verinin dağılımına şu şekilde bakabiliriz:

plt.subplots(figsize=(12,6))
sns.boxplot(data_1.UnitPrice)
plt.show()
Veri değişkenlerinden birinin dağılımı
Burada UnitPrice değişkeninin belirli noktalarda yoğunlaştığını görüyoruz, uç değerler de boxplot üzerinde görülüyor.

Müşteri bazında inceleme

Bir müşterinin ülke bazında kaç sipariş verdiğini şu şekilde bulabiliriz:

data_1.groupby(by=['CustomerID','Country'])['InvoiceNo'].count().head()
E-ticaret verilerin analizi ve raporlanması
Bir CustomerID birden fazla ülkeden alışveriş yapmışsa, groupby’a Country de ekliyoruz.

Bir siparişteki bir ürüne ödenen toplam fiyatı bulmak için, ‘UnitPrice’ ve ‘Quantity’ sütunlarını çarpıyoruz.

data_1['TotalPrice'] = data_1['UnitPrice']*data_1['Quantity']
data_1.head()

Bir müşterinin toplam harcamasını şu şekilde buluyoruz:

data_1.groupby(by=['CustomerID'], as_index=False)['TotalPrice'].sum().head()
Örnek müşteri verisi analizi

Tarih bazında inceleme

Aylık bazda toplam ciroyu göstermek için öncelikle yıl-ay bazlı bir sütun oluşturuyoruz, sonrasında görselleştiriyoruz:

data_1['purch_month'] = data_1.InvoiceDate.dt.to_period('M').astype(str)
order_per_month = data_1.groupby('purch_month', as_index=False).TotalPrice.sum()
ax = sns.lineplot(x="purch_month", y="TotalPrice", data=order_per_month)
ax.set_title('Orders per month')
Veri analizi sonrası ay bazında toplam satışı gösteren grafik
Burada satışların Kasım ayında en yüksek değere sahip olduğunu görüyoruz. Bu veriler bir e-ticaret şirketine ait olduğu için, bu artış ‘Cadılar Bayramı’ etkisi, ‘Black Friday’ etkisi olarak yorumlanabilir.

Ülke bazında inceleme

Ülke bazında sipariş sayılarına bakmak ve görselleştirme adına şu işlemleri uygulayabiliriz:

data_2 = data_1.groupby('Country')['InvoiceNo'].count().sort_values(ascending=False)
Ülke bazlı satış verisi analizi
En çok sipariş United Kingdom’dan gelmekte, burada sort_values uygulandığından verileri en yüksek değerden göstermeye başlıyor.
data_2.plot('bar')
plt.xlabel('Orders')
plt.ylabel('Country')
plt.title('OrdersperCountry')
plt.show()
Ülke bazında satış verisi grafiği

Ülkelerin toplam harcama tutarına göre aldıkları paya bakıyoruz.

data_grouped =  data_1.groupby(by=['Country','purch_month'], as_index=False)['TotalPrice'].sum()
data_grouped['percentage'] = data_grouped['TotalPrice']/data_grouped['TotalPrice'].sum()
data_per =  data_grouped.groupby(by=['Country'], as_index=False)['percentage'].sum().sort_values('percentage',ascending=False)
data_per.head()
Satıştan alınan payın veri analizi ile  hesaplanması
Buradan şunu çıkartabiliriz; Birleşik Krallık satışların %85’ini getiriyor, sonraki en fazla ciro
getiren ülke Hollanda. Burada trendlere bakarken Birleşik Krallık’ın ağırlığı fazla olduğundan, kendi yönünde analizleri saptırabilir. Bu yüzden ülke bazında trendleri yorumlamak daha doğru olabilir.

Satışlardan en çok payı alan ilk 2 ülkeyi filtreleyip, aylık satışlardaki trende bakıyoruz:

df = data_grouped[data_grouped['Country'].isin(['United Kingdom','Netherlands'])]
plt.figure(figsize=(12,6))
sns.lineplot(data = df, x='purch_month',y='TotalPrice',err_style='bars', hue='Country')
Ay bazında ülkelerin veri analizi raporu
Tüm ülkeler bazında gördüğümüz Kasım ayındaki yükselişin aslında ülke bazında farklılaştığını bu grafikle görebiliyoruz. Birleşik Krallık’taki ‘Black Friday’ ya da ‘Cadılar Bayramı’nın Kasım ayındaki etkisi, Hollanda’da satışlara yansımamış görünüyor.

Bu yazıda veri analizi uygulamalarıyla farklı sorulara cevaplar verdik. Tabii ki bu sorular daha arttırılabilir ve karmaşık hale gelebilir. Müşteri ve sipariş verisi üzerinde çalışmak genel olarak keyifli, ancak bazen de zorlayıcı olabiliyor. Doğru soruları sorabilmek ve verideki örüntüleri (pattern) takip edebilmek önemli. Sonrasında veri temizleme ve manipülasyonlar ile daha sağlıklı analiz & modellemeler yapılabilir. Yorumlarınız ve sorularınız için şimdiden teşekkürler.

Yazar Hakkında
Toplam 9 yazı
Sena Merter Dereli
Sena Merter Dereli
Pazarlama & Müşteri Analitiği Araştırmacısı / n11.com'da Pazarlama Analitiği Yöneticisi
Yorumlar (Yorum yapılmamış)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara