Analiza danych sprzedaży sieci sklepów dyskontowych Lidl

Analiza trendów sprzedaży, zachowań klientów i historii zamówień w latach 2021-2022 w niemieckiej sieci sklepów dyskontowych Lidl

Wiktoria Madej, Agata Mazurek & Robert Mach

Opublikowane środa 24 styczeń 2024

Wstęp

Dane na których opiera się poniższa analiza zawieraja informacje związane ze sprzedażą w sklepach Lidl. Zawarte w nich są szczegółowe informacje o zamówieniach, klientach, produktach i transakcjach sprzedaży. W danych możemy znaleźć między innymi informacje na temat miejsca sprzedaży produktu, jego kategorii i konkretnej nazwy czy zysku, który osiągnęła firma na sprzedaży danego produktu. Zbiór na początkowym etapie (przed oczyszczeniem danych) zawiera 5091 obserwacji opisanych przez 23 zmienne.

Celem badawczym jest wykorzystanie powyższych danych do zrozumienia zachowań i preferencji klientów oraz analizy trendów. Stawiamy hipotezę główną, że istnieje statyczna istotność między analizowanymi czynnikami.

W niniejszym projekcie przyjmujemy następujące założenia:

  1. Reprezentatywność danych: Dane są reprezentatywne dla całej firmy.

  2. Kompletność danych: Dane są kompletne, a brakujące wartości nie wpływają znacząco na wyniki analizy.

  3. Stabilność warunków: Warunki w firmie pozostają stosunkowo stabilne w trakcie badania, a ewentualne zmiany są minimalne.

Pytania badawcze:

  1. Czy istnieje statystyczna istotność między sprzedażą, a segmentem klienta?

  2. Czy istnieje statystyczna istotność między zyskiem , a kategorią produktu?

  3. Czy istnieje statystyczna istotność między sprzedażą, a regionem sprzedaży?

  4. Czy istnieje statystyczna istotność między czasem dostawy, a sposobem płatności?

  5. Czy istnieje statystyczna istotność między czasem dostawy, a regionem sprzedaży?

Czyszczenie danych

Walidacja danych

Usuwamy kolumny o nazwach “Row.ID.O6G3A1.R6”, “ind1”, “ind2” ponieważ nie zawierają one istotnych dla nas informacji. Następnie, sprawdzamy typy posiadanych przez nas danych:

## 'data.frame':    5901 obs. of  20 variables:
##  $ Order.ID     : chr  "CA-2019-160304" "CA-2019-160304" "CA-2019-160304" "CA-2019-125206" ...
##  $ Order.Date   : chr  "01-01-2019" "02-01-2019" "02-01-2019" "03-01-2019" ...
##  $ Ship.Date    : chr  "07-01-2019" "07-01-2019" "07-01-2019" "05-01-2019" ...
##  $ Ship.Mode    : chr  "Standard Class" "Standard Class" "Standard Class" "First Class" ...
##  $ Customer.ID  : chr  "BM-11575" "BM-11575" "BM-11575" "LR-16915" ...
##  $ Customer.Name: chr  "Brendan Murry" "Brendan Murry" "Brendan Murry" "Lena Radford" ...
##  $ Segment      : chr  "Corporate" "Corporate" "Corporate" "Consumer" ...
##  $ Country      : chr  "United States" "United States" "United States" "United States" ...
##  $ City         : chr  "Gaithersburg" "Gaithersburg" "Gaithersburg" "Los Angeles" ...
##  $ State        : chr  "Maryland" "Maryland" "Maryland" "California" ...
##  $ Region       : chr  "East" "East" "East" "West" ...
##  $ Product.ID   : chr  "FUR-BO-10004709" "FUR-BO-10004709" "TEC-PH-10000455" "OFF-ST-10003692" ...
##  $ Category     : chr  "Furniture" "Furniture" "Technology" "Office Supplies" ...
##  $ Sub.Category : chr  "Bookcases" "Bookcases" "Phones" "Storage" ...
##  $ Product.Name : chr  "Bush Westfield Collection Bookcases, Medium Cherry Finish" "Bush Westfield Collection Bookcases, Medium Cherry Finish" "GE 30522EE2" "Recycled Steel Personal File for Hanging File Folders" ...
##  $ Sales        : num  73.9 173.9 232 114.5 30.1 ...
##  $ Quantity     : int  1 3 2 2 2 3 5 7 2 4 ...
##  $ Profit       : num  28.27 38.27 67.27 28.61 -5.26 ...
##  $ Returns      : chr  "#N/A" "#N/A" "#N/A" "#N/A" ...
##  $ Payment.Mode : chr  "Online" "Online" "Cards" "Online" ...

