よしたく blog

ITエンジニアとして自分が知らなかったことをまとめています

chunksizeを指定して、pandasで巨大ファイルを扱う

pandas でサイズの大きなファイルを扱うにはどうすればいいか調べたところ、ファイルを読み込む際に chunksize 引数を指定して、分割して読み込む方法があることを知った。 Google clab にあるサンプルファイルを使って動きを確認する。

まずは何も指定せずファイルを読み込む。

import pandas as pd

df = pd.read_csv('sample_data/mnist_test.csv')
df.shape

結果的に、9999 行と 785 列を保持していることがわかった。

(9999, 785)

今読み込んだファイルを分割して読み込む。 pd.read_csv関数のオプションへ chunksize 引数に読み込む行数を指定して実行する。

import pandas as pd

for df in pd.read_csv('sample_data/mnist_test.csv', chunksize=512):
  print(df.shape)

ループの中でdf.shapeを実行していて、その結果が出力されている。 最後を除くループで(512, 785)が出力されており、無事に分割しながら読み込めていることがわかる。

(512, 785)
(512, 785)
(512, 785)
(512, 785)
(512, 785)
(512, 785)
(512, 785)
(512, 785)
(512, 785)
(512, 785)
(512, 785)
(512, 785)
(512, 785)
(512, 785)
(512, 785)
(512, 785)
(512, 785)
(512, 785)
(512, 785)
(271, 785)