ホームページ > バックエンド開発 > Python チュートリアル > 多くの Pandas DataFrame を連結すると指数関数的に遅くなるのはなぜですか?それを回避するにはどうすればよいですか?

多くの Pandas DataFrame を連結すると指数関数的に遅くなるのはなぜですか?それを回避するにはどうすればよいですか?

DDD
リリース: 2024-12-20 03:38:13
オリジナル
773 人が閲覧しました

Why is Concatenating Many Pandas DataFrames Exponentially Slow, and How Can I Avoid It?

データフレームの連結が指数関数的に遅い

大規模なデータセットを扱う場合、効率的に処理するためにデータを小さなチャンクに分割するのが一般的です。ただし、これらのチャンクを再度連結すると、チャンクの数が増加するにつれて指数関数的に遅くなる可能性があります。

速度低下の原因

速度低下は、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート