К старту флагманского курса по Data Science делимся туториалом по библиотеке Terality, которая сильно облегчит работу с действительно большими наборами данных даже на маломощных машинах. За подробностями приглашаем под кат. Мы избалованы выбором в работе с данными. Инструмент номер один — Pandas, затем идут Dask, Vaex, Datatable, cuDF и так далее. К этому списку добавим Terality, как будто всего этого недостаточно.  Возникает вопрос: Terality компенсирует скорость Pandas ценой её простоты и гибкости? Нет. Terality — это злой кузен Pandas, рождённый с суперсилой. У него похожий синтаксис, но работает он молниеносно и не зависит от мощности вашей машины. Звучит слишком хорошо, чтобы быть правдой? Тогда читайте. Эта статья не оплачена и отражает мой собственный взгляд.  Terality — это бессерверный движок обработки данных, выполняемый на гигантских кластерах. Вы сможете работать с наборами данных аномальных размеров с молниеносной скоростью, не беспокоясь о масштабировании ресурсов на кластерах или какой-то инфраструктуре. Я говорю о двух вещах: Ограничений по памяти, а значит, и по размеру набора данных, практически нет.  Чтобы обрабатывать гигабайты данных даже на машине c 4 Гб оперативной памяти, нужно только хорошее соединение с интернетом.  Terality — это пакет с тем же синтаксисом, что и Pandas. Чтобы переключиться на Terality, нужно изменить всего одну строку кода.  Пакет отправляет запрос движку Terality, где вы можете вызвать функции Pandas. Он обрабатывает данные и команды, отправляя результат вам. Установка займёт около минуты. Будет нужно установить пакет и ввести ваш ключ к API движка. Сделать это можно по ссылке.  Pandas появилась в январе 2008 года, когда заботой специалистов по науке о данных были игрушечные наборы данных. Сегодня люди работают с монстрами и обнаруживают, что у Pandas не хватает духу, чтобы приручить их. Компания Terality готова решить эту проблему.  Чтобы проиллюстрировать это, возьмём выборку из набора данных в 60 миллионов строк и 18 столбцов.  Данные сохраним в Parquet, потому что записывать их в CSV было бы оптимистично до глупости. Файл займёт около 7 Гб, что по современным стандартам довольно мало: Начнём со сравнения скорости загрузки файла Parquet в рабочее пространство. Производительность Pandas сильно зависит от центрального процессора вашей машины. Моя AMD Ryzen 9 3900X с 12 ядрами — один из последних процессоров, она быстрее Google Colab или бесплатных процессоров Kaggle. Так что можно ожидать от моей машины достойного отпора виртуальным серверам.  Начнём со сравнения скорости загрузки файла Pandas в рабочее пространство: Что касается Terality, я читаю данные с Amazon S3:  Даже если вы можете работать с локальными файлами, Terality лучше работает с Amazon S3 или Google Cloud. Как я уже упоминал, скорость Terality зависит от скорости вашего интернета. Чтение файла Parquet из памяти означает отправку 7 Гб данных в движок, что далеко от идеала. И вот мои результаты:  Terality немного позади из-за скорости интернета и мощности моего процессора. Продолжая сравнение, выполним другие тяжёлые операции.  До того как показать мои локальные результаты, давайте посмотрим на известный бенчмарк с набором данных в 50 Гб. Вот результат сложной операции группировки:    Держаться удаётся только Terality, в то время как другие разрываются от неприятных ошибок памяти. То же самое верно для оператора объединения:    Конечно, не все обладают роскошными компьютерами со 128 Гб памяти, поэтому я просто покажу эксперименты на моей скромной машине в 32 Гб: Как я уже сказал, у меня достаточно хорошая машина, но она всё равно проигрывает во всех операциях.  Хотя синтаксис Terality идентичен синтаксису Pandas, некоторые функции Pandas ещё не реализованы.  Вы можете ожидать около 80–90% всех методов фреймов данных и рядов, они будут работать с фреймами данных Terality. Большинство функций глобального пространства имён Pandas вида pd.some_function тоже работают. Учтите, что Terality всё ещё в бете, а это немалый подвиг. Возможно, вы уже догадались, что Terality — условно бесплатная программа. Бесплатный тарифный план включает 200 Гб.  Сегодняшние наборы данных занимают до 68 Гб памяти [подсчёт с выполнением глубокой интроспеции], смотрите df.info(memory_usage='deep'), так что свой бесплатный тарифный план я израсходовал достаточно быстро.  Однако команда Terality была достаточно заботлива, чтобы обновить мой план, позволив закончить эксперименты для этой статьи. Когда я написал эту статью, Terality обновил свои тарифные планы, как показано на скриншоте.  Да, Terality великолепен — никакой другой инструмент не приблизился настолько к сходству с Pandas. Этот движок без ограничений по памяти просто совершенен. Но Terality — не игрушка для досуга.  Тарифный план в 200 Гб не такой щедрый, как вы думаете, потому что считается каждый вызов интерфейса программирования приложений, а не просто чтение данных. Вот моя статистика за время, пока я писал эту статью:  Прежде всего я предлагаю узнать, как выжать лучшее из самого Pandas и сделать его как можно более быстрым. Только когда вы начнёте получать ошибки памяти и обнаружите себя ожидающим даже простейших вычислений, настанет момент поиска альтернатив. И тогда Terality окажется в топе как самый быстрый и простой инструмент, у которого практически нет кривой обучения. А продолжить погружение в Data Science и Python вы сможете на наших курсах: Профессия Data Scientist Профессия Fullstack-разработчик на Python Узнайте подробности здесь. Data Science и Machine Learning Профессия Data Scientist Профессия Data Analyst Курс «Математика для Data Science» Курс «Математика и Machine Learning для Data Science» Курс по Data Engineering Курс «Machine Learning и Deep Learning» Курс по Machine Learning Python, веб-разработка Профессия Fullstack-разработчик на Python Курс «Python для веб-разработки» Профессия Frontend-разработчик Профессия Веб-разработчик Мобильная разработка Профессия iOS-разработчик Профессия Android-разработчик Java и C# Профессия Java-разработчик Профессия QA-инженер на JAVA Профессия C#-разработчик Профессия Разработчик игр на Unity От основ — в глубину Курс «Алгоритмы и структуры данных» Профессия C++ разработчик Профессия Этичный хакер А также Курс по DevOps Все курсы Редактор-переводчик