Как сохранить Pandas DataFrame для дальнейшего использования (с примером)


Часто вам может потребоваться сохранить кадр данных pandas для последующего использования без необходимости повторного импорта данных из файла CSV.

Самый простой способ сделать это — использовать to_pickle() для сохранения DataFrame в виде файла рассола:

df.to_pickle (" my_data.pkl ")

Это сохранит DataFrame в вашей текущей рабочей среде.

Затем вы можете использовать read_pickle() для быстрого чтения DataFrame из файла рассола:

df = pd.read_pickle (" my_data.pkl ")

В следующем примере показано, как использовать эти функции на практике.

Пример: сохранение и загрузка Pandas DataFrame

Предположим, мы создаем следующий кадр данных pandas, который содержит информацию о различных баскетбольных командах:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
 'points': [18, 22, 19, 14, 14, 11, 20, 28],
 'assists': [5, 7, 7, 9, 12, 9, 9, 4],
 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
print(df)

 team points assists rebounds
0 A 18 5 11
1 B 22 7 8
2 C 19 7 10
3 D 14 9 6
4 E 14 12 6
5 F 11 9 5
6 G 20 9 9
7 H 28 4 12

Мы можем использовать df.info() для просмотра типа данных каждой переменной в DataFrame:

#view DataFrame info
print(df.info ())

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8 entries, 0 to 7
Data columns (total 4 columns):
 # Column Non-Null Count Dtype 
--- ------ -------------- ----- 
 0 team 8 non-null object
 1 points 8 non-null int64 
 2 assists 8 non-null int64 
 3 rebounds 8 non-null int64 
dtypes: int64(3), object(1)
memory usage: 292.0+ bytes
None

Мы можем использовать функцию to_pickle() , чтобы сохранить этот DataFrame в файл рассола с расширением .pkl :

#save DataFrame to pickle file
df.to_pickle (" my_data.pkl ")

Наш DataFrame теперь сохранен как файл рассола в нашей текущей рабочей среде.

Затем мы можем использовать функцию read_pickle() для быстрого чтения DataFrame:

#read DataFrame from pickle file
df= pd.read_pickle (" my_data.pkl ")

#view DataFrame
print(df)

team points assists rebounds
0 A 18 5 11
1 B 22 7 8
2 C 19 7 10
3 D 14 9 6
4 E 14 12 6
5 F 11 9 5
6 G 20 9 9
7 H 28 4 12

Мы можем снова использовать df.info() , чтобы убедиться, что тип данных каждого столбца такой же, как и раньше:

#view DataFrame info
print(df.info ())

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8 entries, 0 to 7
Data columns (total 4 columns):
 # Column Non-Null Count Dtype 
--- ------ -------------- ----- 
 0 team 8 non-null object
 1 points 8 non-null int64 
 2 assists 8 non-null int64 
 3 rebounds 8 non-null int64 
dtypes: int64(3), object(1)
memory usage: 292.0+ bytes
None

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

Это дает преимущество перед сохранением и загрузкой файлов CSV, поскольку нам не нужно выполнять какие-либо преобразования в DataFrame, поскольку файл рассола сохраняет исходное состояние DataFrame.

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

В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:

Как исправить KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в целое число
Как исправить: ValueError: операнды не могли транслироваться вместе с фигурами

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.