ホームページ >バックエンド開発 >Python チュートリアル >一意の識別子に基づいて大きなデータフレームをより小さなサブセットに効率的に分割するにはどうすればよいですか?

一意の識別子に基づいて大きなデータフレームをより小さなサブセットに効率的に分割するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-19 05:42:17862ブラウズ

How Can I Efficiently Split a Large DataFrame into Smaller Subsets Based on a Unique Identifier?

一意の識別子列に基づいて大規模なデータフレームをより小さなサブセットに分割する

大規模なデータセットを扱う場合、データセットを次のように分割すると有利な場合があります。より効率的な処理と分析のための、より小さく管理しやすいサブセット。この記事では、数百万行を含む大規模なデータフレームを、参加者に割り当てられた一意のコードごとに 1 つずつ複数のデータフレームに分割するという特定のタスクについて説明します。

提供されたコード スニペットは、for ループを使用して反復してデータフレームを分割しようとします。各行を調べて、参加者コードが現在割り当てられているコードと一致するかどうかを確認します。このアプローチは概念的には正しいですが、その実行は非効率的であり、大規模なデータセットの実行時間が過度に長くなる可能性があります。

代わりに、データ操作技術を使用すると、より効率的なソリューションを実現できます。 unique() 関数を使用して個別のコードを識別し、filter() メソッドを適用して各コードに関連付けられた行を分離することで、個別のデータフレームをシームレスに作成できます。

以下の改良されたコードでは、辞書が初期化されます。結果のデータフレームを、それぞれの一意のコードを辞書キーとして保存します。 filter() メソッドは、参加者コードに基づいて行を抽出するために使用され、結果のデータフレームが辞書に追加されます。

import pandas as pd
import numpy as np

# Create a dataframe with random data and a 'Names' column
data = pd.DataFrame({'Names': ['Joe', 'John', 'Jasper', 'Jez'] * 4, 'Ob1': np.random.rand(16), 'Ob2': np.random.rand(16)})

# Extract unique participant codes
participant_codes = data.Names.unique()

# Initialize a dictionary to store dataframes
participant_dataframes = {code: pd.DataFrame() for code in participant_codes}

# Iterate through unique codes and create dataframes for each participant
for code in participant_codes:
    participant_dataframes[code] = data[data.Names == code]

# Print dictionary keys to verify participant dataframes
print(participant_dataframes.keys())

このコードは、明示的なループの代わりにデータ操作技術を利用することで、より多くの機能を提供します。一意の識別子列に基づいて大規模なデータフレームを分割するための効率的でスケーラブルなソリューション。

以上が一意の識別子に基づいて大きなデータフレームをより小さなサブセットに効率的に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。