Pythonでリストをカウントする方法(collections.Counterの活用)
生徒
「Pythonでリストの中に同じものが何回あるか数える方法ってありますか?」
先生
「あるよ。Pythonにはcollectionsという標準ライブラリの中に、Counterという便利な機能があるんだ。」
生徒
「それを使えば、数を自動で数えてくれるんですか?」
先生
「そのとおり!難しく見えるけど、とても簡単に使えるから一緒にやってみよう!」
1. Counterとは何か?
Pythonのcollections.Counterは、リストや文字列などのデータに含まれる要素の出現回数を自動で数えてくれる「カウント専用の道具」です。
例えば、「りんご」「みかん」「りんご」といったリストがあったときに、「りんごが2回」「みかんが1回」などを簡単に数えてくれます。
2. Counterを使うには?
まずはcollectionsモジュールからCounterをインポートして使います。
from collections import Counter
fruits = ["りんご", "みかん", "りんご", "バナナ", "みかん", "りんご"]
count = Counter(fruits)
print(count)
Counter({'りんご': 3, 'みかん': 2, 'バナナ': 1})
このように、リストに含まれる要素とその数が、辞書のような形式で表示されます。
3. Counterの結果を使いやすくする
Counterの結果は、辞書と似た形をしているので、通常の辞書と同じように使えます。
print(count["りんご"])
print(count["みかん"])
3
2
このようにして、特定の要素の数だけを取り出すこともできます。
4. 要素がない場合はどうなる?
Counterは、カウントされていない要素を取り出すと、自動で「0」を返します。エラーにはなりません。
print(count["ぶどう"])
0
これは通常の辞書と違う大きな特徴です。安全に使えるので便利です。
5. 最も多い要素を取り出す
most_common()というメソッドを使えば、出現回数の多い順に並べることができます。
print(count.most_common(2))
[('りんご', 3), ('みかん', 2)]
このように、上位2つの要素とその回数が表示されます。データの傾向をつかむときに便利です。
6. ループで表示する
Counterの中身はfor文で取り出して表示することもできます。
for fruit, cnt in count.items():
print(fruit, "は", cnt, "回")
りんご は 3 回
みかん は 2 回
バナナ は 1 回
辞書と同じように.items()でキーと値を取り出すことができます。
7. Counterの便利な使い道
collections.Counterは以下のような場面で活躍します:
- アンケート結果の集計
- ゲームのスコア記録
- データの出現頻度分析
- 文字列の文字数カウント
初心者でも簡単に使えるので、ぜひPythonでのデータ処理の基本スキルとして覚えておきましょう。
8. 文字列にもCounterは使える
リストだけでなく、文字列にもCounterはそのまま使えます。
text = "banana"
count = Counter(text)
print(count)
Counter({'a': 3, 'n': 2, 'b': 1})
このように、1文字ずつを数えてくれます。文字解析にも使えます。