Zauważamy, że kolumny Order.Date oraz Ship.Date nie mają typu “date” tylko “character”. Z kolei kolumny Ship.Mode, Customer.ID, Segment, Country, City, State, Region, Product.ID, Category, Sub.Category oraz Payment.Mode również mają typ “character” zamiast “factor”. Zmieniamy typ danych dla odpowiednich kolumn:

## 'data.frame':    5901 obs. of  20 variables:
##  $ Order.ID     : Factor w/ 3003 levels "CA-2019-100041",..: 944 944 944 395 2551 2551 2551 73 73 2702 ...
##  $ Order.Date   : Date, format: "2019-01-01" "2019-01-02" ...
##  $ Ship.Date    : Date, format: "2019-01-07" "2019-01-07" ...
##  $ Ship.Mode    : Factor w/ 4 levels "Same Day","First Class",..: 4 4 4 2 4 4 4 4 4 4 ...
##  $ Customer.ID  : Factor w/ 773 levels "AA-10315","AA-10375",..: 91 91 91 458 123 123 123 96 96 247 ...
##  $ Customer.Name: chr  "Brendan Murry" "Brendan Murry" "Brendan Murry" "Lena Radford" ...
##  $ Segment      : Factor w/ 3 levels "Consumer","Corporate",..: 2 2 2 1 2 2 2 2 2 2 ...
##  $ Country      : Factor w/ 1 level "United States": 1 1 1 1 1 1 1 1 1 1 ...
##  $ City         : Factor w/ 452 levels "Aberdeen","Abilene",..: 137 137 137 228 369 369 369 42 42 57 ...
##  $ State        : Factor w/ 49 levels "Alabama","Arizona",..: 19 19 19 4 42 42 42 35 35 32 ...
##  $ Region       : Factor w/ 4 levels "Central","East",..: 2 2 2 4 1 1 1 1 1 3 ...
##  $ Product.ID   : Factor w/ 1755 levels "FUR-BO-10000112",..: 45 45 1604 1339 1455 1476 1692 306 786 1530 ...
##  $ Category     : Factor w/ 3 levels "Furniture","Office Supplies",..: 1 1 3 2 3 3 3 1 2 3 ...
##  $ Sub.Category : Factor w/ 17 levels "Accessories",..: 5 5 14 15 1 1 14 17 4 7 ...
##  $ Product.Name : chr  "Bush Westfield Collection Bookcases, Medium Cherry Finish" "Bush Westfield Collection Bookcases, Medium Cherry Finish" "GE 30522EE2" "Recycled Steel Personal File for Hanging File Folders" ...
##  $ Sales        : num  73.9 173.9 232 114.5 30.1 ...
##  $ Quantity     : int  1 3 2 2 2 3 5 7 2 4 ...
##  $ Profit       : num  28.27 38.27 67.27 28.61 -5.26 ...
##  $ Returns      : chr  "#N/A" "#N/A" "#N/A" "#N/A" ...
##  $ Payment.Mode : Factor w/ 3 levels "Cards","COD",..: 3 3 1 3 3 3 1 2 2 3 ...

