Давайте обсудим одну из наиболее широко используемых библиотек в области науки о данных — Pandas.

Pandas — известная библиотека для обработки и анализа данных, широко используемая людьми, связанными с данными. Pandas предоставляет мощные инструменты для обработки структурированных данных.

Недавно была выпущена основная версия 2.0.0 Pandas с несколькими новыми функциями и улучшениями.

В этой статье мы расскажем о некоторых основных изменениях в новой версии Pandas. Хотя есть много небольших изменений, мы сосредоточимся только на существенных и выделим три из них.

  1. Новая серверная часть Apache Arrow
  2. Функция копирования при записи
  3. Индексы

Апачская стрела

Недавнее введение нового бэкенда 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.

Эта новая функция дает два преимущества, с моей точки зрения:

  1. Улучшенная эффективность использования памяти. Использование соответствующих числовых типов может привести к значительной экономии памяти, особенно при работе с большими наборами данных.
  2. Улучшенная производительность. Использование соответствующих числовых типов также может привести к повышению производительности, особенно при выполнении арифметических или статистических операций с данными. Например, выполнение операции суммирования для столбца с float32 значениями будет намного быстрее, чем выполнение той же операции для столбца с float64 значениями.

Мы обсудили основные изменения в новой основной версии библиотеки Pandas и чем они могут быть нам полезны. Вот полный список изменений, которые можно просмотреть.

Не стесняйтесь использовать новые функции и возможности, но соблюдайте осторожность и проводите тщательное тестирование перед внедрением!