👨🏼‍💻Перекладываю 📊 в 🌲🇫🇮
694 subscribers
226 photos
7 videos
52 links
DA + DE = AE? @ little🇫🇮startup,
Ex Product Data Analyst @ SkyEng,
Ex Data Engineer @ Starship (delivery robots),
Ex Data Analyst @ EPAM,
Я НЕ РАЗМЕЩАЮ РЕКЛАМУ,
Личка открыта https://t.me/jarikor ,
(надо нормальное название каналу придумать)
Download Telegram
Но в итоге и Postgres подцепился (после танцев с бубном, т.к. pip install psycopg2 так и не прокатил. Пришлось pip install psycopg2-binary ставить…)

И CSV загрузились нормально.

И реквесты отрабатываются (их нет на скрине).

Завтра построение дашбордов протестирую.

ЗБС, я теперь вроде даже могу сюда юзеров создавать клиентам, под дашборды по ним, с разграничением прав и доступов (завтра проверю).
Ахереть задачку конечно надо посчитать:

«What share of lifetime value is generated during the first month in the app?»
«Какую долю от LTV юзер сгенерировал за первый месяц использования приложения?»
Звучит просто, но подковырка, как обычно, подкралась незаметно.

Для решения задачи пришлось сделать две CTE на основе разных таблиц, сджойнить их, отдельно селект по CTE, и ещё дополнительный селект с подзапросом. Плюс условие с вычислением даты. А даты без ::timestamp не распознаются, собаки такие.

Так. Столбцы сформировал. Всё в целом готово, ещё столбец с вычислением этого «share of lifetime value» завтра уже задолбался.

Но очень рад, что и в подзапросах потренировался, и в СТЕ.
😅Хорошо, что оконную функцию натягивать не пришлсь, какое-нить плавающее среднее, растудыть его…
Не нравится мне, встроенная в Apache Superset дефолтная Pivot Table, она кривая и косая блин, в v2 с раскраской цветом.

Либо ровная и чёткая, но без цвета.

Ну, главное щас табличек заготовить и черновых графиков и схем. А завтра уже в презу переносить, там и нарисую красиво.

Будет порфтолио — как из сырых данных получить отчёт для стейкхолдеров, имея изначально только три CSV файла. Развернув самостоятельно под это дело БД и BI-инструмент на Облаке, не потратив ни рубля (с помощью промокодов).

Грубо говоря не имея ничего кроме 3 файлов от клиента — собрать инструмент и сделать результат.

И всё это за 4 дня.
Ну, вот и дошли руки до ТелеграмБотов, а то всё ВК да ВК…
Хех. Тот момент, когда сам допёр до этого докручивая пет-проект прошлым летом, и думал, что «все так делают» или «ну это ж очевидно» и не стал ничего писать. А оказывается это умный ход, и вон даж в ВК применяют.

Как я до этого допёр (писать запросы в функции, а потом их импортировать) — хоть окончательную версию проекта я собирал на Django, но MVP версию (как отрабатывают функции сбора данных, как отрабатывают функции обработки данных, как отстраиваются графики и т.п.) делал на Jupyter Notebook.

И на определённом этапе набралось дофига функций, и меня бесило прыгать туда-сюда по листу, который превратился в длинную портянку из кода, комментариев, графиков, таблиц и т.п. И даже деление на пару листов не помогало, т.к. меня бесило между ними переключаться. Расширения Nbextensions для Notebook с помощью которых можно сделать СОДЕРЖАНИЕ листа (маркдауном размечать вот так) тоже не помогали в быстрой навигации между короткими функциями.

В итоге т.к. я знал, что буду реализовывать всё на Django, и всё равно придётся перекатывать «портянку» в отдельные функции, решил сразу окончательные и нормально отрабатывавшие версии отрефакторить в функции и модули.

В итоге без проблем и раздражения переключался между функциями которые редачил внутри окна IDE (PyCharm ван лав).
Более того, не нужно было постоянно листать портянку текста (т.к. функции были разбросаны по листу, какие-то раньше отрабатывали, какие-то позже), я просто открывал 2-3 нужных в окнах внутри IDE и без прерывания «рабочего фрейма» переключился между ними и подправлял. Плюс стало удобнее версионирование и редактура кода на разных устройствах (начинал я писать код на стационаре в Новгороде, потом уехал оформлять доки в Самару с ноутом, потом вернулся и продолжил на стационаре).

Ну и гитхаб и подтягивание только определённых кусков кода, вместо длинной портянки с графикой и таблицами, а также отсутствие необходимости каждый раз запускать ядро юпайтера через терминал или Анаконду (это тоже отдельное бесилово для меня) упростили работу ещё больше.

А потом написанные функции и модули бысло довольно легко перенести в Django приложуху. И задеплоить.

Вот так, заморочился разок, чтоб себе работу комфортнее сделать.
А оказывается, изобрёл велосипед.

Ну, зато лишний раз убедился, что не совсем дурак.
Такой вот пост самолюбования получился.
Рабочая задача с реального проекта. И реальный затык.

Есть функция, которая проходит по списку файлов. Каждый файл превращает в датафрейм, разбирает его, берёт нужные столбцы, обрабатывает их, и добавляет в финальный датафрейм.

Таким путём формируется окончательный единый большой датафрейм из стопки файлов. Этот датафрейм уходит дальше на функцию визуализации, но щас не о ней.

Так вот. Если получить список файлов через glob('директория'), то результирующий датафрейм выходит короче, чем если ЭТОТ ЖЕ список файлов передать в ручную (адреса можно сверить прям визуально или через ==, это один и тот же лист, я его прям скопировал из результата ячейки globа).