Usuwamy wiersze zawierające dane z przyszłymi datami (operujemy jedynie na datach przeszłych). Filtrujemy również linijki, w których data dostawy jest wcześniejsza niż data zamówienia, ponieważ jest to błąd.

Nie zostały usunięte żadne wiersze, co świadczy o tym, że wszystkie daty były prawidłowe. Weryfikujemy, czy w pliku występują duplikaty:

## [1] 0

Duplikaty nie występują. Kolejnym krokiem jest sprawdzenie, czy dane w kolumnach z kategoriami są prawidłowe:

Rodzaj dostawy Liczba wystąpień
Same Day 344
First Class 959
Second Class 1147
Standard Class 3451
Segment Liczba wystąpień
Consumer 2997
Corporate 1774
Home Office 1130
Kraj Liczba wystąpień
United States 5901
Stan Liczba wystąpień
Alabama 35
Arizona 113
Arkansas 39
California 1189
Colorado 114
Connecticut 56
Delaware 43
District of Columbia 7
Florida 212
Georgia 115
Idaho 12
Illinois 293
Indiana 96
Iowa 24
Kansas 13
Kentucky 73
Louisiana 19
Maine 2
Maryland 63
Massachusetts 63
Michigan 138
Minnesota 46
Mississippi 36
Missouri 40
Montana 5
Nebraska 25
Nevada 16
New Hampshire 13
New Jersey 92
New Mexico 26
New York 672
North Carolina 159
North Dakota 7
Ohio 293
Oklahoma 49
Oregon 65
Pennsylvania 335
Rhode Island 36
South Carolina 19
South Dakota 8
Tennessee 120
Texas 565
Utah 23
Vermont 9
Virginia 104
Washington 337
West Virginia 4
Wisconsin 77
Wyoming 1
Region Liczba wystąpień
Central 1381
East 1688
South 931
West 1901
Kategoria Liczba wystąpień
Furniture 1249
Office Supplies 3569
Technology 1083
Podkategoria Liczba wystąpień
Accessories 461
Appliances 279
Art 465
Binders 915
Bookcases 131
Chairs 355
Copiers 38
Envelopes 133
Fasteners 124
Furnishings 573
Labels 211
Machines 65
Paper 825
Phones 519
Storage 498
Supplies 119
Tables 190
Rodzaj płatności Liczba wystąpień
Cards 1284
COD 2453
Online 2164

Wszystkie dane są prawidłowe. Następnie weryfikujemy, czy dane w kolumnach Order.ID, Product.ID i Customer.ID są poprawne:

ID zamówienia ID klienta ID produktu
CA-2019-152072 Dp-13240 OFF-EN-10003040
CA-2019-152072 Dp-13240 OFF-AR-10001573
CA-2019-152072 Dp-13240 TEC-AC-10000844
CA-2019-120530 Dl-13600 FUR-CH-10000454
CA-2019-140543 Co-12640 OFF-ST-10000563
US-2020-155299 Dl-13600 OFF-AP-10002203
CA-2020-169691 Dp-13240 OFF-ST-10001291
CA-2020-169691 Dp-13240 OFF-PA-10003022
CA-2020-169691 Dp-13240 OFF-LA-10002312
US-2020-132381 Dp-13240 FUR-TA-10002356

Mamy 26 niepoprawnych wartości w Customer.ID (Dp), co świadczy o niepoprawności w nazwisku któregoś z klientów. Wszystkie błędne wartości w kolumnie Customer.ID zostały poprawione.

Brakujące obserwacje

Sprawdzamy, czy występują brakujące obserwacje:

Brakujące obserwacje nie występują, ale przyglądamy się dokładniej kolumnie Returns:

Zwrot Liczba wystąpień
#N/A 5614
1 287

Mamy 5614 wartości “#N/A”, które zastąpimy “FALSE” oraz 287 wartości “1”, które zastąpimy “TRUE”:

