Все самое полезное для питониста в одном канале.
Учиться у нас: clc.to/6e5Csg
Для обратной связи: @proglibrary_feeedback_bot
По рекламе: @tproger_sales_bot
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Post #7581
3.52K

🧱 Clojure vs Python & R: новый взгляд на манипуляцию данными
Если вы привыкли к Pandas или dplyr, переход на Clojure с библиотекой tablecloth может показаться прыжком в другую вселенную. Но именно здесь раскрывается истинная мощь функционального программирования.
⚖️ Главное отличие: иммутабельность
В Pandas выполнение
— Каждая операция возвращает новый объект.
— Вам больше не нужно держать в голове текущее состояние переменной — код становится предсказуемым и легким для тестирования.
Clojure использует «потоковый макрос»
Задача: Отфильтровать пингвинов тяжелее 3800г и оставить только длину клюва.
Pandas:
tablecloth:
Clojure — строго типизированный язык в плане операций. В отличие от R, он не будет молча сравнивать
Попытка сравнить
Решение: Нужно явно указывать значение по умолчанию, например
🧬 Функции как «граждане первого класса»
В Clojure функции — это всё. Вы можете передать набор (set) как фильтр для колонок:
📈 Группировка (Group-by)
В tablecloth группировка возвращает не абстрактный объект, а новый датасет, где одна из колонок сама содержит вложенные датасеты. Это позволяет применять к группам любые сложные трансформации как к обычным таблицам.
🔗 Ссылка на блог
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст
Если вы привыкли к Pandas или dplyr, переход на Clojure с библиотекой tablecloth может показаться прыжком в другую вселенную. Но именно здесь раскрывается истинная мощь функционального программирования.
⚖️ Главное отличие: иммутабельность
В Pandas выполнение
df.rename() или добавление колонки часто мутирует (изменяет) исходный объект. В Clojure любой датасет неизменяем. — Каждая операция возвращает новый объект.
— Вам больше не нужно держать в голове текущее состояние переменной — код становится предсказуемым и легким для тестирования.
Clojure использует «потоковый макрос»
-> (threading macro), который работает как пайп |> в R или цепочки методов в Python.Задача: Отфильтровать пингвинов тяжелее 3800г и оставить только длину клюва.
Pandas:
ds[ds["mass"] > 3800]["bill_length"]tablecloth:
(-> ds
(tc/select-rows #(> (% "mass" 0) 3800))
(tc/select-columns "bill_length"))
Clojure — строго типизированный язык в плане операций. В отличие от R, он не будет молча сравнивать
nil с числом.Попытка сравнить
(> nil 3800) вызовет ошибку.Решение: Нужно явно указывать значение по умолчанию, например
(% "col" 0). Это заставляет аналитика осознанно обрабатывать пропуски, а не полагаться на «магию» библиотеки.🧬 Функции как «граждане первого класса»
В Clojure функции — это всё. Вы можете передать набор (set) как фильтр для колонок:
#{"year" "sex"} — это функция, которая проверяет наличие элемента.
(tc/select-columns ds (complement #{"year"})) — выберет всё, КРОМЕ колонки year. Чистая математическая логика в коде.
📈 Группировка (Group-by)
В tablecloth группировка возвращает не абстрактный объект, а новый датасет, где одна из колонок сама содержит вложенные датасеты. Это позволяет применять к группам любые сложные трансформации как к обычным таблицам.
🔗 Ссылка на блог
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст
- 👍 4
- 🤩 1