Чат аналитиков у Карпова я уже зафлудил этим вопросом, теперь спрошу тут.

Какие есть идеи? Куда гуглить решение? Что блин за чёрная магия происходит, Девид Блейн ты скукожил мой датафрейм???

- - -
Решение в комментариях. Оказалось простое. Как всегда, когда глаз замыливаешься, перестаёшь замечать простые моменты и очевидные решения в коде.
#рабочее
Воу-воу-воу, афигеть сколько вас прибыло после поста у Дмитрия https://t.me/rockyourdata/3611.
Сначала, я подумал, что каналом ошибся, и попал в свой старый пост (он недалеко, кстати). А потом как понял…

Давайте знакомится.
Ярослав. 3 года как Data Analyst / Data Engineer. На текущий момент больше года гребу в российском ЕПАМе.
До этого 9 лет занимался онлайн маркеингом для e-commerce и e-learning (особенно).
Собственно, эти два направления отлично смешались в Web-analytics, CX analytics и всё что касается метрик в домене «маркетинг».

Живу в Финляндии, скоро уже год как. Учу язык (не всё ж вайти курсы гонять). Недавно вот небольшой экзамен успешно сдал на одном из курсов по финскому, от местного университета.

Собственно, вся пахота из поста и постоянная учёба в свободное от работы время, ради этого и были.
И продолжаю прокачиваться, ради дальнейших тут результатов.

В планах на 10 летнем интервале — «Агро ИТ. Сельхоз датасаенс». Арендовать\купить тут кусок земли с сараями. И сделать свои автоматизированные теплицы\грядки. Гидропон там всякий по науке, зелень в нём, овощи растить. И открытый грунт тоже. Чоб фрукты\ягоды. И всё в датчиках, с замерами влажности, температуры, кислотности\щёлочности и т.п. Жена там будет за растительность и процесс выращивания отвечать, а я за вычисления и автоматизацию.

Этот канал я создал по совету товарища. Он сказал «заведи канал, и пости в нём что изучаешь, какие проекты делаешь. Код. Наработки. Идеи. Конспекты с курсов\конференций. Вопросы. Обсуждения. Чтобы если тебя спросят «что ты умеешь в целом?», то ты мог дать ссылку на канал. И показать.»

Поэтому я его завёл исключительно с этой целью. Не канал для набора подписчиков. А как «хранилище» опыта, что ли.
И очень рад вас видеть тут.

Выше я выложил три закрепа, на посты, которые считаю интересными для вас.
Кстати, так и не дописал историю как вкатывался (первые посты). Ну да и хрен с ней, пока не до неё.

Т.к. вас теперь тут много, постараюсь постить чаще чем раз в полгода.
И что-то полезнее, чем мои размышления в слух.

~ Недавно меня попросили рассказать, как настроить Jupyter Notebook под себя. Да и вообще собрать свою рабочую среду на сервере. Со связкой из Jupyter Notebook, Apache Superset\Redash, БД туда подключить, и ваще всякого, чтоб вычислялось на сервере, а не десктопе. Окей, это будет не быстро, но инструкцию сделаю.

~Ещё загорелся идеей о механической ортогональной эргономичной сплит-клавиатуре. И вертикальной мышке. Звучит как вегетарианец вейпер на гироскутере с подворотами, ага. Но вас в эту секту не потащу.

Комменты открыты, будет желание — черкните пару строк о том, что хотелось бы увидеть на канале.

Дмитрию огромная благодарность и за мотивирующий душевный пост.
И за упоминание отдельно спасибо.
Кстати, вот пост с той фоткой https://t.me/datasauna/135

P.S. в 2015-ом году мне товарищ о постах в ВК сказал «…ты даже представить себе не можешь, КТО может читать твою "никому не нужную" стену, и как это может повернуться». Так вот. 2022 год, а цитата всё ещё не потеряла актуальность. Я даже вообразить себе не мог, что ко мне вот так зайдут на богом забытый канал, и не просто зайдут, а ПРОЛИСТАЮТ, ПРОЧИТАЮТ, и ещё и пост от этого получится.

Лан, чот разговорился я.
Добро пожаловать! Tervetuloa!
#личное
👍3
Есть задача. Я, конечно, полезу в документацию, и буду читать и вникать, но вдруг кому-то и вас довелось сталкиваться уже с указанными сервисами и их API, и может уже есть какие-то сниппеты\заготовки кода, которыми сможете поделиться.

Делаю аналитику CX (Customer Experience).
Юзаем HotJar и GA4.

HotJar делает записи поведения юзеров на сайте (как Вебвизор в Яндекс.Метрике). На какой странице, куда водил мышкой, куда скроллил, куда кликал.

Нужно сматчить GAID (google analytics ID который назначается ЮЗЕРУ, не сессии) и HotJar ID (который обычно назначается сессии, но возможно есть и на юзера айдишка).

Для чего:
Чтобы смотреть на записи как ведёт себя юзер, когда его будет выкидывать в какой-то критический bad experience.
А ещё, мы собираем обратную связь через форму, и её у нас довольно-таки много, но в форме обратной связи есть только GAID, а хотелось бы посмотреть, КАК ведёт себя юзер, который жалуется, например, на "terrible website. difficult to access records" или на "The website is very difficult to navigate".

Потому что ЦА и юзеры сайта далеко не супер-грамотные в комплютерах люди. Поэтому хочется отследить, где именно их CX проседает, чтобы потом составить ТЗ для UX команды, и переделать UX этих страниц.

Короч, если доводилось работать с API от HotJar, или знаешь как через фронтенд пробросить передачу User_ID от HotJar — дай знать в комментарии пожалуйста.
#рабочее