NULL++
159 subscribers
70 photos
3 files
28 links
Канал для тех, кто хочет развиваться как Data Analyst, Data Engineer, BI-Analyst или Data Scientist
@HexMikhail
Download Telegram
Всем привет!
Наткнулся на интересный пост, в котором утверждается, что можно ускорить работу Pandas заменив всего лишь одну строку!!!
Было
import pandas as pd  

Стало
import fireducks.pandas as pd

https://habr.com/ru/companies/ozontech/articles/1005590/

Кто-нибудь пробовал? 🤔

#pandas #python
🤔4👍1🔥1
Всем привет! Ранее я писал (https://t.me/nullpp/39), что использовал хостинг Beget для выполнения своего итогового проекта по учёбе. И в общем-то меня всё устраивало. 9,73₽ в день - это примерно 300₽ в месяц.
Мне приходило письмо от них, что цена изменится. Но ТАКОГО я не ожидал.
Сейчас тот же самый хостинг предлагается за 25,04₽ в день, и теперь требуется оплачивать IP-адрес отдельно за +5₽ в день.
В итоге платить в 3 раза больше за услугу, которой почти не пользуешься, — так себе удовольствие. Придётся либо переезжать, либо забить.
Кто что посоветует из дешёвых и надёжных хостингов для маленьких учебных проектов?

@nullpp #хостинг #beget #цены #учёба #итоговыйпроект
👀3🤔1💯1
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет!
Наткнулся на мем, который буквально приключился со мной совсем недавно 😄
Сейчас делаю витрину данных для аналитики крупного банка. Так как у них своя BI, и там будут работать внутренние специалисты, то задача такая: 5 серверов → 6 разных баз 1С → настроить выгрузки с расписанием в Экстракторе1С → залить их в таблицы ClickHouse ("Остатки" и "Обороты" - типичная бухгалтерия, ага) → слить их в одну витрину данных.
Но у каждой базы свои условия: одни операции учитывать, других контрагентов исключать, взять только операции ~~ '%процент%' и т.д.
И вот…
Работа поэтапная. Сделал на первом сервере - всё работает, цифры бьются. Закончил день, ужинаю. И тут осознаю: есть ошибка, которая вылезет позже при определённых условиях. Пошёл исправлять😆
Ночью просыпаюсь и понимаю: код можно оптимизировать, объединив кучу условий в CASE.
Но сон превыше всего! Короче, на утро переписал всю вьюшку. И никто об этом не узнал, кроме меня.
Так что я вполне понимаю разработчиков.

@nullpp #работа #истории #мемы #clickhouse
😁4💯1
NULL++
Всем привет!
Кстати, в канале появилась возможность написать мне лично, если вы не хотите писать под постами на всеобщее обозрение =)
Сообщения сделал бесплатными (надеюсь, что это получилось, надо потетсить), так как сейчас основная задача канала - делиться своими мыслями и опытом =)
🔥2
Шпаргалка SQL.pdf
201 KB
Всем привет!
Решил я тут сделать себе небольшую шпаргалку - ну, знаете, чтобы быстро вспомнить всякие рабочие моменты, когда голова уже не варит. На память особо не жалуюсь, а постоянное гугление одних и тех же вещей бесит.
Начал, конечно, с #SQL. Куда ж без него. Это база, на которой всё держится, но нужно помнить, что это лишь для повторения, то есть вы уже должны это знать =)
Собрал самое основное:
- Фильтрации
- Агрегации
- JOIN'ы
- Подзапросы
- Обновление / вставка / удаление записей
- Оконочки
- Права доступа
В общем, качайте файл и повторяйте! Материал пригодится всем!

Если понравилось, ставь реакцию. А я пока готовлю аналогичную шпаргалку по Python

@nullpp #полезное #обучение
9🔥8
Всем привет!
Дело в том, что просмотры сильно просели из-за блокировки ТГ. Если посмотреть на посты раньше, то там было и 150-160 просмотров, а вот у последнего поста лишь 38 на данный момент.
И вот у меня есть вопрос к вам, моей аудитории: как можно продвигать свой канал?
Или может стоит дублировать посты куда-нибудь в сообщество ВК (хотя там не хочется, если честно)?
Очень жду комментариев и предложений =)

П.С. шпаргалка по Python Часть 1 уже почти готова))

