Untitled
unknown
plain_text
a year ago
2.4 kB
4
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