본문 바로가기
카테고리 없음

파이썬 버전이 달라 pickle read가 되지 않을때!! (pd.read_pickle 에러)

by 일등박사 2022. 1. 5.
728x90

 

안녕하세요!!

 

저는 용도에 따라 몇개의 서버(라즈베리파이)에

노트북을 설치하여 운영중에 있는데요!!

 

아쉽게도 공동의 저장장치가 없어 데이터 이동이 필요할 떄는

Pandas Dataframe을

pickle 파일을 통해서 이동하여 사용하고있습니다!!

csv와 달리 pickle은 내부의 형식이 그대로 유지가 되어 참 좋은데요!!

 

import pandas as pd
import pickle

df = pd.DataFrame()
df['a'] = pd.Series([1,2,3,4,5])
df['b'] = pd.Series([1,2,3,4,5])
df.to_pickle('sample.pickle')

 

- pandas의 to_pickle기능!! 참 편리합니다

 

그런데!!! 파이썬의 버젼이 다를 떄는 

valueerror unsupported pickle protocol: 5

 

 라는 에러가 발생합니다!!!

 

조사해보니 Python의 버젼에 따라 피클의 프로토콜이 달라

발생하는 문제라고하는데요!!

여튼!! 그럼 어떻게 해결 할 수 있을까요!?

 

바로 With을 활용하면 됩니다!!

import pandas as pd
import pickle

df = pd.DataFrame()
df['a'] = pd.Series([1,2,3,4,5])
df['b'] = pd.Series([1,2,3,4,5])
with open("sample.pickle", "wb") as MyFile:
     pickle.dump(df, MyFile, protocol=3)

 

위와 같이 저장방법을 바꾼뒤 

다른 사양의 파이썬 환경에서

 

import pickle

with open("sample.pickle", "rb") as MyFile:
    df = pickle.load(MyFile)

이렇게 로드해 준다면 다시 잘읽어오는것을 확인할 수 있습니다!!^^

 

감사합니다. 

728x90

댓글