pandasでサイズの大きいファイルの読み込み方
kaggleのファイルが大きすぎてpandasでまとめて読み込めなかったのでその時の対処法をメモ。
今回はCSVファイルを使っています。もうこの時点でナンセンスなのかもしれない。笑
普通にCSVファイル読み込むときはこんな感じ。
df = pd.read_csv('train.csv')
しかし、ファイルがでかすぎてメモリ不足のエラーが出る。
そこで、ファイルを分割して読み込んでからデータフレームをがっちゃんこさせる作戦。
以下のようにファイルを読み込ませます。chunksizeと指定することにより指定サイズ分の列ごとに取り出すTextFileReaderのインスタンスを作る。
df1_instance = pd.read_csv('train.csv',chunksize = 10)
df1_instance
output>
pandas.io.parsers.TextFileReader at 0x10470ca58
このインスタンスからデータフレームを取り出すために.get_chunk()メソッドを使う。
df1_instance.get_chunk()
output>
TextFileReaderは読み込んだ位置を覚えているので、もう一回同じことをすると次の塊をデータフレームとして読み込む。
df1_instance.get_chunk()
output>
最後に分割したデータフレームをがっちゃんこさせる。
for文でループさせるとでーたフレームの一番終わりのところまで読んでくれる。
indexが重複しないようにignore_index=Trueも忘れずに。
df = pd.concat((r for r in df_instance), ignore_index=True)