データフレームの連結が指数関数的に遅い
大規模なデータセットを扱う場合、効率的に処理するためにデータを小さなチャンクに分割するのが一般的です。ただし、これらのチャンクを再度連結すると、チャンクの数が増加するにつれて指数関数的に遅くなる可能性があります。
速度低下の原因
速度低下は、pd.concat() の実行方法に起因します。が実装されています。ループ内で呼び出される場合、連結ごとに新しい DataFrame が作成され、その結果、大量のデータがコピーされます。このコピー コストは反復回数に応じて二次関数的に増加し、処理時間の指数関数的な増加につながります。
速度低下の回避
このパフォーマンスのボトルネックを回避するには、次のことが重要です。 for ループ内で pd.concat() を呼び出すのを避けるためです。代わりに、チャンクをリストに保存し、処理後にすべてを一度に連結します。
super_x = [] for i, df_chunk in enumerate(df_list): [x, y] = preprocess_data(df_chunk) super_x.append(x) super_x = pd.concat(super_x, axis=0)
このアプローチを使用すると、コピーは 1 回だけ行われるため、全体の処理時間が大幅に短縮されます。
以上が多くの Pandas DataFrame を連結すると指数関数的に遅くなるのはなぜですか?それを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。