パンダのチャンクサイズ

Manav Narula 2023年6月21日
パンダのチャンクサイズ

Python の pandas ライブラリを使用すると、DataFrame を操作できます。 データは、DataFrame 内の行と列に編成されます。

複数のソースから DataFrame にデータを読み込むことができます。

実際の状況では、何千もの行と列を含むデータセットを扱うことができます。 ソースによっては、このデータセットを DataFrame に読み込むことができます。

パンダのチャンクサイズ

大きなデータセットを読み取る際に chunksize パラメータを使用して、データセットをデータのチャンクに分割することがあります。 chunksize パラメータでこれらのチャンクのサイズを指定します。

これにより、計算メモリが節約され、コードの効率が向上します。

まず、[read_csv() 関数』で chunksize パラメータを使用せずに CSV ファイルを読み込んでみましょう。 この例では、映画のレビュー を含むサンプル データセットを読み取ります。

import pandas as pd

df = pd.read_csv("ratings.csv")
print(df.shape)
print(df.info)

出力:

(25000095, 4)
<bound method DataFrame.info of           userId  movieId  rating   timestamp
0              1      296     5.0  1147880044
1              1      306     3.5  1147868817
2              1      307     5.0  1147868828
3              1      665     5.0  1147878820
4              1      899     3.5  1147868510
...          ...      ...     ...         ...
25000090  162541    50872     4.5  1240953372
25000091  162541    55768     2.5  1240951998
25000092  162541    56176     2.0  1240950697
25000093  162541    58559     4.0  1240953434
25000094  162541    63876     5.0  1240952515

[25000095 rows x 4 columns]>

上記の例では、指定されたデータセットを読み取り、その詳細を表示します。 shape 属性は、行と列、それぞれ 25000095 と 4 を返します。

info 属性を使用して、データセットの行と列に関する情報も表示します。

このデータセットには 2500005 行が含まれており、このような大きなデータセットを処理するにはコンピューターのメモリを大量に消費することがわかります。 そのような場合、chunksize パラメータを使用できます。

このために、まず Python のイテレータとは何かを理解しましょう。

反復可能なシーケンスは、for ループを使用してループできます。 for ループは、iter() メソッドをそのようなオブジェクトに内部的に適用して、イテレーターを作成します。

next() 関数を使用して、シーケンス内の要素にアクセスできます。

chunksize パラメータを使用すると、イテレータが取得されます。 このオブジェクトを繰り返し処理して値を取得できます。

import pandas as pd

df = pd.read_csv("ratings.csv", chunksize=10000000)
for i in df:
    print(i.shape)

出力:

(10000000, 4)
(10000000, 4)
(5000095, 4)

上記の例では、chunksize パラメーターに値を指定し、データセットを指定された行のデータのチャンクに読み取ります。 このデータセットでは、chunksize 演算子を 10000000 に指定したときに 3つの反復子がありました。

返されるオブジェクトは DataFrame ではなく、pandas.io.parsers.TextFileReader オブジェクトです。

オブジェクトを反復処理して、値にアクセスできます。 各反復子の列数は同じであることに注意してください。これは、反復子の作成中に chunksize パラメーターが行のみを考慮することを意味します。

このパラメーターは、pandas.read_jsonpandas.read_statapandas.read_sql_tablepandas.read_sas などの他のソースからデータを読み取ることができる他の関数で使用できます。 このパラメーターを使用する前に、公式ドキュメントをチェックして、その可用性を確認することをお勧めします。

著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn