group-telegram.com/diceanalytics/124
Last Update:
Решение предыдущей задачки.
Первое решение, как я и говорил, дубовое и прожорливое. Основная идея — так как в pandas нет нечеткого джойна, делаем cross join, так, чтобы для каждой транзакции из консоли были все транзакции в нашей системе трекинга. Потом ищем дельту во времени между транзакциями и берем для каждой транзакции в сторе одну минимально близкую по времени в системе трекинга. Если такой нет (все транзакции в системе за пределами интервала [1, 30] секунд), то это транзакция и была потеряна.
Основная идея второго решения — выстроить все транзакции в один временной ряд, так как ожидаем, что пользователи делают платежи с большим интервалом, чем наша разница между двумя системами. И если после транзакции в консоли не было транзакции в нашей системе — то вот она, наша потерянная транзация.
Оба решения грязные. Первое опирается на предположения о порогах и размножает платежи, c этим нужно быть аккуратными. Второе просто полагается на допущения о соотношений систем трекинга. На моем рабочем датасете первое решение еще и меньше потеряшек нашло. Но на безрыбье и панды — фреймворк для работы с данными, что уж, для общего понимания ситуации и анализа паттернов, кто потерялся, вполне подойдет.
Код можно посмотреть здесь.
UPD: в пандах таки есть merge_asof. Видимо, статья на SO была совсем древней, а я не посмотрел на ее дату :(
#exercises
BY аналитика на кубах
Warning: Undefined variable $i in /var/www/group-telegram/post.php on line 260
Share with your friend now:
group-telegram.com/diceanalytics/124