Невозможно загрузить файл, содержащий засеченные данные - Python .npy I / O - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь сохранить фрейм данных и матрицу в виде файлов .npy с помощью np.save (), а затем прочитать их с помощью np.load (), но получаю следующую ошибку:

  File "/Users/sofiafarina/opt/anaconda3/lib/python3.7/site-packages/numpy/lib/npyio.py", line 457, in load
    raise ValueError("Cannot load file containing pickled data "

ValueError: Cannot load file containing pickled data when allow_pickle=False

Even если я пишу allow_pickle = True, я получаю сообщение об ошибке:

  File "/Users/sofiafarina/opt/anaconda3/lib/python3.7/site-packages/numpy/lib/npyio.py", line 463, in load
    "Failed to interpret file %s as a pickle" % repr(file))

OSError: Failed to interpret file 'finaldf_p_85_12.npy' as a pickle

Так, как я могу сохранить df из python сценария и затем загрузить его в другой? Должен ли я использовать другие функции? Спасибо!

1 Ответ

1 голос
/ 07 апреля 2020

Python использует собственный модуль сериализации данных под названием Pickle. Вложенные данные (например, список списков) сериализуются с использованием pickle, а NumPy предупреждает о травлении.

Предупреждение. Для загрузки файлов, содержащих массивы объектов, используется модуль pickle, который не защищен от ошибочных или злонамеренных данных. Рекомендуется передать allow_pickle = False для загрузки данных, которые, как известно, не содержат массивов объектов, для более безопасной обработки ненадежных источников.

Возможно, вы сохраняете массив, состоящий из одного dataFrame. Это вызывает травление. Пример:

x =  array([[ 0.1,  0.1,  0.1],
       [ 0.1,  0.1,  0.1],
       [ 0.1,  0.1,  0.1],
       [ 0.1,  0.1,  0.1],
       [ 0.1,  0.1,  0.1],
       [ 0.1,  0.1,  0.1],
       [ 0.1,  0.1,  0.1]])

В этом случае попробуйте сохранить только массив numpy как np.save(x[0], filename). Это не будет использовать травление, чтобы сохранить ваши данные и решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...