Помимо Numpy и Pandas: раскрытие потенциала малоизвестных библиотек Python
Python — один из наиболее часто используемых языков программирования в мире, предоставляющий разработчикам широкий набор библиотек.
В любом случае, когда дело доходит до манипулирования данными и научных вычислений, мы обычно думаем о таких библиотеках, как Numpy или Pandas.
В этой статье мы представляем 3 малоизвестные Python-библиотеки, которые могут вас заинтересовать.
1. Dask
Представление Dask
Dask — это гибкая библиотека параллельных вычислений, которая обеспечивает распределённые вычисления и параллелизм для крупномасштабной обработки данных.
Итак, почему мы должны использовать Dask? Как говорится на их сайте :
Python стал доминирующим языком как для анализа данных, так и для общего программирования. Этот рост был вызван вычислительными библиотеками, такими как NumPy, pandas и scikit-learn. Однако эти библиотеки не предназначены для масштабирования за пределами одной машины. Dask был разработан для естественного масштабирования этих библиотек и окружающей экосистемы для многоядерных машин и распределённых кластеров, когда наборы данных превышают объём памяти.
Ниже представлено одно из распространённых применений библиотеки Dask:
Dask используется в ситуациях, когда Pandas терпит неудачу из-за размера данных или скорости вычислений:- Работа с большими наборами данных, даже если эти наборы данных не помещаются в памяти.- Ускорение длительных вычислений за счёт использования множества ядер- Распределённые вычисления на больших наборах данных со стандартными операциями pandas, такими как группировка, объединение и вычисления временных рядов.
Таким образом, Dask — хороший выбор, когда нам нужно иметь дело с огромными фреймами данных Pandas. Это связано с тем, что Dask позволяет пользователям управлять наборами данных объёмом более 100 ГБ на ноутбуке или наборами данных объёмом более 1 ТБ на рабочей станции, что является довольно впечатляющим результатом.
Что происходит под капотом библиотеки Dask:
Dask координирует множество Pandas DataFrames/Series, расположенных по индексу. Dask DataFrame секционируется по строкам, группируя строки по значению индекса для эффективности. Эти объекты pandas могут существовать на диске или на других аппаратах.
Итак, у нас есть что-то вроде этого:
Некоторые возможности Dask в действии
Прежде всего, нам нужно установить Dask. Мы можем сделать это через pip или conda вот так:
ОСОБЕННОСТЬ ПЕРВАЯ: ОТКРЫТИЕ CSV-ФАЙЛА
Первая особенность Dask, которую мы можем показать, — это то, как мы можем открыть CSV-файлы. Мы можем сделать это так:
Итак, как мы видим в коде, то, как мы используем Dask, очень похоже на использование Pandas. В частности:
- Используем метод read_csv() точно так же, как в Pandas
- Перехватываем столбец точно так же, как в Pandas. На самом деле, если бы у нас был фрейм данных Pandas df, мы бы перехватывали столбец следующим образом: df['column_name'].
- Применяем метод mean() к перехваченному столбцу аналогично Pandas, но здесь также нужно добавить метод compute().
Кроме того, даже если методология открытия CSV-файла такая же, как в Pandas, под капотом Dask без особых усилий обрабатывает большой набор данных, который превышает объём памяти одной машины.
Это означает, что мы не видим никакой реальной разницы, кроме того факта, что большой фрейм данных нельзя открыть в Pandas, а в Dask — можно.
ОСОБЕННОСТЬ ВТОРАЯ: МАСШТАБИРОВАНИЕ РАБОЧИХ ПРОЦЕССОВ МАШИННОГО ОБУЧЕНИЯ
Мы также можем использовать Dask для создания набора данных классификации с огромным количеством образцов. Затем мы можем разделить его на тренировочные и тестовые наборы, подогнать тренировочный набор к модели ML и рассчитать прогнозы для набора тестов.
Мы можем сделать это так:
В этом примере подчёркивается способность Dask обрабатывать огромные наборы данных даже в случае проблемы машинного обучения путём распределения вычислений по нескольким ядрам.
В частности, мы можем создать «Dask dataset» для случая классификации с помощью метода dask_datasets.make_classification(), а также указать количество выборок и чанков (даже очень большое!).
Как и раньше, прогнозы создаются методом compute().
ПРИМЕЧАНИЕ:в этом случае вам может понадобиться установить все модули dask_ml.Вы можете сделать это так:
$ pip install dask_ml
ОСОБЕННОСТЬ ТРЕТЬЯ: ЭФФЕКТИВНАЯ ОБРАБОТКА ИЗОБРАЖЕНИЙ
Сила параллельной обработки, которую использует Dask, также может быть применена к изображениям.
В частности, мы могли открывать несколько изображений, изменять их размер и сохранять в изменённом размере. Мы можем сделать это так:
Ниже описан процесс:
- Открываем все изображения формата «.jpg» в текущей папке (или в папке, которую вы можете указать) методом dask_image.imread.imread("image*.jpg").
- Изменяем их все на 300x300, используя понимание списка в методе da.stack().
- Вычисляем результат методом compute(), как и раньше.
- Сохраняем все изменённые изображения с помощью цикла for.
2. SymPy
Представление SymPy
Если вам нужно выполнять математические расчёты и вычисления и вы хотите придерживаться Python, вы можете попробовать библиотеку Sympy.
Действительно: зачем использовать другие инструменты и программное обеспечение, когда мы можем использовать наш любимый Python?
Согласно тому, что они пишут на своем веб-сайте:
Sympy - библиотека Python для символьной математики. Она стремится стать полнофункциональной системой компьютерной алгебры (CAS), сохраняя при этом максимально простой код, чтобы она была понятной и легко расширяемой. SymPy полностью написана на Python.
Но зачем использовать SymPy? Вот несколько аргументов:
SymPy - ...- Бесплатный: SymPy под лицензией BSD бесплатен.- На основе Python: SymPy полностью написан на Python и использует Python в качестве своего языка.- Лёгкий: SymPy зависит только от mpmath, чистой библиотеки Python для произвольной арифметики с плавающей точкой, что делает его простым в использовании инструментом.- Библиотека: помимо использования в качестве интерактивного инструмента, SymPy может быть встроен в другие приложения и дополнен пользовательскими функциями.
Таким образом, SymPy в основном обладает всеми характеристиками, которые могут понравиться любителям Python!
Теперь давайте посмотрим на некоторые его особенности.
Некоторые возможности SymPy в действии
Прежде всего, нам нужно установить данную библиотеку:
ОБРАТИТЕ ВНИМАНИЕ:
если вы напишете $ pip install simpy, вы установите другую (совершеннодругую!) библиотеку.
Итак, вторая буква "y", а не "i".
ОСОБЕННОСТЬ ПЕРВАЯ: РЕШЕНИЕ АЛГЕБРАИЧЕСКОГО УРАВНЕНИЯ
Если нам нужно решить алгебраическое уравнение, мы можем использовать SymPy следующим образом:
Итак, процесс:
- Определим символы уравнения методом symbols().
- Запишем алгебраическое уравнение методом Eq.
- Решаем уравнение методом solve().
Когда я учился в университете, я использовал разные инструменты для решения подобных задач, и должен сказать, что SymPy, как мы видим, очень удобочитаем и удобен для пользователя.
ОСОБЕННОСТЬ ВТОРАЯ: ВЫЧИСЛЕНИЕ ПРОИЗВОДНЫХ
Вычисление производных — ещё одна задача, которая может понадобиться нам с математической точки зрения по многим причинам при анализе данных. Часто нам могут понадобиться расчеты по какой-либо причине, и SymPy действительно упрощает этот процесс. Мы можем сделать это так:
Итак, как мы видим, процесс очень прост и понятен:
- Мы определяем символ функции, которую мы получаем, с помощью symbols().
- Определяем функцию.
- Вычисляем производную с указанием функции diff() и символа, с которым мы вычисляем производную (это абсолютная производная, но мы могли бы вычислить даже частные производные в случае функций, которые имеют переменные x и y).
Если провести тест, то мы увидим, что результат получается за 2-3 секунды.
ОСОБЕННОСТЬ ТРЕТЬЯ: РАСЧЕТ ИНТЕГРАЛА
Конечно, если SymPy может вычислять производные, он также может вычислять и интегралы. Давайте сделаем это:
Здесь мы используем метод integrate(), указав функцию для интегрирования и переменную интегрирования.
3. Xarray
Представление Xarray
Xarray — это библиотека Python, которая расширяет функциональные возможности NumPy, давая нам возможность работать с помеченными массивами и наборами данных.
Как говорится на их сайте:
Xarray делает работу с помеченными многомерными массивами в Python простой, эффективной и увлекательной!
А также :
Xarray вводит метки в виде размеров, координат и атрибутов поверх необработанных многомерных массивов, подобных NumPy, что обеспечивает более интуитивно понятный, более лаконичный и менее подверженный ошибкам опыт разработчиков.
Другими словами, он расширяет функциональность массивов NumPy, добавляя метки или координаты к размерам массива. Эти метки предоставляют метаданные и обеспечивают более продвинутый анализ и обработку многомерных данных.
Например, в NumPy доступ к массивам осуществляется с помощью индексации на основе целых чисел.
А в Xarray каждое измерение может иметь связанную с ним метку, что упрощает понимание данных и управление ими на основе осмысленных имен.
Например, вместо доступа к данным с помощью arr[0, 1, 2], мы можем использовать arr.sel(x=0, y=1, z=2) в Xarray, где x, y и z— метки измерений.
Это делает код более читабельным!
Итак, давайте посмотрим на некоторые особенности Xarray.
Некоторые возможности Xarray в действии
Как обычно, код для установки данной библиотеки:
ОСОБЕННОСТЬ ПЕРВАЯ: РАБОТА С ПОМЕЧЕННЫМИ КООРДИНАТАМИ
Предположим, мы хотим создать некоторые данные, связанные с температурой, и мы хотим пометить их координатами, такими как широта и долгота. Мы можем сделать это так:
И если мы выведем их, то получим:
Итак, рассмотрим процесс пошагово:
- Мы создали значения температуры в виде массива NumPy.
- Мы определили значения широты и долготы как массивы NumPy.
- Мы сохранили все данные в массиве Xarray с помощью метода DataArray().
- Мы выбрали подмножество широт и долгот с помощью метода sel(), который выбирает значения, которые мы хотим для нашего подмножества.
Результат легко читается, поэтому маркировка действительно полезна во многих случаях.
ОСОБЕННОСТЬ ВТОРАЯ: ОБРАБОТКА ОТСУТСТВУЮЩИХ ДАННЫХ
Предположим, мы собираем данные о температуре в течение года. Мы хотим знать, есть ли в нашем массиве нулевые значения. Вот как мы можем это сделать:
В результате мы получаем, что у нас есть 10 нулевых значений.
Кроме того, если мы внимательно посмотрим на код, увидим, что мы можем применять методы Pandas к Xarray, например isnull.sum(), как в этом случае, который подсчитывает общее количество пропущенных значений.
ОСОБЕННОСТЬ ТРЕТЬЯ: ОБРАБОТКА И АНАЛИЗ МНОГОМЕРНЫХ ДАННЫХ
Соблазн обрабатывать и анализировать многомерные данные высок, когда у нас есть возможность маркировать наши массивы. Так почему бы не попробовать?
Например, предположим, что мы всё ещё собираем данные о температуре на определённых широтах и долготах.
Мы можем захотеть рассчитать среднюю, максимальную и медианную температуры. Мы можем сделать это так:
И мы получили то, что хотели, ещё и в чётко читаемом виде.
И снова, как и раньше, для вычисления максимального, минимального и среднего значений температуры мы использовали функции Pandas, применённые к массиву.
Выводы
В этой статье мы показали три Python-библиотеки для научных расчётов и вычислений.
В то время как SymPy может заменить другие инструменты и программное обеспечение, давая нам возможность использовать код Python для математических вычислений, Dask и Xarray расширяют функциональные возможности других библиотек, помогая нам в ситуациях, когда у нас могут возникнуть трудности с другими наиболее известными библиотеками Python для анализа и обработки данных.