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