Zwrot Liczba wystąpień
FALSE 5614
TRUE 287

Obserwacje odstające

Sprawdzamy, jak prezentują się wartości w kolumnie Quantity:

Ilość Liczba wystąpień
1 563
2 1397
3 1392
4 703
5 764
6 305
7 362
8 177
9 151
10 29
11 16
12 14
13 13
14 15

Dane są prawidłowe, ilość zamawianych sztuk produktów zawiera się w przedziale od 1 do 14.

Ostatnim krokiem jest usunięcie wartości, w których Profit jest większy niż Sales. Dodatkowo, zaokrąglamy je do 2 miejsc po przecinku oraz sprawdzamy, czy występują wartości odstające:

Wartości odstające występują, natomiast nie decydujemy się ich usunąć, ponieważ chcemy, aby dane które mamy odwzierciedlały rzeczywistość.

Analiza

Po upewnieniu się, że posiadane przez nas dane nie zawierają błędów, możemy przejść do ich szczegółowej analizy.

Jak widać na powyższym wykresie, najwyższą sprzedaż zanotowano w grudniu 2020 roku, za to najniższa sprzedaż była zanotowana w styczniu 2019 roku. Możemy tu zauważyć lekki trend rosnący, ponieważ z miesiąca na miesiąc wartości sprzedaży wzrastały względem wartości sprzedaży z poprzedzających miesięcy, ale można zauważyć odstępstwa od tej tendencji.

Na tym wykresie można zauważyć, że skumulowany zysk ma tendencje wzrostową, ale w niektórych miesiącach można było zauważyć straty. Oznacza to, że w tych miesiącach firma nie generowała zysków, czyli poniosła stratę. Takimi miesiącami były grudzień 2019 oraz maj 2020 roku.

Jak widać na powyższych wykresach, zysk skumulowany w 2020 roku był zdecydowanie wyższy niż w roku 2019. W roku 2019 zysk wynosił około 67500 USD, a w roku 2020 zysk wynosił około 79000 USD.

Najwyższą sprzedaż można było zaobserwować w Kalifornii, a następnie w Nowym Jorku. Kolejnymi dość znaczącymi stanami pod względem sprzedaży są: Texas, Waszyngton, Pensylwania Ohio oraz Illinois. Inne stany posiadają bardzo podobne dane sprzedażowe. Najmniejszą sprzedaż można zaobserwować w stanie Maine oraz w mieście Waszyngton.

Jak można zauważyć na powyższych diagramach słupkowych, im wyższa sprzedaż, tym wyższy zysk. Dlatego też, wykresy te wyglądają bardzo podobnie, ponieważ zysk jest uzależniony od sprzedaży. Najwyższa sprzedaż, jak i zysk występują w segmencie Consumer, następnie w segmencie Corporate, a najmniejsza Sprzedaż oraz zysk generuje segment Home Office.

Na tym wykresie możemy zauważyć, że przy wartości sprzedaży 115000 USD Tables nie generują one zysku, a raczej tworzą stratę. To samo możemy zauważyć w takich produktach jak Supplies oraz Bookcases. Machines oraz Fasteners nie generują ani zysku ani straty. Największy zysk generują Accessories, a najwyższą sprzedaż Phones.

ID produktu Nazwa Całkowita sprzedaż Całkowity zysk Całkowita ilość
TEC-CO-10004722 Canon imageCLASS 2200 Advanced Copier 7917.95 6159.99 7
TEC-CO-10001449 Hewlett Packard LaserJet 3310 Copier 13300.78 5399.92 25
TEC-MA-10001047 3D Systems Cube Printer, 2nd Generation, Magenta 14334.89 3717.97 11
TEC-MA-10001127 HP Designjet T520 Inkjet Large Format Printer - 24” Color 4749.95 2799.98 5
OFF-BI-10001359 GBC DocuBind TL300 Electric Binding System 12890.25 2753.75 21

