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

Python Pandasでグループごとに一意の値を数える方法

Python Pandasでグループごとに一意の値を数えるには、df.groupby('列名').count()を使用します。groupbyメソッドで指定した列を基準にデータをグループ化し、count()を組み合わせることで、各グループ内の値の出現回数を簡単に集計できます。

手順

  • サイズ変更可能な2次元の表形式データとしてDataFrame(df)を作成します。
  • 入力DataFrameであるdfを出力して内容を確認します。
  • df.groupby('rank')['id'].count()を使ってグループごとの値の個数を求め、変数「count」に格納します。
  • 手順3で取得したcountを出力します。

サンプルコード

import pandas as pd

df = pd.DataFrame(
    {
        "id": [1, 2, 1, 3, 5, 1, 4, 3, 6, 7],
        "rank": [1, 4, 1, 2, 1, 4, 6, 1, 5, 3]
    }
)

print("入力DataFrame:\n", df)
count = df.groupby("rank")["id"].count()
print("rankごとの出現回数:\n", count)

出力結果

入力DataFrame:

    id  rank
0   1     1
1   2     4
2   1     1
3   3     2
4   5     1
5   1     4
6   4     6
7   3     1
8   6     5
9   7     3
rankごとの出現回数:
rank
1    4
2    1
3    1
4    2
5    1
6    1
Name: id, dtype: int64

この実行例では、rank列の値を基準にグループ化し、それぞれのグループに含まれるidの件数を集計しています。たとえばrank=1のグループには4件のデータが含まれていることがわかります。

補足:重複を除いた一意な値の種類数を数える場合

count()は欠損値以外のすべての行数を数えるメソッドです。「重複を除いた一意な値が何種類あるか」を知りたい場合は、代わりにnunique()を使用します。

# グループごとに一意なidの種類数を数える
unique_count = df.groupby("rank")["id"].nunique()
print(unique_count)

用途に応じてcount()とnunique()を使い分けることで、より柔軟な集計処理が可能になります。

  1. Python Pandasでnull以外の値を前方へ転送する方法(ffillの使い方)

    Pandasのfillna()で欠損値(NaN)を前方向きに埋める Pandasでは、fillna()メソッドのmethodパラメータを使うことで、null以外の値を前方(上の行から下の行へ)に転送できます。前方補完(forward fill)を行うには、値としてffillを指定します。 fillna(method=ffill) なお、Pandas 2.1以降ではmethod引数は非推奨となっているため、専用メソッドのffill()を使うことが推奨されています。どちらも同じ結果が得られます。 サンプルデータの準備 ここでは、一部のセルにNaN(欠損値)を含むCSVファイル「SalesData.

  2. 【Python Pandas】fillnaで欠損値(NaN)を後方の値で埋める方法(bfill)

    はじめに PandasのDataFrameには、データの読み込みミスや入力漏れなどによって欠損値(NaN)が含まれることがあります。このような欠損値を処理する方法のひとつが、「後ろにある有効な値を前方向きに引き継いで埋める」という後方補完(Backward Fill)です。 本記事では、fillna()メソッドのmethodパラメータにbfillを指定して、null以外の値を後方から伝播させる方法を解説します。 bfillの基本的な使い方 後方補完を行うには、fillna()メソッドの引数に以下のように指定します。 fillna(method=bfill) bfillは「backward f