忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【Python】Counterでリスト要素の出現回数をサクッと集計する

リストの中に「どの値が何個あるか」を数えたい場面は多いですよね。Pythonでは、標準ライブラリの collections.Counter を使うと、ループを回す手間なく一瞬で集計が可能です。

1. 考え方:Counter(カウンター)の仕組み

Counterは辞書(dict)のサブクラスで、要素をキーに、その出現回数を値として保持する特別なデータ構造です。面倒なカウント処理をすべて自動で行ってくれます。

my_list = [1, 2, 3, 1, 3, 3]

[ 集計ルール ]
・1 が現れた回数 → 2回
・2 が現れた回数 → 1回
・3 が現れた回数 → 3回
これらを {要素: 個数} の形式でまとめてくれます。

2. Pythonサンプルプログラム

collections モジュールから Counter をインポートして使用します。変数名に list などの予約語を使わないように注意して記述しましょう。

# -*- coding: utf-8 -*-
from collections import Counter

def main():
    # 集計対象のリスト
    data_list = [1, 2, 3, 1, 3, 3]

    # Counterオブジェクトを作成(ここで自動集計される)
    c = Counter(data_list)

    print("集計結果を表示します。")
    print(c)

    # 特定の要素の回数だけ知りたい場合
    print(f"「3」が出現した回数: {c[3]}")

if __name__ == "__main__":
    main()

3. 実行結果

集計結果を表示します。
Counter({3: 3, 1: 2, 2: 1})
「3」が出現した回数: 3

4. ステップアップ:便利な応用機能

Counterには、単に数えるだけでなく、実務で役立つ便利なメソッドが備わっています。

  • most_common():出現回数の多い順に並べ替えます。 c.most_common(2) とすれば、上位2件だけを取得できます。
  • 演算ができる:Counter同士を足したり引いたりして、集計結果を合算・差分比較することが可能です。

5. 他の手法との違い

要素を数える方法はいくつかありますが、効率面で大きな違いがあります。

手法特徴使い分け
Counter (今回) 一括で全要素を数える リスト全体の分布を知りたいとき。最も高速。
list.count(x) 特定の1種類だけ数える 「特定の要素が何個あるか」だけ知れば良いとき。
for文 + 辞書 手動で加算していく 集計の途中で特殊な条件判定を入れたいとき。

6. まとめ

データの頻度分析は、プログラミングの基本中の基本です。Pythonなら Counter をインポートするだけで、自作すると数行かかるループ処理をたった1行で済ませることができます。読みやすく効率的なコードを目指すなら、ぜひマスターしておきたい道具の一つですね!

PR