Я проведу вас через пример процесса исследовательского анализа данных (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)