@nullpp #вопрос
🤔4🤷‍♀1
Шпаргалка Python. Часть 1. Основы.pdf
327.9 KB
Всем привет!
Как я и обещал, выкладываю ещё одну шпаргалку, но теперь уже для #Python.
Что в неё вошло:
- Типы данных
- Циклы
- Условия
- Функции
- Классы
- Работа со строками
- Работа с файлами
- Обработка исключений
Вспоминаем, повторяем!
А я планирую сделать ещё шпаргалку по Python, но уже для обработки данных DS и немного ML захвачу

@nullpp #полезное #обучение
🔥115👍1
Всем привет!
В чатике, где я обучаюсь, @axdtor выкатил полезную штуку, которой я хочу поделиться.
Спасибо ему за такую полезную информацию =)

Как поставить Python-библиотеки без интернета
Вариант 1 - скачать все зависимости из requirements.txt на компьютере с интернетом:
pip freeze > requirements.txt
mkdir OffLine_libs
pip download -r requirements.txt -d OffLine_libs

В итоге появятся:
requirements.txt
OffLine_libs/

Их нужно скопировать на рабочий компьютер без интернета. На рабочем компьютере:
python -m venv .venv
.venv\Scripts\activate
pip install --no-index --find-links=OffLine_libs -r requirements.txt

Что значат параметры:
--no-index не ходить в интернет
--find-links=OffLine_libs искать пакеты в локальной папке


Вариант 2 - скачать конкретные библиотеки на компьютере с интернетом:
mkdir OffLine_libs
pip download pandas geopandas matplotlib shapely pyogrio pyproj -d OffLine_libs

Потом перенести папку OffLine_libs на рабочий компьютер.
На рабочем компьютере:
python -m venv .venv
.venv\Scripts\activate
pip install --no-index --find-links=OffLine_libs pandas geopandas matplotlib
shapely pyogrio pyproj

Для работы с GeoPandas можно заранее скачать такой набор:
pip download geopandas matplotlib pyogrio shapely pyproj fiona -d OffLine_libs


@nullpp #полезное #python #библиотеки
🔥3
Всем привет!
Бывало у вас, что запрос выполняется очень долго? Что же с ним можно сделать? Конечно, попытаться оптимизировать!
Один из главных способов оптимизации - это изучить план запроса и посмотреть, что в запросе работает медленно.

Типичный процесс оптимизации выглядит как-то так:
-- 1. Медленный запрос
EXPLAIN ANALYZE SELECT ...; -- смотрим: видим Seq Scan и large actual time
-- 2. Создаём индекс
CREATE INDEX idx_xxx ON table(column);
-- 3. Обновляем статистику
ANALYZE table;
-- 4. Проверяем
EXPLAIN ANALYZE SELECT ...; -- должно стать Index Scan + время упало


Создал карточки с более подробной информацией.
Изучай, сохраняй себе!

@nullpp #SQL #оптимизация #PostgreSQL
🔥3🤷1
Шпаргалка Python. Часть 2. DS-ML.pdf
295.6 KB
Всем привет!
А вот и подоспела шпаргалка #Python для DS/ML.
Что в неё вошло:
- Немного NumPy
- Работа с датафреймами в Pandas
- Предобработка данных
- Метрики качества
- Кратко об основных ML-моделях
- Совсем немного про пайплайны
Вспоминаем, повторяем!

А если понравилось, то ставь реакцию =) А то их совсем мало стало xD
🔥9
Всем ещё раз привет!
Хотел создать группу в ВК, но адрес vk.com/nullpp какой-то нехороший человек занял... интересно даже кто)))
Поэтому создал только канал в сообщениях ВК.
https://vk.com/im/channels/-238438764
Заходим, подписываемся, распространяем всем подряд XD
👏2
Всем привет!
Наконец-то образовательный контент подъехал!
Хочу устроить решение задач по SQL в прямом эфире. Нашёл много тестовых задач с собеседований. Правда большинство из них спрятаны под Премиум-подпиской портала. Но всё же можно что-то да порешать.
Когда? Думаю либо завтра (08.05) примерно в 19:00, либо в воскресенье (10.05) тоже примерно в 19:00.
Ставь под постом
🔥, если тебе удобнее 08.05 и
⚡️, если удобнее в 10.05.
11🔥2
Live stream scheduled for
Где?
Final Results
43%
Telegram
57%
Youtube
🔥3
NULL++
Где?
Всем привет!
Судя по результатам голосования, сегодня в 19:00 встречаемся на ютубе. Ссылку скину ближе к этому времени =)
Пытался создать там отдельный канал NULL++, чтобы там и вести будущие трансляции, но для этого требуется подтверждение номера телефона. Испробовал все свои номера, но так и не получилось это сделать. Скорее всего дело опять в том, что номер Российский.
Но не стоит переживать! У меня уже есть один подтверждённый аккаунт, поэтому буду делать стрим через него.

