Pandas GroupAggregate により

Pandas Groupaggregate Niyori



groupby 手法は、パフォーマンスとコード サイズの両方の観点からデータを適切に集約するため、不可欠です。 「グループ化」という用語は通常、次の手順を含む手順を表します。

  • 分割 : データセットに特定の条件を適用することで、データをグループに分けることができます。
  • 申請中 : すべてのグループにメソッドを個別に適用するプロセス。
  • 組み合わせる : groupby() メソッドを使用した後、さまざまなデータセットを組み合わせてデータ構造を形成する手順。

集計の過程で、各グループの要約統計が計算されます。グループごとに、aggregate メソッドは集計値 (単一値) を返します。 groupby 関数を使用してデータをグループに分割した後、グループ化されたデータに対していくつかの集計操作を実行できます。







Pandas がさまざまなデータ集計方法を提供するのはなぜですか?

Pandas は、データの分析と集計に役立つ幅広い機能を提供します。たとえば、pivot()、groupby()、および pivot_table() メソッドを使用すると、それぞれがデータの集計方法について異なる視点を提供します。それらは、単に再パッケージ化するのではなく、さまざまなタスクを実行するための実用的なアプローチを提供します。



Pandas で .agg() 関数を使用する方法

値の単純平均または合計は、最も頻繁に使用される集計関数です。データフレームの列または複数の列を使用して、集計関数を呼び出すことができます。 Pandas の groupby メソッドを使用してデータを集計する方法はたくさんあります。手順がいかに簡単かを示すために、以下に示すいくつかの例を見てみましょう。合計、最小、最大、平均絶対偏差、標準偏差、平均、中央値、分散、積などの基本的な数学演算は、最も頻繁に使用される組み込み集計関数の 1 つです。データを要約するには、groupby と agg() 関数を組み合わせることができます。



例 # 01: groupby.agg() 関数を使用してデータをグループ化し、列の合計を決定する

最初に pd.DataFrame() 関数を使用してデータフレームを作成し、データフレームの列または列からデータをグループ化し、それらの平均値を決定できるようにします。データフレームを作成する前に、pandas のモジュールと numpy ライブラリをインポートする必要があります。





ご覧のとおり、pandas ディクショナリを使用してデータフレームを作成しました。私たちの df データフレームには、「患者」、「グループ」、「年齢」、「血液ボトル」の 4 つの列があります。データ値 ('Ali'、'John'、'Mike'、'Mike'、'John'、'Ali'、'Ali'、'Mike') は列「患者」に含まれていますが、データ値 ('A ', 'A', 'B', 'C', 'A', 'C', 'C', 'B'), (21, 22, 24, 21, 20, 24, 22, 22) および ( 2, 3, 1, 1, 2, 3, 2, 1) は、それぞれ列「group」、「age」、および「blood_bottles」に含まれています。 「グループ」列の値をグループ化して、「blood_bottles」列の値の合計を決定する必要があるとします。



グループ データ「A」の場合、「blood_bottles」の値の合計は 7 です。グループ値「B」と「C」の場合、「blood_bottles」の値の合計はそれぞれ 2 と 6 です。複数の列をグループ化して、各グループの合計を決定することもできます。

ご覧のとおり、列ラベルのリスト、つまり ['patient', 'group'] を groupby() 関数内に渡して、指定された各列にカテゴリのグループを作成しています。指定された列のグループごとに、「blood_bottles」の値の合計を決定しました。たとえば、「アリ」は「グループ」列の値 A と C にあります。グループ A では、アリの「blood_bottles」の値の合計は 2 であり、グループ「C」では 5 です。

例 # 02: groupby.agg() 関数を使用して、データフレームの 1 つの列に複数の関数を適用する

