Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pandas DataFrameで値をグループ化してカウントする方法

Pandas DataFrameで値の出現回数をグループ化してカウントするには、groupby()size()unstack()メソッドを組み合わせて使用します。これらを連携させることで、複数のキーによる集計結果を見やすいマトリクス形式に変換できます。

まず、3つの列(商品カテゴリ、商品名、数量)を持つDataFrameを作成しましょう。

dataFrame = pd.DataFrame({
    'Product Category': ['Computer', 'Mobile Phone', 'Electronics', 'Electronics', 'Computer', 'Mobile Phone'],
    'Product Name': ['Keyboard', 'Charger', 'SmartTV', 'Camera', 'Graphic Card', 'Earphone'],
    'Quantity': [10, 50, 10, 20, 25, 50]
})

次に、groupby()メソッドで値をグループ化し、カウントにはsize()を使用します。さらにunstack()を呼び出すことで、新しいレベルの列ラベルが生成され、マルチインデックスのデータがピボットされた形式に変換されます。ここではfill_value=0を指定して、存在しない組み合わせを0で埋めています。

dataFrame = dataFrame.groupby(['Product Category', 'Product Name', 'Quantity']).size().unstack(fill_value=0)

完全なコード例

以下が全体のコードです。

import pandas as pd

# 3つの列を持つDataFrameを作成
dataFrame = pd.DataFrame({
    'Product Category': ['Computer', 'Mobile Phone', 'Electronics', 'Electronics', 'Computer', 'Mobile Phone'],
    'Product Name': ['Keyboard', 'Charger', 'SmartTV', 'Camera', 'Graphic Card', 'Earphone'],
    'Quantity': [10, 50, 10, 20, 25, 50]
})

# DataFrameを表示
print("Dataframe...\n", dataFrame)

# グループ化してカウントし、unstackで整形
dataFrame = dataFrame.groupby(['Product Category', 'Product Name', 'Quantity']).size().unstack(fill_value=0)

print("\nResultant DataFrame...\n", dataFrame)

実行結果

上記のコードを実行すると、次のような出力が得られます。

Dataframe...
    Product Category   Product Name   Quantity
0          Computer        Keyboard         10
1      Mobile Phone         Charger         50
2       Electronics        SmartTV         10
3       Electronics          Camera         20
4          Computer    Graphic Card         25
5      Mobile Phone       Earphone         50

Resultant DataFrame...
Quantity                             10  20  25  50
Product Category   Product Name
Computer           Graphic Card       0   0   1   0
                   Keyboard           1   0   0   0
Electronics        Camera             0   1   0   0
                   SmartTV            1   0   0   0
Mobile Phone       Charger            0   0   0   1
                   Earphone           0   0   0   1

このように、商品カテゴリ・商品名・数量の組み合わせごとの出現回数が、行と列が交差するマトリクス形式で確認できます。データに存在しない組み合わせはfill_value=0によって自動的に0で埋められるため、欠損値を気にせず集計結果を比較できます。クロス集計やピボットテーブル的な分析を行いたい場合に非常に便利な手法です。

  1. 【Python】Pandas DataFrameからnull(欠損値)行を削除する方法|dropna()の使い方

    PandasのDataFrameからnull(NaN)行を削除するには、dropna()メソッドを使用します。この記事では、NaNを含むCSVファイルを読み込み、dropna()で欠損値を含む行を取り除くまでの手順を、サンプルコードと実行結果とともにわかりやすく解説します。前提:NaNを含むCSVファイル今回の例では、一部にNaN(null値)が含まれる以下のようなCSVファイル(CarRecords.csv)を使用します。手順1:read_csv()でCSVファイルを読み込むまずpandasをインポートし、read_csv()を使ってCSVファイルを読み込みます。ここではデスクトップ上に保存

  2. MatplotlibでPandasデータフレームのプロットDPIを変更する方法

    PandasのDataFrameプロットのDPI(dots per inch:1インチあたりのドット数)を変更するには、MatplotlibのrcParamsを使用して解像度を設定します。rcParamsを使うことで、スクリプト全体に対して一括で描画設定を適用できるため、グラフの画質を簡単に調整できます。手順図のサイズを設定し、figure.autolayoutでサブプロット間および周囲の余白を自動調整します。plt.rcParams[figure.dpi] = 120 のようにしてDPI値を設定します。プロット用のPandasデータフレームを作成します。データフレームをプロットします。sho