@nullpp #стрим #sql #тестовыезадания
👍4
Ну как? Понравился стрим?
Успели решить 7 задачек разной сложности. К сожалению, все задачи максимальной сложности закрыты без подписки. Но и открытых задач ещё хватит на пару стримов =)
Запись прошедшего стрима лежит тут
https://www.youtube.com/watch?v=6WI_rsiD8Jw&t=366
🔥3
Привет аналитики!
Уже неделя прошла после стрима - и ни одного поста за это время!
Немного был занят, чуть позже расскажу, это будет интересно =)
А пока, хочу рассказать о прикольной штуке в SQL.
Есть такая фишка как FILTER - удобная альтернатива CASE WHEN в некоторых случаях. Используется в агрегатных функциях.

Например, вместо
SUM(CASE WHEN condition THEN 1 END)

можно написать
COUNT(*) FILTER (WHERE condition)

Согласитесь, такой синтаксис легче читается?

Поддерживают: PostgreSQL, SQLite (3.30+), DuckDB, ClickHouse
Нет в: MySQL, SQL Server, Oracle (там только CASE)

Вот ещё пример:
-- Продажи по статусу
SELECT
category,
COUNT(*) FILTER (WHERE status = 'completed') AS completed,
COUNT(*) FILTER (WHERE status = 'cancelled') AS cancelled
FROM orders
GROUP BY category;

или
-- Средний чек только по успешным
SELECT
AVG(amount) FILTER (WHERE paid_at IS NOT NULL) AS avg_paid
FROM transactions;


!!! В ClickHouse FILTER (WHERE ...) тоже работает, но есть нюанс.

-- count(*) с FILTER не работает
SELECT count(*) FILTER (WHERE uid > 2000) FROM users;

-- используйте count(1)
SELECT count(1) FILTER (WHERE uid > 2000) FROM users;


Но вообще, в ClickHouse много всяких дополнительных функций, которые уже решают ряд задач. Например:
-- Вместо FILTER
SELECT avg(number) FILTER (WHERE number > 50) FROM numbers(100);

-- Пишем короче и надёжнее
SELECT avgIf(number, number > 50) FROM numbers(100);

-- Количество успешных заказов
SELECT countIf(1, status = 'completed') FROM orders;

-- Сумма только крупных платежей
SELECT sumIf(amount, amount > 1000) FROM payments;

-- Уникальные пользователи из США
SELECT uniqIf(user_id, country = 'US') FROM events;


Ну как, полезно? Забирай в заметки и жми 🔥
🔥8
Привет, аналитики!
Сегодня я расскажу, куда я пропал почти на две недели.
Но для начала хочу поздравить себя с Днём рождения! Да-да, именно сегодня оно и есть.
А ещё я стал на год опытнее и на несколько седых волос ближе к дата-сайенсу.
А теперь к главной теме поста.
Мне предложили проверять работы (в том числе и финальные проекты) на курсе «Аналитика данных» в Симулейтив - онлайн-школе, в которой я сам обучался аналитике, благодаря которой я решился пройти этот нелёгкий путь и сменить профессию. Если вы уже являетесь студентом и подошли к финалу своего обучения, то очень вероятно, что именно я буду проверять вашу работу. Уже успешно проверил несколько работ. Я пока не ментор, но, так сказать, эксперт-преподаватель. Есть к чему стремиться.
А ещё я проходил всякие собесы и выполнял тестовые задания. Не скажу, что их было прям очень много, но мне хватило. Даже попробовал пробиться в бигтех, ахахаха.
В основном после собеса с HR я слышал отказы по причине: "Мы ищем аналитика с опытом от трёх лет", хотя весь мой опыт был указан в резюме изначально.
К моему сожалению, конверсия на hh стала ещё меньше, чем год назад, но, несмотря на это, "касаний" с HR было больше.
Но вполне возможно, что это связано с тем, что я откликался только на мидловые вакансии.
Что из этого получилось, я расскажу через неделю =)

#работа #hr @nullpp
🎉10🔥4