パンダ関数 agg() を使用して、「groupby()」メソッドで複数の集計を適用できます。呼び出し可能なリスト をメソッドに渡すことができます。 numpy ライブラリの組み込みメソッドを使用してデータを集計する方法を見てみましょう。前の例とは異なり、データフレームの 1 つの列に複数の関数を適用します。 pd.DataFrame() 関数を使用して、数値を含む少なくとも 1 つの列を持つデータフレームを作成します。


必要なデータフレームは、1 つの数値列、つまり値 41、40、35、39、49、31、34、および 42 の「マーク」を持つように作成されています。さらに 3 つの列「学生」、「科目」、および「学位」があります。 groupby() 関数を使用してグループに分割できるデータフレーム内。列 'students' および 'subjects' の値は ('Harry', 'Ron', 'Harry', 'Lana', 'Sam', 'Ron', 'Lana', 'Max') および ('C++' 、「JAVA」、「Python」、「Python」、「AI」、「JAVA」、「C++」、「AI」)。列度には、データ値が文字列として含まれています。列「被験者」のデータをグループ化し、グループ化された各データの列「マーク」の平均と合計の両方を決定する必要があるとします。

データをカテゴリのグループに変換するために、「subjects」列の名前を groupby() 関数内の文字列として指定しました。マーク列については、agg() メソッドを使用し、agg() 関数内で numpy 関数 np.sum および np.mean を指定して、列サブジェクトの各グループ データのマークの合計と平均を見つけました。グループ値「AI」の合計値と平均値は、それぞれ 91 と 45.5 です。値「C++」の点数の合計は 75 で、平均値は 37.5 です。グループ JAVA の点数の合計は 71 で、平均値は 35.5 ですが、Python の合計と平均値はそれぞれ 74 と 37 です。

例 # 03: groupby.agg() 関数を使用して、データフレームの複数の列に複数の関数を適用する

単一のデータフレームの列に異なる関数を適用するのではなく、複数の関数を異なる数値列に適用できます。 agg() 関数で辞書を入力として使用して、特定の集計方法を異なるデータフレームの列に適用できます。複数の数値列を持つデータフレームを作成する前に、pandas と numpy ライブラリをインポートしましょう。

新しく作成されたデータフレームには、「player」、「least_score」、「highest_score」、「location」という名前の 4 つの列があります。 'player' 列には、数人のプレーヤーの名前を文字列データ値 ('Leo'、'Alex'、'Leo'、'Fin'、'Leo'、'Alex'、'Fin'、' Fin')、列「least_score」には、一部の試合 (12、34、2、21、9、1、0、34) で最低スコアのプレーヤーがあり、列「highest_score」にはプレーヤーの最高スコアがあります。 (12, 34, 2, 21, 9, 1, 0, 34) 列の「場所」には、選手が試合を行った会場の名前があります (「フランス」、「イングランド」、「ドバイ」、「ドバイ」、「イングランド」、「フランス」、「ドバイ」、「フランス」)。

データを「プレーヤー」列にグループ化した後、各グループの「least_score」列値の平均と「hightest_score」データ値の合計を見つける必要があるとします。

agg() 関数内で、Python 辞書 {'highest_score' : 'sum', 'least_score' : 'mean'} を渡し、各グループに対する指定された列の合計値と平均値を見つけました。グループ化された値 Alex の「highest_score」値の合計は 132 で、「least_score」値の平均は 17.5 であることがわかります。 「Fin」の場合、値の合計は 199 で、列「highest_score」と「least_score」の平均はそれぞれ 18.3333333 です。グループ値 Leo は、「highest_score」の合計値が 180 で、「least_score」の平均値が 7.666667 です。

結論

このチュートリアルでは、pandas の groupby() および集計関数について説明しました。 groupby.agg() 関数の使用方法についても説明しました。この記事では 3 つの例を実装して、単一および複数の列のデータをグループ化してデータフレーム列で単一の集計関数を使用する方法、データフレームの単一の列に複数の集計関数を適用する方法、および複数の集計関数を適用する方法を説明しました。 groupby.agg() 関数を使用して、データフレームの複数の列に対する集計関数。