Pickleファイルの読み込み
サイズの大きなCSVをそのまま読み込むと4分とか時間がかかって困ることがあったので、pickleに変換保存して以降はそれを読み込むことで早くなった。pickleとはデータフレームに限らずクラスなどオブジェクトであればなんでもpickleとして保存できるみたい。
詳しいことはわからないけど、読み込むのは早くなる一方でファイルが壊れると直しようがないみたい。大事なデータはCSVでも持っておいた方がよさそう。あと、pickleだとファイルサイズが大きくなるみたい。
参考サイト
csvをpickleで保存して読み取りを速くする - Qiita
やってみた
Ubiquant Market Predictionのデータ読み込みについてやってみた。データ数は以下の通り300万ほど。
train.shape (3141410, 304)
CSVをそのまま読み込むと7分かかった。
%%time path = '../input/ubiquant-market-prediction/train.csv' basecols = ['row_id', 'time_id', 'investment_id', 'target'] features = [f'f_{i}' for i in range(300)] dtypes = { 'row_id': 'str', 'time_id': 'uint16', 'investment_id': 'uint16', 'target': 'float32', } for col in features: dtypes[col] = 'float32' train = pd.read_csv( path, usecols= basecols+features, dtype=dtypes ) CPU times: user 4min 20s, sys: 17.8 s, total: 4min 38s Wall time: 7min 9s
pickleで保存してから読み込むと1分もかからず。これはこっちのがよいわ。
%%time train_pkl = pd.read_pickle("./train.pkl") CPU times: user 1.77 s, sys: 5.79 s, total: 7.56 s Wall time: 43.7 s