Найти в Дзене
📊 ⚡️Хитрая задачка с работы. Возвращение. 📊 👨‍💻Наконец удалось выкроить время, чтобы поэкспериментировать с этой хитрой задачей, и теперь у меня есть решение, которое не использует циклы! Всё сделано исключительно с помощью 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. В нём вы найдёте ещё дополнительные варианты решения, которые прислал Дмитрий в комментариях. Спасибо ему за это! 🙂
1 год назад
Я давно вынашивала идею поиграться с Яндекс-метрикой. 📊 Это и полезно, и интересно. Если создать свой сайт, то можно ее прикрутить к нему. Но сайт создавать хоть и не очень сложно, но времени потребуется все равно небольшой вагон много. И тут меня осенило! А можно ли к статьям в Дзене прикрутить счетчик метрики? Оказывается – ДА, МОЖНО! Я зашла на Дзен, создала там свой канал. И в нем написала несколько статей. Потом зашла на 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 до целого...
1231 читали · 1 год назад
Если нравится — подпишитесь
Так вы не пропустите новые публикации этого канала