PythonのPandasで要素数をカウントする方法について

Python,イメージ

AI実装検定のご案内

Pandasで「要素数をカウントする」方法はいくつかあり、データの構造や目的に応じて適切な関数を選ぶことが重要です。

ここでは代表的な手法を、サンプルコードとともに詳しく解説します。

目次

Series.value_counts()

最もよく使われる方法です。

カテゴリデータや文字列データの出現頻度を数えるのに適しています。

import pandas as pd

data = pd.Series(["apple", "banana", "apple", "orange", "banana", "apple"])
print(data.value_counts())

特徴

  • デフォルトで降順に並ぶ
  • normalize=True を指定すると割合に変換できる
  • sort=False にすると元の順序を保つ
print(data.value_counts(normalize=True))
apple     0.5
banana    0.333333
orange    0.166667

ataFrame.value_counts()

DataFrame 全体や複数列をまとめてカウントする場合に有効です。

df = pd.DataFrame({
    "fruit": ["apple", "banana", "apple", "orange", "banana", "apple"],
    "color": ["red", "yellow", "red", "orange", "yellow", "green"]
})

print(df.value_counts())

応用

  • 特定の列だけ指定してカウントする場合は df["列名"].value_counts() を使う
  • 複数列を指定する場合は df[["col1","col2"]].value_counts()

groupby().size()

カテゴリごとに集計したい場合に便利。groupbyと組み合わせると柔軟にカウントできます。

print(df.groupby("fruit").size())

複数列でグループ化も可能です。

print(df.groupby(["fruit", "color"]).size())

count()len() の違い

要素数を求めるときに混同しやすいので整理しておきます。

  • len(df) : DataFrameの行数を返す
  • df.count() : 列ごとに欠損値(NaN)を除いた要素数を返す
print(len(df))       # 6 (行数)
print(df.count())    # fruit=6, color=6 (NaNがあれば除外)

collections.Counter を活用

Python標準ライブラリの Counter を使えば、Series を直接処理できます。

from collections import Counter
counts = Counter(df["fruit"])
print(counts)

Pandasのメソッドより柔軟に辞書形式で扱えるため、カスタム処理に便利です。

まとめ

  • シンプルに頻度を知りたい → value_counts()
  • 複数列を組み合わせてカウントしたい → DataFrame.value_counts() or groupby().size()
  • 欠損を考慮した列ごとの要素数 → count()
  • 全行数 → len(df)
  • 辞書的に扱いたい → collections.Counter

以上、PythonのPandasで要素数をカウントする方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次