pandasのpickle protocol 5エラーへの対処法

ローカルマシンのAnacondaで加工したPythonのpickleファイルをColaboratoryに読ませようとしたところで

Error: Unsupported Pickle Protocol 5

のエラーが出て読めなくなった。Pickleファイルの読み出しエラーは経験したことなかったので(だからこそ信頼しているのだが)結構驚いた。

この問題は日本語だと解決策・解説ともに間違った記事が上がっているのではっきり書いておくと、protocol 5エラーはpandasのバージョンの問題で単純に最新のprotocol 5に対応していないから読み出せないっていう話であって、pandasのファイルを移動したからどうこうっていう話ではないはず。

ちゃんとやろうとするとPlatformIOの隠しフォルダ(pio)を潰して再インストールしろとか色々あるんだけど、一番楽に対応できるのはprotocol 5のpickleを読み出すためのpickle5パッケージを使うこと。(Python 3.7 Error: Unsupported Pickle Protocol 5 | stack overflow

単にpipからインストールすればいい。

%pip install pickle5

インストールできたら後は呼び出して読み込むだけなので

import pickle5
path = ‘dataset.pkl'
with open(path, "rb") as fh:
     d = pickle5.load(fh)

まあこんな感じで読み出せる。簡単。

まあAnacondaとcolabのpandasのバージョンの相違による問題(anacondaのpandasがprotocol 5で吐き出したけどcolabのpandasが対応してないだけの話)なので、単純にcolabで使ってるデフォルトのバージョンが更新され次第解決されるんじゃないかな。