Найти тему
📊 ⚡️Хитрая задачка с работы. Возвращение. 📊 👨‍💻Наконец удалось выкроить время, чтобы поэкспериментировать с этой хитрой задачей, и теперь у меня есть решение, которое не использует циклы! Всё сделано исключительно с помощью Pandas! Давайте разберем его пошагово: 1️⃣Генерация данных как и в прошлый раз💾 Здесь мы создаем список словарей, где каждый словарь содержит client_id и строку value с информацией о рассрочках. import pandas as pd data = [ { 'client_id': 111, 'value': 'installment_0_0_3_7,59 Срок рассрочки 3 мес.' 'installment_0_0_4_8,42 Срок рассрочки 4 мес.' 'installment_0_0_6_10,84 Срок рассрочки 6 мес.' }, { 'client_id': 222, 'value': 'installment_0_0_3_4,93 Срок рассрочки 3 мес.' }, { 'client_id': 333, 'value': 'installment_0_0_4_5,64 Срок рассрочки 4 мес.' 'installment_0_0_6_6,05 Срок рассрочки 6 мес.' }, { 'client_id': 444, 'value': 'installment_0_0_3_7,78 Срок рассрочки 3 мес.' 'installment_0_0_6_9,60 Срок рассрочки 6 мес.' }, { 'client_id': 555, 'value': 'installment_0_0_4_8,57 Срок рассрочки 4 мес.' 'installment_0_0_6_8 Срок рассрочки 6 мес.' } ] df = pd.DataFrame(data) 2️⃣Извлечение данных (сроков рассрочки и ставок из строки value) с использованием регулярного выражения 🔍 extracted = df.set_index('client_id')['value'].str.extractall(r'installment_0_0_(\d+)_([\d,]+)') extracted = extracted.reset_index(level=1, drop=True).reset_index() extracted.columns = ['client_id', 'term', 'rate'] 3️⃣ Преобразование данных в нужный формат 🔄 Преобразуем строковые значения в числовой формат и добавляем текстовое описание к срокам рассрочки. extracted['rate'] = extracted['rate'].str.replace(',', '.').astype(float) extracted['term'] = 'Срок рассрочки ' + extracted['term'] + ' мес.' 4️⃣Определение условий фильтрации 🕵️‍♂️ Задаем условия для фильтрации данных по срокам рассрочки и максимальным допустимым ставкам. conditions = { "Срок рассрочки 3 мес.": 5.93, "Срок рассрочки 4 мес.": 6.64, "Срок рассрочки 6 мес.": 7.05 } 5️⃣Фильтрация данных 📊 filtered_df = extracted[extracted.apply( lambda row: row['term'] in conditions and row['rate'] <= conditions[row['term']], axis=1 )] 📎 Вот ссылка на обновленный Jupyter Notebook. В нём вы найдёте ещё дополнительные варианты решения, которые прислал Дмитрий в комментариях. Спасибо ему за это! 🙂
8 месяцев назад
Я давно вынашивала идею поиграться с Яндекс-метрикой. 📊 Это и полезно, и интересно. Если создать свой сайт, то можно ее прикрутить к нему. Но сайт создавать хоть и не очень сложно, но времени потребуется все равно небольшой вагон много. И тут меня осенило! А можно ли к статьям в Дзене прикрутить счетчик метрики? Оказывается – ДА, МОЖНО! Я зашла на Дзен, создала там свой канал. И в нем написала несколько статей. Потом зашла на https://metrika.yandex.ru/ и добавила там счетчик. Задала ему имя Анализ трафика. В поле с адресом сайта, который мы будем анализировать, вбила адрес канала с Дзена: dzen.ru/analysts_world и нажала сохранить. Потом я добавила цели. Они позволяют отслеживать важные события на сайте: клики на кнопки, просмотры определенных страниц, скачивание файлов, отправку форм и многие другие. Я выбрала только посещение страниц и в условие добавила опять ссылку на канал. Однако, мне этого показалось мало. Вдруг посетители зайдут сразу на статью, минуя канал, и я создала еще несколько целей – и там указала посещение именно статей. Можете увидеть на скрине. Вот теперь счетчик готов! 🕯 У него есть номер ( мой с номером 96707090) Теперь осталось прикрутить его к Дзену! Несите отвертку! В настройках канала есть раздел Веб-аналитика. И там можно вбить номер вашего счетчика в поле Яндекс.Метрика. Все! Теперь можно отслеживать посещения страниц. 📈 Буду вам показывать какие отчеты там есть и что интересного можно узнать. Полазайте там по страницам, чтобы было что исследовать. 🎮 ➡️ https://dzen.ru/analysts_world Если у вас есть опыт, какие-то идеи как создать какой-то отчет, то пишите сюда или мне в директ - будем экспериментировать и делиться знаниями.
1 год назад
✅ Тестовое на аналитика данных. Задачка по SQL. Просматривала я аналитические каналы и вижу интересное тестовое. У меня мозг на автомате начал накидывать варианты и уже прям не терпелось написать скрипт. Думаю это будет полезным для всех. Итак, есть две таблички: с отделами и данными по зарплате у сотрудников и их начальников. Создадим быстренько датафреймы, на котором потренируемся прям в юпитер ноутбуке с помощью библиотеки pandasql. Про эту библиотеку пост тут. data = {'id': [1,2,3,4,5,6], 'name': ['Финансы','Риски','Розница','Безопасность','ДКК','Аналитика']} Departament = pd.DataFrame(data) data = { 'id': [1,2,3,4,5,6], 'id_head': [1, 1,2,4,5,3], 'id_dep':[2,2,3,3,8,4], 'sal': [45000,80000,100000,65000,35000,50000] } Personal = pd.DataFrame(data) 📌Задание 1. Вывести отдел с наибольшим числом сотрудников. Самый простой способ: select d.name as Department, count(p.id) as count_personal from Personal p join Departament d on d.id = p.id_dep group by 1 order by 1 desc limit 1 Но в случае если у нескольких отделов одинаковое количество сотрудников, то результат выдаст один отдел, а не два. Поэтому рекомендую сделать второй вариант через подзапрос. Можете потренироваться - написать сами. 📌Задание 2. Вывести список сотрудников, получающих заработную плату выше, чем у руководителя. Вот тут уже интересненько. Это можно реализовать соединив таблицу с этой же модифицированной таблицей. Сделаем табличку с помощью группировки, чтобы был уникальный сотрудник и его з/пл. И присоединим ее с помощью left join к основной по ключу p1.id_head = p2.id. Тогда в одной строке будет и з/пл сотрудника и з/пл его руководителя. И потом оставляем тех, у кого sal>sal_head select p1.id from Personal p1 join (select id,sal as sal_head from Personal group by 1) p2 on p1.id_head = p2.id where sal>sal_head 📎 Тут ноутбук с решением.
1 год назад
Вопросы с собеседований по SQL
📍 В чем разница между сount(*) и count(колонка)? count(*) считает все строки, в т.ч. с NULLs, а count(колонка) нет. Как пример, привела скрины dbeawer из базы. Есть колонка first_payed_product_at с пропусками. В варианте count(*) считается все, а в варианте count(first_payed_product_at) только заполненные строки (820 значений). 📍 В чем разница между UNION и UNION ALL? Основное различие между UNION и UNION ALL заключается в том, что операция UNION удаляет дублированные строки из результирующего набора, а UNION ALL не удаляет дубликаты...
1 год назад
Вопросы с собеседований по Python и Pandas для аналитика данных 🔝
Я составила вопросы, которые мне и моим друзьям задавали на собеседованиях по Python и Pandas: 🔝 ✔️1. Какой тип данных у переменной a? a = 'Hello, world!' print(type(a)) # <class 'str'> ✔️2. Как можно разбить строку на подстроки? s = 'one,two,three' lst = s.split(',') print(lst) #['one', 'two', 'three'] ✔️3. Как можно сгенерировать список чисел от 0 до 9 включительно? lst = list(range(10)) print(lst) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Это вариант - range(stop) генерирует целые числа от 0 до целого...
850 читали · 1 год назад
LinkedIn для поиска работы в РОССИИ. А что, так можно было?
Я зарегистрировалась в LinkedIn еще в 2013 году, но ничего о себе не заполняла и вскоре забросила. Мне всегда hh помогал с поиском работы. Но недавно я решила его реанимировать. Я думала, что там только для тех, кто хочет уехать зарубеж, а я вроде как не планирую. У меня тут семья, родные. Но в последнее время стала замечать, что очень много вакансий с телеграмм каналов и с geekjob.ru ссылаются на Linkedin. И там конкретный человек (HR или тимлид) описывает вакансию и кого именно они ищут. У нас...
1 год назад
Функция transform() в Python 🐍
👍 Подглядела эту функцию у коллеги. Не влюбиться в функцию просто не возможно! Она такая крутая! Короче, это метод, который применяет функцию к каждой группе данных и возвращает результат в том же порядке, что и исходные данные. Это очень удобный способ изменения исходных данных. ✏️ Синтаксис: DataFrame.groupby('column_name').transform(function_name) Создадим dataframe data = {'Name': ['Петров', 'Удалова', 'Ковалев', 'Сидоров', 'Ефремов', 'Титова'], 'Department': ['Sales', 'It', 'It', 'Sales', 'Other', 'Other'], 'Salary': [50000, 57000, 62000, 45000, 59000, 70000]} df = pd...
1 год назад
Фантастический сumsum() ⭐️
Если нужно посчитать кол-во дней от момента регистрации клиента до первых 100 тыс. за месяц, то можно сделать это через волшебную, фантастическую функцию сumsum. 🐍 SQL выгрузкой вытаскиваем данные о номере клиента, дате его регистрации, дате оплаты, ну и сумму его выручки конечно. Отсортировано по order by account_id, payment_date. То есть сверху будут самые ранние даты выручки. Получаем вот такой df с колонками: |account_id) | account_reg_date |payment_date|amount| ✏️ Группируем по аккаунту, создаем новую колонку с кумулятивной суммой, то есть которая накапливается (см...
1 год назад
Живой кодинг
Однажды у меня было собеседование с живым кодингом. Даже не буду скрывать компанию. Это был Сбербанк. Они искали аналитика данных со знанием Питона, SQL и опытом проведения A/B тестов в команду для улучшения их банковских приложений. У меня не было опыта A/B тестов, но я все равно откликнулась ради опыта. Вообще, хочу порекомендовать проходить как можно больше собеседований и относиться к ним как к квесту. Чем больше в вашей копилке прохождений, тем больше опыта и больше вопросов, ответы на которые...
1 год назад
Between преткновения
Вот, казалось бы, как можно накосячить с оператором between в SQL? Легко, ребята 😊 Да, оператор включает границы диапазона. На курсе это проходили. Да и сама я когда училась раньше, использовала его часто “для красоты”. Допустим нужно мне ограничить дату выгрузки, и я ставлю условие where date between '2022-07-01' and '2022-07-31'. Чего проще? Понятно же, что выкачка будет с первого июля по 31 июля включительно, то есть за целый месяц...
1 год назад
Мотивация 🎯
Мы все так привыкли, что нас нужно мотивировать, чтобы достичь какой-то цели. Многие книги по саморазвитию пестрят идеями и способами мотивации, создания своеобразных плюшек на пути к достижению успешного успеха. У меня есть на это свое мнение. Начну издалека. Вот чтобы вы ели, вас нужно мотивировать? А для сна вам нужна мотивация? А чтобы любить? Если у вас есть ЖЕЛАНИЕ, то вам не нужна мотивация! Просто ЖЕЛАНИЕ🌟, ХОТЕЛКА так сказать. Меняя одну работу на другую, нужно понимать ради чего ты это делаешь...
1 год назад
Аналитики на вкус и цвет..
Я даже не представляла себе как много бывает разных видов аналитиков! Только спустя какое-то время изучая вакансии и читая околоайтишные статьи, я поняла в чем их отличие и как иногда компании скрещивают один вид с другим, а порой и вообще путают или не заморачиваются с правильным названием. Итак, аналитики бывают: ✅ Бизнес аналитики. Они должны понимать потребность бизнеса, проводить анализ всех внутренних процессов. Их задача - разобраться в потребностях заказчиков, фиксировать бизнес-требования и их решения по реализации в виде бизнес-процессов...
1 год назад