Я проведу вас через пример процесса исследовательского анализа данных (EDA) с использованием Python. Мы предполагаем, что у вас есть образец набора данных с информацией о клиентах, и мы стремимся сегментировать клиентов на основе их характеристик.

Давайте углубимся в шаги:

Шаг 1. Импорт библиотек

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

Шаг 2. Загрузите набор данных

# Assuming the dataset is in a CSV file format
data = pd.read_csv('customer_data.csv')

Шаг 3. Исследование данных

Давайте начнем с обзора набора данных и изучения его структуры.

# Display the first few rows of the dataset
print(data.head())

# Get a summary of the dataset
print(data.info())

# Check basic statistics of the numerical variables
print(data.describe())

# Check for missing values
print(data.isnull().sum())

Шаг 4. Визуализация данных

Визуализация данных может дать понимание и помочь определить закономерности или взаимосвязи между переменными.

# Plot a histogram of a numerical variable
plt.hist(data['age'], bins=10)
plt.xlabel('Age')
plt.ylabel('Count')
plt.title('Distribution of Age')
plt.show()

# Create a bar plot of a categorical variable
sns.countplot(x='gender', data=data)
plt.xlabel('Gender')
plt.ylabel('Count')
plt.title('Gender Distribution')
plt.show()

# Create a scatter plot to explore relationships between variables
sns.scatterplot(x='age', y='income', hue='segment', data=data)
plt.xlabel('Age')
plt.ylabel('Income')
plt.title('Age vs. Income by Segment')
plt.show()

Шаг 5. Сегментация клиентов

Чтобы сегментировать клиентов, мы можем использовать алгоритмы кластеризации, такие как k-means. Вот пример использования библиотеки scikit-learn:

from sklearn.cluster import KMeans

# Select relevant features for segmentation
features = ['age', 'income']

# Prepare the feature matrix
X = data[features]

# Define the number of clusters
num_clusters = 3

# Initialize and fit the KMeans model
kmeans = KMeans(n_clusters=num_clusters, random_state=42)
kmeans.fit(X)

# Assign cluster labels to each data point
data['segment'] = kmeans.labels_

Шаг 6. Практические результаты

Теперь, когда мы сегментировали клиентов, мы можем проанализировать характеристики каждого сегмента и разработать действенные стратегии.

# Calculate the mean values for each segment
segment_means = data.groupby('segment').mean()

# Visualize segment characteristics
sns.barplot(x=segment_means.index, y='income', data=segment_means)
plt.xlabel('Segment')
plt.ylabel('Average Income')
plt.title('Average Income by Segment')
plt.show()

Вы можете дополнительно проанализировать характеристики каждого сегмента, такие как возраст, гендерное распределение или любые другие соответствующие переменные, чтобы получить более полезную информацию. Эти идеи могут направлять маркетинговые стратегии, разработку продуктов или инициативы по привлечению клиентов, характерные для каждого сегмента.

Помните, что это всего лишь пример процесса EDA. В зависимости от вашего набора данных и конкретных целей вы можете продолжить изучение и применить более продвинутые методы.

БОНУС: понимание категориальных и кардинальных признаков.

Давайте рассмотрим гипотетический пример категориальных данных о клиентах с функциями, связанными с покупательскими предпочтениями. Набор данных содержит информацию о предпочтительном способе совершения покупок (онлайн или в магазине), предпочтительном способе оплаты (кредитная карта или наличные) и предпочтительной категории продукта (электроника, одежда или продукты). Вот пример того, как может выглядеть набор данных:

CustomerID | Shopping Mode | Payment Method | Product Category
--------------------------------------------------------------
1          | Online        | Credit Card    | Electronics
2          | In-Store      | Cash           | Clothing
3          | Online        | Credit Card    | Groceries
4          | In-Store      | Cash           | Electronics
5          | In-Store      | Credit Card    | Clothing

В этом наборе данных «Способ покупки», «Способ оплаты» и «Категория продукта» являются категориальными переменными. Категориальные переменные представляют собой качественные характеристики или атрибуты, не имеющие числового значения. Они могут принимать ограниченное количество различных значений или категорий.

Теперь давайте обсудим концепцию кардинальных переменных в контексте категориальных данных. Кардинальные переменные, также известные как порядковые переменные, являются категориальными переменными со значимым порядком или иерархией среди категорий. Другими словами, категории имеют естественный порядок или рейтинг, связанный с ними.

В нашем примере набора данных «Категория продукта» является кардинальной переменной. Категории (электроника, одежда, продукты) могут быть упорядочены на основе естественной иерархии или ранжирования. Например, электронику можно считать более высокой в ​​иерархии, чем одежду и продукты. Такой порядок позволяет проводить значимые сравнения и анализ.

Используя кардинальные переменные, мы можем выполнять такие анализы, как расчет средних расходов на различные категории продуктов, определение наиболее предпочтительной категории или оценка влияния различных переменных на предпочтения клиентов.

Предполагая, что категориальные функции, такие как «Способ оплаты», имеют 2 уникальные переменные, такие как Кредитная карта и Наличные, а «Режим покупок» имеет Онлайн и In- Store, мы можем написать приведенный ниже код, чтобы увидеть количественные, категориальные и числовые функции, скрытые в наборах данных.

# Separate variables into numerical and categorical
numerical_vars = [column for column in data.columns if data[column].dtype != 'object']
categorical_vars = [column for column in data.columns if data[column].dtype == 'object']

# Identify cardinal variables within the categorical variables
cardinal_vars = [column for column in categorical_vars if data[column].nunique() > 2]

# Print the results
print("Numerical Variables:")
print(numerical_vars)
print("\nCategorical Variables:")
print(categorical_vars)
print("\nCardinal Variables:")
print(cardinal_vars)