Преобразование DataFrame Pandas в файл Pickle

Pickle файлы — это сериализованные структуры данных, которые позволяют сохранять состояние данных между сессиями. Pickle файлы чрезвычайно распространены в науке о данных. В этом уроке вы узнаете, как сериализовать Pandas DataFrame в Pickle файл. Понимание этой функции важно, учитывая распространенность pickle файлов в рабочих процессах науки о данных.

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

  • Как использовать метод Pandas .to_pickle()

  • Как сериализовать Pandas DataFrame и Pandas Series для выбора файлов

Оглавление

Понимание метода Pandas to_pickle

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

# Understanding the Pandas .to_pickle() Method
import pandas as pd
df = pd.DataFrame()
df.to_pickle(path, compression='infer', protocol=5, storage_options=None)

В таблице ниже представлены различные параметры и аргументы метода по умолчанию:

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

path=

Путь, по которому должен быть сохранен сериализованный объект.

N/A

string

compression=

Для оперативного сжатия выходных данных.

'infer'

string or dict

protocol=

Целочисленное представление того, какой протокол следует использовать.

5

int

storage_options=

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

None

dict

Теперь, когда у вас есть твердое понимание метода .to_pickle(), давайте загрузим пример Pandas DataFrame, чтобы следовать за уроком вместе с нами.

Загрузка образца DataFrame Pandas

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

# Loading a Sample Pandas DataFrame
import pandas as pd
df = pd.DataFrame({
    'Name': ['Nik', 'Katie', 'Evan'],
    'Age': [34, 33, 27],
    'Location': ['Toronto', 'NYC', 'Atlanta']
})

print(df)

# Returns:
#     Name  Age Location
# 0    Nik   34  Toronto
# 1  Katie   33      NYC
# 2   Evan   27  Atlanta

У нас есть DataFrame с тремя столбцами и тремя записями. Теперь, когда у нас есть DataFrame, давайте узнаем, как преобразовать его в сериализованный файл Pickle.

Преобразование фрейма данных Pandas в файл Pickle

Метод .to_pickle() библиотеки Pandas имеет только один обязательный аргумент - путь для сохранения сериализованного файла. Так как параметр path= является первым по порядку, вы можете просто передать строку, представляющую путь для сохранения файла.

Давайте посмотрим, как мы можем сериализовать наш DataFrame Pandas в файл Pickle:

# Serializing a Pandas DataFrame to a Pickle File
import pandas as pd
df = pd.DataFrame({
    'Name': ['Nik', 'Katie', 'Evan'],
    'Age': [34, 33, 27],
    'Location': ['Toronto', 'NYC', 'Atlanta']
})

df.to_pickle('pickle.pkl')

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

Мы можем прочитать часть сериализованного файла, используя менеджер контекста и .read() method.

# Reading Part of the Serialized File
with open('pickle.pkl', 'rb') as file:
    print(file.read(50))

# Returns:
# b'\x80\x05\x953\x03\x00\x00\x00\x00\x00\x00\x8c\x11pandas.core.frame\x94\x8c\tDataFrame\x94\x93\x94)\x81\x94}\x94'

В приведенном выше блоке кода мы открываем файл с использованием менеджера контекста. Затем мы используем метод .read(), чтобы прочитать первые пятьдесят символов сериализованного файла.

В следующем разделе вы узнаете, как сериализовать один столбец Pandas (или, точнее, серию Pandas) в файл pickle.

Добавление сжатия при выборе фрейма данных Pandas

При сериализации DataFrame из Pandas в файлы pickle можно применять дополнительное сжатие. Pandas поддерживает разнообразные форматы сжатия. Доступны следующие форматы: ‘.gz’, ‘.bz2’, ‘.zip’, ‘.xz’, ‘.zst’, ‘.tar’, ‘.tar.gz’, ‘.tar.xz’ или ‘.tar.bz2’.

Чтобы применить дополнительное сжатие, мы можем указать тип сжатия, который хотим использовать, в параметре compression=. Давайте посмотрим, как мы можем добавить сжатие в формате zip к нашему файлу:

# Adding zip Compression to a Pickle File
import pandas as pd
df = pd.DataFrame({
    'Name': ['Nik', 'Katie', 'Evan'],
    'Age': [34, 33, 27],
    'Location': ['Toronto', 'NYC', 'Atlanta']
})

df.to_pickle(path='pickle_compressed.zip', compression='zip')

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

Преобразование серии Pandas (столбца) в файл Pickle

Мы также можем сериализовать отдельный столбец DataFrame Pandas (серию Pandas) в файл pickle. Это можно сделать, применив метод .to_pickle() к серии. Процесс работает так же, как и сериализация целого DataFrame в файл pickle.

Давайте посмотрим, как можно конвертировать объект Pandas Series в файл формата pickle:

# Serializing a Single Pandas DataFrame Column
import pandas as pd
df = pd.DataFrame({
    'Name': ['Nik', 'Katie', 'Evan'],
    'Age': [34, 33, 27],
    'Location': ['Toronto', 'NYC', 'Atlanta']
})

df['Age'].to_pickle('pickle_series.pkl')

Заключение

В этом учебном пособии вы узнали, как сохранить DataFrame Pandas в сериализованный файл pickle. Сначала вы узнали о методе .to_pickle() Pandas и его различных параметрах. Затем вы узнали, как сохранить DataFrame Pandas в файл pickle. После этого вы узнали, как применить дополнительное сжатие к файлу. Наконец, вы узнали, как сериализовать отдельный Pandas Series.

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

Чтобы узнать больше о связанных темах, ознакомьтесь с обучающими материалами ниже:

  • Преобразование DataFrame Pandas в массив NumPy

  • Преобразование фрейма данных Pandas в словарь

  • Преобразование фрейма данных Pandas в список

  • Преобразование DataFrame Pandas в файл JSON

Last updated