TGViewer
Библиотека питониста | Python, Django, Flask Библиотека питониста | Python, Django, Flask @pyproglib · 37.3K subscribers
Post #7581 3.52K
🧱 Clojure vs Python & R: новый взгляд на манипуляцию данными

Если вы привыкли к 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
More from @pyproglib
  1. Sep 25, 2026🔥 Курс «ИИ для разработчиков» уже стартовал И мы решили открыть первое занятие всем — мож…
  2. Sep 20, 2026👻 94% токенов уходят не на код Анализ запусков показал: основная часть токенов уходит на…
  3. Sep 19, 2026📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих» Мы написали и собр…
  4. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  5. Sep 15, 2026⏱️ Справочник по Big-O в Python Для тех, кто хочет писать не просто работающий, а эффектив…
  6. Sep 14, 2026🤪 Если бы можно было задать один вопрос про AI в разработке — что бы вы спросили? Как выб…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →