グループ化されたデータ操作で Pandas の適用と変換を使用するのはどのような場合ですか?

Susan Sarandon
リリース: 2024-11-11 08:02:02
オリジナル
811 人が閲覧しました

When to Use Pandas apply vs transform for Grouped Data Operations?

Pandas では、適用と変換の両方を使用して、グループ化されたデータに対する操作を実行できます。ただし、2 つのメソッドには重要な違いがいくつかあります。

Input Type

  • apply は、各グループの DataFrame 全体を入力としてカスタム関数に渡します。
  • transform は、各グループの DataFrame の各列をカスタムへの入力として個別に渡します。 function.

出力タイプ

  • apply はスカラー、Series、または DataFrame を返すことができます。
  • transform はシーケンスを返す必要があります(シリーズ、配列、リストなど) と同じ長さのgroup.

Transformation

  • apply を使用すると、値の集計、行のフィルタリング、データの変更など、DataFrame で変換を実行できます。
  • transform は主に、値のスケーリングや、グループ内の行単位の操作を実行するために使用されます。新しい列を追加します。

次の DataFrame について考えます。

df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
                   'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
                   'C': randn(8), 'D': randn(8)})
ログイン後にコピー

各グループ内の列 D から列 C を減算するにはapply:

df.groupby('A').apply(lambda x: (x['C'] - x['D']))
ログイン後にコピー

を使用して、各グループ内の列 D から列 C を減算します。変換:

df.groupby('A').transform(lambda x: (x['C'] - x['D']).mean())
ログイン後にコピー

transform に渡されたラムダ関数は C と D の差の平均を返し、その結果、元の DataFrame と同じ形状の変換された列が得られることに注意してください。

適用と変換を使用する場合:

  • グループ内の複数の列にアクセスする必要がある場合、または異なる形式の出力となる操作を実行します (値の集計や行のフィルター処理など)。
  • グループ内で行単位の操作を実行する必要があり、新しい列または変数を作成する場合は、transform を使用します。入力データと同じ形状です。

以上がグループ化されたデータ操作で Pandas の適用と変換を使用するのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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