Чтение файлов Parquet в Pandas с помощью pd.read_parquet

В этом учебном пособии вы научитесь использовать функцию Pandas read_parquet для чтения файлов Parquet в Pandas. Хотя файлы CSV могут быть всемирно распространенным форматом файлов для аналитиков данных, у них есть ограничения по мере роста размера ваших данных. Вот где могут помочь файлы Apache Parquet!

К концу этого урока вы узнаете:

  • Что такое файлы Apache Parquet

  • HКак читать файлы паркета с помощью Pandas с помощью функции pd.read_parquet()

  • Как указать, какие столбцы читать в файле паркета

  • Как ускорить чтение файлов паркета с помощью PyArrow

  • Как указать механизм, используемый для чтения файла паркета в Pandas

Оглавление

Что такое файлы паркета Apache?

Формат файлов данных Apache Parquet ориентирован на столбцы. Это означает, что данные хранятся по столбцам, а не по строкам. Преимущества этого подхода включают в себя значительно более быстрый доступ к данным, особенно при запросе только некоторых столбцов. Это происходит потому, что можно прочитать только конкретные столбцы, а не целые записи.

Формат является открытым и специально предназначен для хранения и извлечения данных. Именно поэтому его схема кодирования разработана для обработки огромных объемов данных, особенно распределенных по разным файлам.

Понимание функции read_parquet Pandas

Перед использованием функции read_parquet() в Pandas, давайте рассмотрим различные параметры и аргументы по умолчанию этой функции. Это даст вам хорошее понимание возможностей функции.

Давайте посмотрим на функцию pd.read_parquet():

# Понимание функции read_parquet() в Pandas
import pandas as pd

pd.read_parquet(
   path, 
   engine='auto', 
   columns=None, 
   storage_options=None, 
   use_nullable_dtypes=False
)

Мы видим, что функция предлагает 5 параметров, из которых 4 имеют заданные аргументы по умолчанию. В таблице ниже приведено описание параметров функции и объяснение их использования.

ПараметрОписаниеАргумент по умолчаниюВозможные значения

path=

Путь к файлу, который может быть URL-адресом (например, S3 или FTP).

String or path object

engine=

Какую библиотеку паркета использовать

‘auto’

{‘auto’, ‘pyarrow’, ‘fastparquet’}

columns=

Какие колонки читать

None

List or None

storage_options=

Дополнительные параметры, которые можно применить к конкретным подключениям хранилища, например S3.

None

List or None

use_nullable_dtypes=

Если значение True, используйте типы данных, которые используют pd.Na в качестве индикаторов пропущенных значений для результирующего DataFrame.

False

boolean

Теперь, когда у вас есть хорошее понимание того, какие опции предлагает функция, давайте начнем изучать, как читать файл Parquet с помощью Pandas.

Как прочитать файл паркета с помощью Pandas read_parquet

Чтобы прочитать файл Parquet в DataFrame Pandas, вы можете использовать функцию pd.read_parquet(). Эта функция позволяет загружать данные из различных источников. Для целей этого учебника мы предоставили образец файла Parquet здесь. Вы можете скачать файл или просто использовать предоставленный ниже код и загрузить его с Github.

# Как использовать read_parquet() Pandas для чтения файла Parquet
import pandas as pd
url = 'https://github.com/datagy/mediumdata/raw/master/Sample.parquet'
df = pd.read_parquet(url)

print(df.head())

# Возвращает:
#       Name  Age  Gender
# 0     Jane   10  Female
# 1      Nik   35    Male
# 2     Kate   34  Female
# 3  Melissa   23  Female
# 4     Evan   70    Male

Давайте разберем, что мы сделали в блоке кода выше:

  1. Мы импортируем Pandas с использованием традиционного псевдонима pd

  2. Затем мы загрузили внешний URL-адрес в переменную, url

  3. Наконец, мы использовали функцию pd.read_parquet() для чтения URL в DataFrame

Как указать столбцы для чтения в функции Pandas read_parquet

Одним из основных преимуществ использования формата Parquet является то, что он ориентирован на столбцы. Это значит, что когда мы загружаем только подмножество столбцов, мы можем добиться некоторой эффективности. Функция read_parquet() в Pandas позволяет нам указать, какие столбцы читать, используя параметр columns=

