Давайте обсудим одну из наиболее широко используемых библиотек в области науки о данных — Pandas.
Pandas — известная библиотека для обработки и анализа данных, широко используемая людьми, связанными с данными. Pandas предоставляет мощные инструменты для обработки структурированных данных.
Недавно была выпущена основная версия 2.0.0 Pandas с несколькими новыми функциями и улучшениями.
В этой статье мы расскажем о некоторых основных изменениях в новой версии Pandas. Хотя есть много небольших изменений, мы сосредоточимся только на существенных и выделим три из них.
- Новая серверная часть Apache Arrow
- Функция копирования при записи
- Индексы
Апачская стрела
Недавнее введение нового бэкенда Apache Arrow для данных pandas знаменует собой важное изменение в библиотеке. В обычном рабочем процессе соответствующие данные должны быть сначала загружены в память, прежде чем выполнять какие-либо операции в pandas. Необходимо определить, как данные будут храниться в памяти во время этого процесса загрузки.
Представление простых типов данных, таких как целые числа или числа с плавающей запятой, обычно не вызывает затруднений, поскольку стандартный метод представления одного элемента общеизвестен, и нам нужны только массивы с соответствующим количеством элементов для наших данных. Однако для более сложных типов данных, таких как строки, даты, категории и т. д., необходимо принять определенные решения.
В течение многих лет NumPy был основным расширением, используемым для представления массивов и выполнения над ними эффективных операций, на чем изначально и был построен pandas. Хотя NumPy было достаточно для того, чтобы сделать pandas популярной библиотекой, которой она является сегодня, у нее есть некоторые существенные ограничения в качестве серверной части для библиотек фреймов данных. Например, он плохо поддерживает строки и не содержит пропущенных значений. Новая серверная часть Apache Arrow решает эти проблемы и обеспечивает более эффективный и надежный способ обработки данных.
Чтобы проиллюстрировать это, давайте взглянем на сравнительную таблицу. Для этого сравнения я использовал фрейм данных с 1 миллионом строк в Google Colab.
Очевидно, что Arrow постоянно превосходит NumPy, особенно когда дело доходит до работы со строками.
Копирование при записи
Функциональность Copy-on-Write (CoW) была первоначально представлена в Pandas версии 1.5.0. Начиная с версии 2.0, большинство оптимизаций, включенных CoW, теперь доступны и активно поддерживаются. Вот почему мы обсуждаем это в этой статье.
Функция копирования при записи (CoW) в Pandas гарантирует, что любые изменения, внесенные в DataFrame или Series, приведут к созданию новой копии объекта. Поэтому любой объект, производный от другого объекта, даже частично, ведет себя как отдельная копия. Это гарантирует, что изменения в объект могут быть внесены только путем изменения самого объекта, что может помочь предотвратить непредвиденные побочные эффекты и обеспечить целостность данных.
Давайте посмотрим на пример.
Здесь мы не используем функцию копирования при записи (CoW), это наши старые добрые хитрые панды.
df = pd.DataFrame({"foo": [1, 2, 3], "bar": [4, 5, 6]}) subset = df["foo"] subset.iloc[0] = 100 print(df)
Давайте включим функцию COW.
pd.options.mode.copy_on_write = True df = pd.DataFrame({"foo": [1, 2, 3], "bar": [4, 5, 6]}) subset = df["foo"] subset.iloc[0] = 100 print(df)
Использование CoW обеспечивает более предсказуемое поведение, поскольку предотвращает обновление более одного объекта с помощью одного оператора.
Индексы
Теперь можно использовать любой числовой тип dtype, доступный в NumPy, в качестве индекса в Pandas. Эти dtypes включают int8, int16, int32, int64, uint8, uint16, uint32, uint64, float32 и float64.
Эта новая функция дает два преимущества, с моей точки зрения:
- Улучшенная эффективность использования памяти. Использование соответствующих числовых типов может привести к значительной экономии памяти, особенно при работе с большими наборами данных.
- Улучшенная производительность. Использование соответствующих числовых типов также может привести к повышению производительности, особенно при выполнении арифметических или статистических операций с данными. Например, выполнение операции суммирования для столбца с
float32
значениями будет намного быстрее, чем выполнение той же операции для столбца сfloat64
значениями.
Мы обсудили основные изменения в новой основной версии библиотеки Pandas и чем они могут быть нам полезны. Вот полный список изменений, которые можно просмотреть.
Не стесняйтесь использовать новые функции и возможности, но соблюдайте осторожность и проводите тщательное тестирование перед внедрением!