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

【Python】Pandasのagg()とnuniqueでユニーク数(重複なし件数)をカウントする方法

Pandasで重複を除いた件数(ユニーク数)を数えるには、nuniqueを使用します。本記事では、groupby()で列ごとにデータをグループ化しながら、NumPyのsum()を使って合計値も同時に算出する方法を、サンプルコード付きでわかりやすく解説します。

必要なライブラリのインポート

まず、pandasとnumpyをインポートします。

import pandas as pd
import numpy as np

サンプルDataFrameの作成

次に、重複した値を含む3列(Car/Place/Units)を持つDataFrameを作成します。

dataFrame = pd.DataFrame(
    {
        "Car": ['BMW', 'Audi', 'BMW', 'Lexus', 'Lexus'],
        "Place": ['Delhi', 'Bangalore', 'Delhi', 'Chandigarh', 'Chandigarh'],
        "Units": [100, 150, 50, 110, 90]
    }
)

このデータでは、BMWとLexusがそれぞれ2行ずつ存在しており、同じ車種・地域の組み合わせが重複しています。

agg()とnuniqueでユニーク数をカウントする

agg()メソッドによる集計では、辞書形式で「列名: 適用する関数」を指定できます。ここでは「Units」列にnp.sumで合計を、「Place」列にpd.Series.nuniqueでユニーク数を適用します。

dataFrame = dataFrame.groupby("Car").agg({"Units": np.sum, "Place": pd.Series.nunique})

完全なコード例

ここまでの手順をまとめたコードは以下の通りです。

import pandas as pd
import numpy as np

dataFrame = pd.DataFrame(
    {
        "Car": ['BMW', 'Audi', 'BMW', 'Lexus', 'Lexus'],
        "Place": ['Delhi', 'Bangalore', 'Delhi', 'Chandigarh', 'Chandigarh'],
        "Units": [100, 150, 50, 110, 90]
    }
)

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

# 集計時にnuniqueでユニーク数をカウント
result = dataFrame.groupby("Car").agg({"Units": np.sum, "Place": pd.Series.nunique})

print("\nUpdated DataFrame ...\n", result)

実行結果

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

DataFrame ...
     Car       Place  Units
0    BMW       Delhi    100
1   Audi   Bangalore    150
2    BMW       Delhi     50
3  Lexus  Chandigarh    110
4  Lexus  Chandigarh     90

Updated DataFrame ...
        Units  Place
Car
Audi      150      1
BMW       150      1
Lexus     200      1

結果を見ると、車種ごとに「Units」の合計が計算され(例:Lexusは110+90=200)、一方「Place」には重複を除いた地域の件数が表示されていることがわかります。これにより、1つの集計処理で「合計」と「ユニーク数」という異なる種類の統計を同時に取得できます。

補足:バージョンに関する注意点

agg()内でnp.sumを指定する書き方は従来から広く使われていますが、近年のPandasでは「"sum"」という文字列指定やpd.Series.sumの利用が推奨される場合があります。また、古いサンプルコードに見られるprint文(Python 2構文)は、Python 3ではprint()関数として記述する必要がある点にも注意してください。

  1. PythonのMatplotlibでPandas DataFrameのヒストグラムを描画する方法

    ヒストグラムとは、データの分布を視覚的に表現したグラフです。PandasのDataFrameからヒストグラムを作成するには、Matplotlibのhist()メソッドを使用します。この記事では、具体的なコード例とともに、その手順をわかりやすく解説します。必要なライブラリのインポートまず、PandasとMatplotlibの2つのライブラリをインポートします。import pandas as pd import matplotlib.pyplot as pltDataFrameの作成次に、「Car(車名)」と「Reg_Price(登録価格)」の2つの列を持つDataFrameを作成します。dat

  2. Python Pandas入門:DataFrame内のNaN(欠損値)を0に置き換える方法

    PandasのDataFrameに含まれるNaN(欠損値)を0に置き換えるには、fillna()メソッドを使用します。このメソッドは、データクレンジングや前処理の際に非常によく使われる基本的なテクニックです。例として、以下のようなCSVファイル(Microsoft Excelで開いた状態)があるとします。このデータには一部NaN値が含まれています。手順1:必要なライブラリをインポートするまず、Pandasライブラリをインポートします。import pandas as pd手順2:CSVファイルからDataFrameを読み込む次に、read_csv()メソッドを使ってCSVファイルのデータをDa