По умолчанию параметр будет установлен в значение None, что указывает на то, что функция должна считывать все столбцы. Можно также передать один метку столбца или последовательность меток для чтения нескольких столбцов.

Давайте посмотрим, как мы можем использовать Pandas для чтения только подмножества столбцов при загрузке нашего файла Parquet:

# Чтение только подмножества столбцов в Pandas
import pandas as pd
url = 'https://github.com/datagy/mediumdata/raw/master/Sample.parquet'
df = pd.read_parquet(url, columns=['Name', 'Age'])

print(df.head())

# Возвращает:
#       Name  Age
# 0     Jane   10
# 1      Nik   35
# 2     Kate   34
# 3  Melissa   23
# 4     Evan   70

В приведенном выше блоке кода мы повторно использовали код из предыдущего примера. Однако мы добавили параметр columns=, чтобы указать, что мы хотим прочитать только два из трех столбцов. Это позволяет нам загружать некоторые столбцы. Поскольку формат данных ориентирован на столбцы, это означает, что мы можем значительно ускорить процесс.

Как указать движок, используемый в Pandas read_parquet

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

Чтобы указать движок, используемый при чтении файла Parquet, можно использовать параметр engine=. По умолчанию этот параметр установлен как 'auto', что означает первоначальную попытку использования движка PyArrow. Если это не удаётся, то будет предпринята попытка использовать библиотеку FastParquet.

Одно из ключевых отличий между двумя движками заключается в используемых зависимостях. Движок PyArrow использует библиотеку на C, тогда как движок FastParquet использует Numba.

Давайте посмотрим, как можно указать использование движка PyArrow при чтении файла Parquet в Pandas:

# Указание движка при чтении файлов Parquet в Pandas
import pandas as pd
url = 'https://github.com/datagy/mediumdata/raw/master/Sample.parquet'
df = pd.read_parquet(url, engine='pyarrow')

print(df.head())

# Возвращает:
#       Name  Age  Gender
# 0     Jane   10  Female
# 1      Nik   35    Male
# 2     Kate   34  Female
# 3  Melissa   23  Female
# 4     Evan   70    Male

В этом разделе вы узнаете, как ускорить чтение файлов Parquet при использовании PyArrow и Pandas.

Как ускорить чтение файлов Parquet с помощью PyArrow в Python

При работе с большими наборами данных использование файлов Parquet всё ещё может оказаться медленнее, чем ожидалось. При использовании функции read_parquet() из Pandas для загрузки ваших данных, операцию можно ускорить, добавив в процесс PyArrow.

Мы можем использовать утилиту PyArrow для преобразования датасета в DataFrame Pandas, как показано ниже. PyArrow не позволяет указать URL-адрес. Из-за этого вам придется скачать файл данных и использовать его локально.

# Использование PyArrow для преобразования Parquet в DataFrame Pandas
import pandas as pd
import pyarrow.parquet as pq

data = pq.read_table('Sample.parquet')
df = data.to_pandas()

print(df.head())

# Возвращает:
#       Name  Age  Gender
# 0     Jane   10  Female
# 1      Nik   35    Male
# 2     Kate   34  Female
# 3  Melissa   23  Female
# 4     Evan   70    Male

Этот метод может работать значительно быстрее, чем просто использование Pandas для загрузки очень большого набора данных. Однако значительные приросты производительности вы заметите только при работе с очень большими файлами.

Заключение

В этом учебном пособии вы научились использовать Pandas для чтения файлов Parquet с помощью функции read_parquet(). Сначала вы узнали, что такое файлы Parquet и когда вы можете столкнуться с ними. Затем вы научились использовать функцию для чтения образца parquet. После этого вы узнали, как указать, какие столбцы читать, и как изменить используемый для чтения файлов движок. Наконец, вы узнали, как использовать Pandas и PyArrow вместе для ускорения чтения очень больших файлов.

Дополнительные ресурсы

Чтобы узнать больше о смежных темах, ознакомьтесь с нижеприведенными руководствами:

  • Как использовать Pandas для чтения файлов Excel на Python

  • Кадр данных Pandas в файл CSV – экспорт с использованием .to_csv()

  • Pandas to_excel: запись фреймов данных в файлы Excel

  • Как прочитать текстовый файл на Python (Python открыт)

Last updated