Untitled
unknown
plain_text
2 years ago
2.4 kB
5
Indexable
# Повторная настройка окружения после сброса состояния выполнения кода.
import pandas as pd
from datetime import datetime
# Создание имитации исходных данных для демонстрации решения.
# Определение схемы данных
data = {
"transaction_date": pd.date_range(start="2023-01-01", periods=6, freq='M'),
"label": ["dil_MO+KP", "dil_MO+KP", "dil_MO", "dil_KP", "Прочие", "dil_MO+KP"],
"client_inn_dil": ["client1", "client2", "client3", "client4", "client5", "client1"]
}
# Создание DataFrame
df = pd.DataFrame(data)
# Имитация данных для после "2023-06-01"
data_post_june = {
"transaction_date": pd.date_range(start="2023-07-01", periods=3, freq='M'),
"label": ["dil_MO", "dil_KP", "Прочие"],
"client_inn_dil": ["client1", "client3", "client2"]
}
df_post_june = pd.DataFrame(data_post_june)
# Объединение датасетов для полного представления
df = pd.concat([df, df_post_june])
# Фильтрация клиентов, которые были в кластере 'dil_MO+KP' до '2023-06-01'
clients_pre_june = df[(df['label'] == 'dil_MO+KP') & (df['transaction_date'] < '2023-06-01')]
# Получение уникальных клиентов в этом кластере до '2023-06-01'
unique_clients_pre_june = clients_pre_june['client_inn_dil'].unique()
# Фильтрация транзакций после '2023-06-01'
transactions_post_june = df[df['transaction_date'] > '2023-06-01']
# Проверка, какие из уникальных клиентов до '2023-06-01' продолжали совершать транзакции после этой даты
active_clients_post_june = transactions_post_june[transactions_post_june['client_inn_dil'].isin(unique_clients_pre_june)]['client_inn_dil'].unique()
# Определение клиентов, которые ушли (те, кто был до '2023-06-01', но не совершал транзакции после)
left_clients = set(unique_clients_pre_june) - set(active_clients_post_june)
# Возвращаем количество клиентов, которые ушли
len(left_clients), len(unique_clients_pre_june), len(active_clients_post_june)
Editor is loading...
Leave a Comment