W powyższej tabeli zostały przedstawione produkty, które generują najwyższy zysk.

ID klienta Imię i naziwsko Całkowita sprzedaż Całkowity zysk Całkowita ilość
HL-15040 Hunter Lopez 6091.11 5174.40 16
AR-10540 Andy Reiter 6353.82 2617.21 22
DR-12940 Daniel Raglin 6408.62 2549.73 33
SE-20110 Sanjit Engle 7821.98 2436.94 54
BS-11365 Bill Shonely 9199.78 2405.36 18

W powyższej tabeli zostali przedstawienie klienci, którzy generują największy zysk. Została wymieniona szóstka klientów. Największy zysk wygenerował Hunter Lopez.

Jak widać na powyższym diagramie, mamy wyodrębnione 4 tryby dostawy. Najkrótszy z nich to tryb same day, gdzie dostawa przychodzi średnio tego samego dnia, kolejnym trybem jest first class, gdzie średni czas dostawy to ponad dwa dni. Występują jeszcze dwa tryby: second class, gdzie średni czas dostawy wynosi ponad 3 dni oraz najdłuższy tryb – standard class, którego średni czas dostawy wynosi średnio ponad 5 dni.

Jak widać na powyższym wykresie największy udział w formie płatności ma płatność online. Można zauważyć 2 wyjątki od tej reguły. Kiedy wysokość sprzedaży wynosi 1400/1500 USD to największy udział ma COD zabierając tym samym udział płatnością online, za to kiedy wysokość sprzedaży wynosi 1900/2000 USD największy udział ma COD zabierając tym samym udział płatnością kartą.

Jak można zauważyć na powyższym wykresie – nie posiadamy danych do stycznia 2020 roku. Dlatego też możemy wyciągać wnioski tylko z roku 2020. Najmniejszy udział zwrotów można zaobserwować w maju 2020 roku, za to największy udział zwrotów można zaobserwować w sierpniu 2020 roku oraz w lutym 2020 roku.

Analiza opisowa

Kolejnym etapem jest przeprowadzenia analizy opisowej posiadanych danych.

Wykres boxplot pokazuje jak rozmieszczone są statystyki opisowe. Wiemy, że mediana sprzedaży wynosi 128,64 USD, co sugeruje, że 50% wartości sprzedaży było większa niż wartość 128,64 USD. Kwartyl dolny wynosi 71,975 USD, co sugeruje, że 25% wartości sprzedaży było mniejsze niż wartość 71,975 USD. Kwartyl górny wynosi 264,24 USD, co sugeruje, że 75% wartości sprzedaży było większe niż wartość 264,24 USD.

Wykres boxplot pokazuje jak rozmieszczone są statystyki opisowe. Wiemy, że mediana zysku wynosi 8,49 USD, co sugeruje, że 50% wartości zysku było większa niż wartość 8,49 USD. Kwartyl dolny wynosi 1,79, co sugeruje, że 25% wartości zysku było mniejsze niż wartość 1,79 USD. Kwartyl górny wynosi 28,20 USD, co sugeruje, że 75% wartości zysku było większe niż wartość 28,20 USD.

Region Central East South West
Minimum 0.84 1.50 2.21 1.41
Maksimum 5455.96 9099.93 4749.95 5107.96
Kwartyl dolny 67.45 72.11 73.24 75.76
Mediana 123.76 129.94 127.66 131.02
Kwartyl górny 250.09 265.09 276.86 264.71
Średnia 244.80 266.10 270.98 273.02
Odch. standardowe 405.89 529.29 448.27 470.95
IQR 182.64 192.98 203.62 188.95
Odch. ćwiartkowe 91.32 96.49 101.81 94.47
Odch. standardowe w % 1.66 1.99 1.65 1.72
Odch. ćwiartkowe w % 1.48 1.49 1.60 1.44
Skośność 5.15 7.39 4.51 4.99
Kurtoza 40.29 79.22 28.04 33.54

