avatar
Мир аналитика данных
@analysts_world
23.12.2022 19:02
🍀 Как мне помогла теория вероятности.
Прислали мне тут вот такую задачку – отобрать всех клиентов, у которых нет заявок на определенный доп.функционал или тех, у кого заявку одобрили, но клиент пока отключил у себя эту опцию. И еще у них среднемесячная выручка с начала 2022 года должна быть больше 800 тыс. руб.
Сначала я нашла тех, у кого больше 800 тыс.руб. в мес. - df_more_800

А вот потом в мозгу у меня все смешалось – что с чем соединить? 😜 И тут я составила табличку вероятностного пространства всех возможных вариантов, чтобы наглядно понять, как вытащить данные.
Получилась вот такая таблица:
| Есть заявка| Одобрена | Клиент включил опцию у себя |
| Есть заявка| Одобрена | Клиент НЕ включил опцию у себя |
| Есть заявка| НЕ одобрена| - |
| НЕТ заявки | - | - |

Сначала ищу клиентов, кто вообще подал заявку.
query = f"""
select account_id
from sales.request
where account_id in {tuple(df_more_800['account_id'])}
"""
df_request = pd.read_sql(query, connection)

Потом я нашла аккаунты тех клиентов, кто не включил опцию:
query = f"""
select account_id
from sales.request
where account_id in {tuple(df_more_800['account_id'])}
and status = 1 -- одобренность заявки
and active = 0 -- клиент отключил у себя
"""
df_off = pd.read_sql(query, connection)
Исключим с помощью isin те школы, кот подавали заявку, чтобы оставить тех, кто НЕ ПОДАВАЛ ЗАЯВКУ . Вот этот знак (~) оставляет в df_more_800 все, кроме тех аккаунтов, что указаны в df_request

df_wo_application = df_more_800[~df_more_800['account_id'].isin(tuple(df_request['account_id']))]

А теперь объединим с помощью concat тех, кто не подавал заявку и тех, кто выключил у себя эту опцию. Это и будет финалочка! 👌
df_final = pd.concat([df_wo_application, df_off], ignore_index = True)
👍 17
4 2K

Обсуждение 0

Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.

Обсудить в Telegram