В сучасному швидко змінюваному цифровому ландшафті електронна комерція стала основою роздрібної торгівлі, де бізнеси змагаються не лише за свої продукти, а й за здатність приймати рішення на основі даних. Розуміння попиту споживачів та виявлення закономірностей у даних про продажі є критичними кроками для оптимізації бізнес-стратегій та забезпечення довгострокового зростання. Оскільки з онлайн-транзакцій генерується величезна кількість даних, компанії повинні використовувати потужні інструменти, такі як SQL та Python, для витягування практичних висновків і покращення процесів прийняття рішень.
У цьому портфоліо я аналізую симульовані дані електронної комерції з Tokopedia, щоб дослідити попит споживачів, патерни продажів та можливості для розвитку бізнесу. Набір даних включає детальну інформацію про клієнтів, історії замовлень, методи оплати та специфікації продуктів, що створює всеосяжну основу для аналізу. Використовуючи Python та SQL, я зосереджуюсь на ключових метриках, таких як найпопулярніші продукти, тренди продажів за різні періоди часу та ефективність маркетингових кампаній. Це портфоліо демонструє практичне використання Python для очищення даних, трансформації та аналізу, показуючи, як стратегії на основі даних можуть підтримувати більш розумні рішення в галузі електронної комерції.
Що таке Python?
Python — це мова програмування, яка широко використовується для аналізу даних завдяки своїй простоті та потужній бібліотечній підтримці. Бібліотеки, такі як Pandas для маніпуляцій з даними, NumPy для числових обчислень, Matplotlib і Seaborn для візуалізації та Scikit-learn для машинного навчання, роблять Python універсальним інструментом для різних завдань аналізу даних. Python можна використовувати для очищення даних, виконання статистичного аналізу, створення візуалізацій та побудови прогнозних моделей ефективно.
Чому Python важливий для аналізу даних?
Python дуже популярний в аналізі даних завдяки своїй гнучкості, потужності та великій бібліотечній підтримці. Ось деякі ключові причини, чому Python є кращим вибором для аналізу даних:
- Спеціалізовані бібліотеки для аналізу даних: Python пропонує бібліотеки, спеціально розроблені для аналізу даних, що спрощує роботу з великими та складними наборами даних.
- Управління даними та маніпуляції: Python спрощує керування різноманітними наборами даних, включаючи дані з CSV-файлів, SQL-баз даних, Excel-таблиць або веб-API, за допомогою бібліотек, таких як Pandas.
- Статистичний та математичний аналіз: Python надає інструменти для виконання різноманітних статистичних обчислень, від базових статистик, таких як середнє та медіана, до складніших статистичних аналізів.
- Візуалізація даних: Візуалізація є важливою частиною аналізу даних, оскільки дозволяє виявити закономірності, тенденції та аномалії в наборах даних.
- Машинне навчання та прогнози: Python також широко використовується для створення моделей машинного навчання, які можуть прогнозувати результати на основі даних.
Аналіз набору даних: Дані електронної комерції
У цьому аналізі ми працюємо з чотирма основними наборами даних, що представляють різні аспекти транзакцій електронної комерції:
order_detail
: Цей набір даних містить інформацію про транзакції, включаючи ідентифікатори замовлень, ідентифікатори клієнтів, ідентифікатори продуктів (SKU), ціни, кількість замовлених товарів, знижки та деталі оплати.sku_detail
: Цей набір даних надає детальну інформацію про кожен продукт (SKU), таку як найменування продуктів, категорії, базові ціни та вартість проданих товарів (COGS).customer_detail
: Цей набір даних включає інформацію про реєстрацію клієнтів, таку як ідентифікатори клієнтів і дати реєстрації на платформі.payment_detail
: Цей набір даних містить доступні методи оплати, кожен з яких ідентифіковано унікальним ідентифікатором платежу.
Кейс: Почнемо
Перш ніж розпочати кейс, давайте ознайомимося з Google Colab. Google Colab (Colaboratory) — це веб-платформа, яка дозволяє користувачам виконувати код Python безпосередньо у браузері без необхідності встановлення.
Google Colab популярний серед data scientists (Data Scientists), дослідників та розробників, оскільки підтримує Jupyter notebooks та надає безкоштовний доступ до GPU та TPU для пришвидшення обчислень.
Зовнішній вигляд Google Colab
Перед тим, як розпочати роботу над кейсом, переконайтеся, що необхідні бібліотеки, такі як Pandas, NumPy, Seaborn та Matplotlib, імпортовані для полегшення аналізу даних та візуалізації. Використовуйте наступні команди для імпорту цих бібліотек:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from pandas.tseries.offsets import BDay
Далі завантажте набори даних (order_detail
, payment_detail
, customer_detail
та sku_detail
) у dataframes (DataFrames), як показано нижче:
# Data sources
path_od = "https://raw.githubusercontent.com/dataskillsboost/FinalProjectDA11/main/order_detail.csv"
path_pd = "https://raw.githubusercontent.com/dataskillsboost/FinalProjectDA11/main/payment_detail.csv"
path_cd = "https://raw.githubusercontent.com/dataskillsboost/FinalProjectDA11/main/customer_detail.csv"
path_sd = "https://raw.githubusercontent.com/dataskillsboost/FinalProjectDA11/main/sku_detail.csv"
df_od = pd.read_csv(path_od)
df_pd = pd.read_csv(path_pd)
df_cd = pd.read_csv(path_cd)
df_sd = pd.read_csv(path_sd)
Щоб перевірити, чи правильно завантажені дані, перегляньте набір даних за допомогою наступних команд:
df_od.head()
df_pd.head()
df_cd.head()
df_sd.head()
Виконання команди dfod.head()_
Виконання команди dfpd.head()_
Виконання команди dfdf.head()_
Виконання команди dfsd.head()_
Команда head()
показує перші 5 рядків (за замовчуванням) набору даних. Ви можете налаштувати кількість рядків, що відображаються, передавши число як параметр (наприклад, df_od.head(10)
). Зверніть увагу, що Python використовує нульову індексацію (zero-based indexing), що означає, що перший рядок даних має індекс 0.
Після перевірки даних імпортуйте та виконуйте SQL-команди в Python notebook для відображення зв'язків між таблицями в наборі даних.
Запуск SQL в Google Colab
SQL запит для об’єднання даних
Після завершення відобразимо та змінимо типи даних у стовпцях для полегшення обробки даних.
Відображення типів даних для кожного стовпця
Зміна типів даних
Метою зміни типів даних є спрощення подальшої обробки даних, зокрема зміна типів даних для before_discount
, discount_amount
, after_discount
та base_price
з float на integer.
Зміна типу стовпця Date на Datetime
А також типи даних для order_date
і registered_date
змінюються на Datetime.
Кейс: Проблема 1
Шановний Data Analyst (Data Analyst),
Шановний Data Analyst,
Наприкінці цього року компанія нагородить клієнтів, які виграють у Конкурсі до кінця року. Маркетингова команда потребує вашої допомоги у визначенні приблизних призів для переможців конкурсу. Призи будуть обрані з Топ-5 продуктів категорії “Мобільні телефони та планшети” за 2022 рік, на основі найбільшої кількості проданих одиниць (is_valid = 1).Будь ласка, допоможіть нам надати ці дані до кінця цього місяця.
Дякуємо за вашу допомогу.З повагою,
Маркетингова команда
Відповідь: Для того, щоб відповісти на це питання, ми використовуємо наступний код на Python:
prizedata = pd.DataFrame(
df[(df['is_valid']==1) & # фільтрація даних за is_valid = 1
(df['category']=='Mobiles & Tablets') & # фільтрація даних за категорією Mobiles & Tablets
((df['order_date']>='2022-01-01') & (df['order_date']<='2022-12-31'))] # показуємо лише дані за 2022 рік
.groupby(['sku_name'])['qty_ordered'].sum() # групуємо дані за sku_name і сортуємо їх за сумою qty_ordered
.sort_values(ascending=False) # сортуємо дані від найбільшого до найменшого
.head(5) # показуємо лише топ 5 найбільших значень
.reset_index(name='qty_total_2022') # задаємо ім'я стовпця qty_total_2022
)
# показуємо остаточний результат
prizedata
Цей синтаксис дозволяє фільтрувати дані, групувати їх за допомогою groupby, підсумовувати замовлення за допомогою sum(), сортувати за допомогою sort_values(), отримувати 5 найбільших елементів за допомогою head() і скинути індекс за допомогою reset_index().
Виведення результату
Після цього ми побудуємо графік за допомогою наступної команди:
# сортуємо дані для побудови діаграми
prizedata.sort_values(
by=['qty_total_2022'],
ascending=False,
inplace=True
)
# як побудувати графік
prizedata.plot(
x='sku_name',
y=['qty_total_2022'],
kind='bar',
grid = True,
xlabel = 'Продукти',
ylabel = 'Кількість_2022',
figsize=(13,5),
rot = 0,
title = 'Топ 5 продуктів',
table = False,
secondary_y = False
)
Цей синтаксис сортує prizedata
за qty_total_2022
у спадаючому порядку і створює стовпчикову діаграму для відображення Топ 5 продуктів разом із їх кількостями за 2022 рік. Графік налаштовано з лініями сітки, підписами осей та зміненим розміром фігури.
Стовпчикова діаграма для Питання №1
Інсайт:
Згідно з даними, Топ 5 продуктів у категорії Мобільні телефони та планшети (Mobiles & Gadgets) з найбільшою кількістю проданих одиниць у 2022 році:
- IDROID_BALRX7-Gold: 1000 одиниць продано
- IDROID_BALRX7-Jet Black: 31 одиниця продана
- Infinix Hot 4-Gold: 15 одиниць продано
- Samsung Grand Prime Plus-Black: 11 одиниць продано
- Infinix Zero 4-Grey: 10 одиниць продано
Оскільки IDROID_BALRX7-Gold має значно більші продажі порівняно з іншими 4 продуктами, його рекомендується обрати як приз для Конкурсу до кінця року.
Кейс: Проблема 2
Шановний Data Analyst (Data Analyst),
Після спільної наради між Складською командою (Warehouse Team) та Маркетинговою командою (Marketing Team) було виявлено, що наявність товарів у категорії Інші (Others) залишалася високою на кінець 2022 року.Ми просимо вашу допомогу для аналізу даних про продажі (sales data) для категорії Інші (Others) та порівняння кількості продажів між 2021 та 2022 роками. Ми підозрюємо, що в 2022 році спостерігається зниження обсягів продажів порівняно з 2021 роком. Будь ласка, також включіть дані для всіх 15 категорій.
Якщо дійсно спостерігається зниження обсягів продажу в категорії Інші (Others), надайте дані про Топ 20 продуктів, що зазнали найбільшого зниження продажів у 2022 році порівняно з 2021 роком. Ця інформація буде використана для обговорення на наступній нараді.
Будь ласка, надайте запитувані дані не пізніше, ніж через 4 дні з сьогоднішнього дня.
Дякуємо за вашу допомогу.З повагою,
Складська команда (Warehouse Team)
Відповідь 2.1: Порівняння кількості продажів між 2021 та 2022 роками
Спочатку відфільтруємо дані для 2021 та 2022 років за допомогою наступних команд:
# фільтрація даних за is_valid = 1 і показ тільки даних за 2021 та 2022 роки
data_2022 = df[(df['is_valid']==1) & (df['order_date'].dt.year==2022)]
data_2021 = df[(df['is_valid']==1) & (df['order_date'].dt.year==2021)]
Далі, групуємо дані за категорією та обчислюємо загальну кількість проданих одиниць:
# групуємо дані за категорією та сортуємо їх за сумою qty_ordered
data_2022_gb = data_2022.groupby(['category'])['qty_ordered'].sum()
data_2021_gb = data_2021.groupby(['category'])['qty_ordered'].sum()
Поєднуємо дані за 2021 та 2022 роки і обчислюємо прогрес продажів між двома роками:
# дані 2021 до 2022 v.2
data2_merge = pd.merge(data_2022_gb, data_2021_gb, how='outer', on='category', suffixes=('_2022','_2021'))
data2_merge.sort_values(by=['category'],ascending=True)
# прогрес продажів з 2021 по 2022 рік
data2_merge['sales_progress'] = data2_merge['qty_ordered_2022'] - data2_merge['qty_ordered_2021']
Визначимо функцію для категоризації стану продажів:
# стан прогресу продажів з 2021 по 2022 рік
def sales_status(status):
if status > 0:
return "Збільшено"
elif status < 0:
return "Зменшено"
else:
return "Без змін"
# застосовуємо стан прогресу продажів
data2_merge['status'] = data2_merge['sales_progress'].apply(sales_status)
Сортуємо категорії за прогресом продажів, щоб показати Топ 15 категорій:
# сортуємо 15 категорій за прогресом продажів від найменшого до найбільшого
data2_sort = data2_merge.sort_values(by=['sales_progress'],ascending=True)
# показуємо дані
data2_sort
Нарешті, візуалізуємо прогрес продажів 2021–2022 за допомогою горизонтальної стовпчикової діаграми:
Виведення результату
# як побудувати графік для кращого розуміння
plt.figure(figsize=(17,5))
plt.barh(data2_sort.index, data2_sort['sales_progress'], color='skyblue')
plt.xlabel('Прогрес продажів')
plt.ylabel('Категорія')
plt.title('Прогрес продажів з 2021 по 2022 рік')
plt.gca().invert_yaxis()
plt.show
Цей синтаксис використовується для сортування датасету prizedata
за стовпцем qty_total_2022
у спадаючому порядку, а потім створення горизонтальної стовпчикової діаграми, де на осі y відображаються sku_name
, а на осі x — qty_total_2022
, з відповідними налаштуваннями підписів, заголовка та розміру.
Гістограма для питання номер 2.1
Інсайт:
Аналіз показує, що категорія Інші (Others) зазнала зниження продажів у 2022 році порівняно з 2021 роком.
Додаткові категорії, які зазнали зниження продажів, включають Soghaat, Чоловічу моду (Men’s Fashion) та Краса та догляд (Beauty & Grooming).
Водночас, 11 категорій зафіксували зростання продажів, зокрема Книги (Books), Побутова техніка (Appliances), Здоров'я та спорт (Health & Sports), Обчислювальна техніка (Computing), Школа та освіта (School & Education), Дім та побут (Home & Living), Діти та немовлята (Kids & Baby), Розваги (Entertainment), Гіпермаркет (Superstore), Жіноча мода (Women’s Fashion) та Мобільні пристрої та ігри (Mobiles & Gaming).
Відповідь 2.2: Визначення Топ 20 продуктів з найбільшим зниженням продажів
Щоб відповісти на це питання, відфільтруємо дані для категорії Інші (Others) та згрупуємо їх за назвою продукту:
# фільтрація даних для категорії Others з is_valid = 1 за 2021 та 2022 роки
others_2021 = data_2021[data_2021['category']=='Others']
others_2022 = data_2022[data_2022['category']=='Others']
# групуємо дані за sku_name та сортуємо їх за сумою qty_ordered
others_2021_gb = others_2021.groupby(['sku_name'])['qty_ordered'].sum()
others_2022_gb = others_2022.groupby(['sku_name'])['qty_ordered'].sum()
# кількість товарів категорії Others 2021 до 2022 v.2
others2_merge = pd.merge(others_2021_gb, others_2022_gb, how='outer', on='sku_name', suffixes=('_2021','_2022'))
others2_merge.fillna(0, inplace=True)
# прогрес продажів категорії Others з 2021 по 2022 рік
others2_merge['sales_progress']=others2_merge['qty_ordered_2022']-others2_merge['qty_ordered_2021']
# стан прогресу продажів з 2021 по 2022 рік
def sales_status(status):
if status > 0:
return "Збільшено"
elif status < 0:
return "Зменшено"
else:
return "Без змін"
# застосовуємо стан прогресу продажів
others2_merge['status'] = others2_merge['sales_progress'].apply(sales_status)
# сортуємо 20 продуктів за прогресом продажів від найменшого до найбільшого
others2_sort = others2_merge.sort_values(by='sales_progress',ascending=True).head(20)
# показуємо дані
others2_sort
Цей синтаксис фільтрує дані для категорії “Інші (Others)” за 2021 та 2022 роки, а потім групує та підсумовує кількість замовлень для кожного продукту, комбінуючи результати.
Він обчислює зміни продажів по роках, додає статус прогресу продажів (збільшено, зменшено чи без змін) та сортує 20 продуктів за зростанням прогресу продажів.
worst20_status_count = others2_sort['qty_ordered_2022'].value_counts()
worst20_status_count
Цей синтаксис обчислює частоту значень у стовпці qty_ordered_2022
для 20 продуктів з найгіршими результатами в others2_sort
та відображає підсумок. Виведення виглядає наступним чином:
Виведення результату
Виведення результату
Інсайт:
З аналізу можна зробити висновок, що є 20 продуктів у категорії “Інші (Others)” з найменшим прогресом продажів між 2021 та 2022 роками. Серед них, RB_Dettol Germ Busting Kit-bf зазнав найбільшого зниження з -155 одиницями. Крім того, варто відзначити, що 15 з цих 20 продуктів не мали продажів у 2022 році.
Кейс 3
Шановний аналітику,
У зв’язку з майбутнім святкуванням річниці компанії через два місяці, команда цифрового маркетингу надасть промоційну інформацію клієнтам до кінця цього місяця. Критерії для клієнтів, яких нам потрібно знайти, це ті, хто завершив оформлення замовлення, але не здійснив платіж (is_gross = 1) протягом 2022 року. Дані, які нам потрібні, це ID клієнта (Customer ID) та Дата реєстрації (Registered Date).Будь ласка, допоможіть надіслати ці дані команді цифрового маркетингу до кінця цього місяця.
Ми щиро вдячні за вашу допомогу.З повагою,
Команда цифрового маркетингу (Digital Marketing Team)
Відповідь: Для відповіді на це питання, використаємо наступний синтаксис:
data_promo = df[
(df['is_gross']==1) & # щоб включити дані is_gross в фільтр
(df['is_valid']==0) & # щоб виключити дані is_valid з фільтру
(df['is_net']==0) & # щоб виключити дані is_net з фільтру
((df['order_date']>='2022-01-01') & (df['order_date']<='2022-12-31')) # щоб показати тільки дані за 2022 рік
]
cust_promo_data = data_promo[['customer_id','registered_date']].drop_duplicates() # щоб очистити дані від дублікатів
# показати результат
cust_promo_data
Цей синтаксис фільтрує DataFrame df
, щоб витягнути рядки, які відповідають певним умовам в стовпцях is_gross
, is_valid
та is_net
, вибирає замовлення з 2022 року та видаляє дублікати в стовпцях customer_id
та registered_date
.
# виконайте цей код для завантаження файлу
from google.colab import files
cust_promo_data.to_csv('promo_target_cust.csv', encoding = 'utf-8-sig',index=False)
files.download('promo_target_cust.csv')
Цей синтаксис зберігає DataFrame cust_promo_data
у CSV файл під назвою promo_target_cust.csv
і завантажує його в Google Colab.
Виведення результату
Інсайт:
Аналіз показує, що є 820 клієнтів, які відповідають вимогам отримати промоційну інформацію від команди цифрового маркетингу.
Кейс 4
Шановний аналітику,
У період з жовтня по грудень 2022 року ми проводили кампанії кожну суботу та неділю. Ми хочемо оцінити, чи ці кампанії ефективно збільшили продажі (before_discount).Будь ласка, надайте наступні дані:
Середні щоденні продажі для вихідних (субота та неділя) проти будніх днів (понеділок по п’ятницю) для кожного місяця цього періоду. Чи збільшилися продажі в ці місяці?
Загальні середні щоденні продажі для вихідних проти будніх днів за ці три місяці.
Будь ласка, надішліть ці дані до наступного тижня.
Ми вдячні за вашу допомогу.З повагою,
Команда кампанії (Campaign Team)
Відповідь 4.1: Для відповіді на це питання, використаємо наступний синтаксис:
# як створити додаткові стовпці для дня, місяця та номера місяця
df['day']=df['order_date'].dt.day_name()
df['month']=df['order_date'].dt.month_name()
df['month_num']=df['order_date'].dt.month
# продажі на вихідних за кожен місяць в Q42022
weekend_daily = pd.DataFrame(df[(df['is_valid']==1) & # фільтруємо дані по is_valid = 1
(df['day'].isin(['Saturday','Sunday'])) & # фільтруємо дані по днях, щоб показати тільки суботу та неділю
(df['order_date']>='2022-10-01') & (df['order_date']<='2022-12-31')] # показуємо тільки дані за Q4 2022
.groupby(by=['month_num','month','order_date','day'])['before_discount'].sum() # групуємо та сортуємо дані за сумою before_discount
.round() # округлюємо числові значення
.sort_values(ascending=False) # сортуємо дані від найбільших до найменших
.reset_index(name='weekend_daily_sum') # перейменовуємо стовпець на weekend_avg
)
# показати дані
weekend_daily
Цей синтаксис додає стовпці для дня, місяця та номера місяця до DataFrame, потім обчислює загальні продажі на вихідних (субота та неділя) за Q4 2022, сортує їх за загальними продажами.
# щоб показати об’єднання даних про вихідні та будні по місяцях за Q4 2022
per_month_avg = avg_weekend_sales.merge(avg_weekdays_sales, left_on='month', right_on='month')
per_month_avg.sort_values(by='month_num_x', ascending=True, inplace=True)
# остаточний результат
per_month_avg = per_month_avg[['month', 'weekend_avg', 'weekdays_avg']]
per_month_avg_progress = per_month_avg
# прогрес по середньому
per_month_avg_progress['progress_avg'] = per_month_avg_progress['weekend_avg'] - per_month_avg_progress['weekdays_avg']
per_month_avg_progress['progress_avg_%'] = round(per_month_avg_progress['progress_avg']/per_month_avg_progress['weekend_avg']*100)
# показати остаточний результат
per_month_avg_progress
Цей синтаксис об’єднує та сортує дані про продажі на вихідних та буднях по місяцях за Q4 2022, обчислює різницю в середніх значеннях та відображає результати.
# як побудувати графік для кращого розуміння
per_month_avg_progress.plot(
x='month',
y=['weekdays_avg','weekend_avg'],
kind='bar',
grid = True,
xlabel = 'Місяць',
ylabel = 'Прогрес/Місяць',
figsize=(11,5),
rot = 0,
title = 'Середні продажі за місяць Q42022',
table = False,
secondary_y = False
)
Цей синтаксис генерує стовпчасту діаграму для відображення середніх продажів по місяцях за Q4 2022.
# середнє значення продажів на вихідних за місяць
avg_weekend_sales = weekend_daily.groupby(by=['month_num','month',])['weekend_daily_sum'].mean().round().sort_values(ascending=True).reset_index(name='weekend_avg')
# показати дані
avg_weekend_sales
Після цього ми відобразимо графік за допомогою наступної команди:
Виведення результату
Стопчатий графік номер 4.1
Інсайт:
У Q4 2022 спостерігалося зниження середніх щоденних продажів (before_discount) для кожного місяця. Найбільше падіння відбулося в грудні, зменшення на 4,436,536 (108%). Це вказує на те, що кампанії, проведені на вихідних цього місяця, не були ефективними в збільшенні продажів.
Найменше зниження відбулося в листопаді, зменшення на 430,621 (7%), але навіть тоді кампанії не мали позитивного впливу на продажі на вихідних.
Відповідь 4.2: Для відповіді на це питання, використаємо наступну команду:
# keluaran akhir
Q42022_avg = { 'Periode' : 'Q4_2022' ,
'WeekendAvg' : bulatkan (weekend_daily['weekend_daily_sum'].mean(), 1 ),
'Weekdays_Avg' : bulatkan (weekend_daily['weekend_daily_sum'].mean(), 1 ),
'Progress_Avg' : bulatkan (weekend_daily['weekend_daily_sum'].mean() - weekdays_daily['weekdays_daily_sum'].mean(), 1 ),
'Progress_Avg_%' : bulatkan (((weekend_daily['weekend_daily_sum'].mean() - weekdays_daily['weekdays_daily_sum'].mean())/weekend_daily['weekend_daily_sum'].mean())* 100 , 1 )
}
# tampilkan output
pd.DataFrame(data=Q42022_avg, index=[0])
Цей синтаксис є кодом на Python, який створює словник, що зберігає середні щоденні дані для вихідних та будніх днів, обчислює різницю та відсоткове покращення між ними, а потім відображає результати у вигляді DataFrame за допомогою бібліотеки pandas.
Виведення результату
Інсайт:
Дані показують зниження середніх щоденних продажів (before_discount) на вихідних протягом усього Q4 2022 порівняно з будніми днями, зі зменшенням на 2,250,949.3 або 42.7%. Це вказує на те, що кампанії, проведені щосуботи та щонеділі протягом Q4 2022, не були ефективними в збільшенні продажів на вихідних.
Дякую за прочитане!
Якщо у вас є питання або ви хочете обговорити цей проект, не соромтеся звертатися до мене через LinkedIn. Сподіваюся, що цей проект стане корисним посиланням для всіх, хто хоче дізнатися більше про дані! 😊
Перекладено з: Driving E-Commerce Growth: User Behavior and Demand Analysis with Python