Powyższa tabela przedstawia statystyki opisowe dla sprzedaży z podziałem na poszeczególne regiony. Najwyższa średnia występuje w regionie zachodnim, a najniższa w regionie centralnym. Jeżeli chodzi o medianę, to również najwyższa występuje w regionie zachodnim, a najniższa w regionie centralnym.

Wnioskowanie

Ostatnim etapem jest przeprowadzenie wnioskowania i przeprowadzenie testów badających zależności pomiędzy poszczególnymi zmiennymi.

H0: sales nie zależy od segmentu

H1: sales zależy od segmentu

Pvalue wynosi 0.03 i jest mniejsze od przyjętego poziomu istotności równemu alfa = 0.05, co oznacza, że odrzucamy hipotezę zerową i skłaniamy się do tego, że sprzedaż zależy od segmentu.

H0: profit nie zależy od kategorii

H1: profit zależy od kategorii

Pvalue wynosi 6.58*10-6 i jest mniejsze od przyjętego poziomu istotności równemu alfa = 0.05, co oznacza, że odrzucamy hipotezę zerową i skłaniamy się do tego, że zysk zależy od kategorii.

H0: sales nie zależy od regionu

H1: sales zależy od regionu

Pvalue wynosi 0.26 i jest większe od przyjętego poziomu istotności równemu alfa = 0.05, co oznacza, że nie ma podstaw do odrzucenia hipotezy zerowej i skłaniamy się do tego, że sprzedaż nie zależy od regionu.

H0: czas dostawy nie zależy od sposobu płatności

H1: czas dostawy zależy od sposobu płatności

Pvalue wynosi 5.28*10-3 i jest mniejsze od przyjętego poziomu istotności równemu alfa = 0.05, co oznacza, że odrzucamy hipotezę zerową i skłaniamy się do tego, że czas dostawy zależy od sposobu płatności.

H0: czas dostawy nie zależy od regionu

H1: czas dostawy zależy od regionu

Pvalue wynosi 2.31*10-9 i jest mniejsze od przyjętego poziomu istotności równemu alfa = 0.05, co oznacza, że odrzucamy hipotezę zerową i skłaniamy się do tego, że czas dostawy zależy od regionu.

Podsumowanie

Nasz projekt opiera się na danych Lidla ze Stanów Zjednoczonych. Dane, które posiadamy to informacje o zamówieniach, klientach, produktach i transakcjach sprzedaży.

Na początku pracy postanowiliśmy oczyścić wszystkie dane. Przebrnęliśmy przez etap walidacji danych, brakujących obserwacji, które nie występowały oraz obserwacji odstających.

Po oczyszczeniu danych przeszliśmy do etapu analizy oraz analizy opisowej. Podsumowując największa sprzedaż została zanotowana w grudniu 2020 roku, a skumulowany zysk był dużo większy w roku 2020, niż w roku 2019. Kalifornia była stanem, w którym odnotowano największa sprzedaż, za to najmniejszą sprzedaż odnotowano w Maine. Najbardziej popularną formą płatności była płatność online. Mediana sprzedaży wynosiła 128,64 USD, co oznacza ze 50% wartości sprzedaży było większe niż 128,64 USD. Jeżeli chodzi o zysk, to jego mediana wynosiła 8,49 USD, co sugeruje, że 50% wartości zysku było większe niż wartość 8,49 USD.

Ostatnim etapem naszej pracy było wnioskowanie, gdzie sprawdzaliśmy różnego rodzaju zależności. Skupiliśmy się między innymi na zależności między sprzedażą, a segmentem oraz czasem dostawy, a metodą płatności.

Uważamy, że nasz projekt idealnie pokazuje jak kształtowała się sprzedaż oraz zysk sieci sklepów Lidl w Stanach Zjednoczonych na przestrzeni lat 2019 - 2020.