カテゴリ: Python 更新日: 2025/12/15

Pythonの辞書の値を集計する方法!Counter・groupbyの基本を解説

Pythonの辞書の値を集計する方法!Counter・groupbyの基本を解説
Pythonの辞書の値を集計する方法!Counter・groupbyの基本を解説

先生と生徒の会話形式で理解しよう

生徒

「Pythonの辞書って、いろんな値が入っているけど、その値の数を数えることってできますか?」

先生

「はい、辞書の値を集計するには便利な方法があります。たとえば、Counterというものや、groupbyというテクニックです。これらを使うと簡単に数えられますよ。」

生徒

「それぞれどうやって使うんですか?できれば簡単に教えてください!」

先生

「では、ひとつずつ基本からわかりやすく説明しますね。」

1. Pythonの辞書とは?

1. Pythonの辞書とは?
1. Pythonの辞書とは?

まず、辞書とは「キー」と「値」のペアでデータを管理するものです。例えば、果物の名前をキーにして、その数を値にしたりできます。


fruits = {"りんご": 3, "バナナ": 5, "みかん": 2}
print(fruits["りんご"])  # 3が表示される

このように、辞書は特定のキーに対応する値を簡単に取り出せる便利なデータ構造です。

2. 辞書の値を集計したい理由

2. 辞書の値を集計したい理由
2. 辞書の値を集計したい理由

例えば、あるアンケート結果が辞書に入っていて、値が「好きな色」だったとします。これらの値がどれだけあるか数えたいことがありますよね。

辞書の値を数える作業は「集計」と言います。Pythonには集計を簡単にするためのツールが用意されています。

3. Counter(カウンター)で値を数える

3. Counter(カウンター)で値を数える
3. Counter(カウンター)で値を数える

CounterはPythonの標準ライブラリcollectionsにある便利なクラスです。リストや辞書の値を数えてくれます。

使い方はとても簡単で、値だけを取り出してCounterに渡すだけです。


from collections import Counter

data = {"Aさん": "赤", "Bさん": "青", "Cさん": "赤", "Dさん": "緑", "Eさん": "青"}

# 辞書の値だけ取り出す
values = data.values()

# Counterで値を数える
counted = Counter(values)
print(counted)

このコードを実行すると、結果は以下のようになります。


Counter({'赤': 2, '青': 2, '緑': 1})

つまり、「赤」が2回、「青」が2回、「緑」が1回あることがわかります。

4. groupby(グループバイ)で値を集計する方法

4. groupby(グループバイ)で値を集計する方法
4. groupby(グループバイ)で値を集計する方法

groupbyはPythonの標準ライブラリitertoolsにある関数で、データをグループに分けて処理するときに使います。

辞書の値をまとめたいときにも使えますが、ポイントは「データがソートされていること」です。

以下はgroupbyを使った例です。


from itertools import groupby

data = {"Aさん": "赤", "Bさん": "青", "Cさん": "赤", "Dさん": "緑", "Eさん": "青"}

# 値だけ取り出してリストにする
values = list(data.values())

# 値をアルファベット順にソート(groupbyはソート済みが必要)
values.sort()

# groupbyでグループごとに集計
for key, group in groupby(values):
    count = len(list(group))
    print(f"{key} の数は {count} です。")

実行結果は以下の通りです。


青 の数は 2 です。
赤 の数は 2 です。
緑 の数は 1 です。

このように、同じ値をまとめて数えることができます。

5. Counterとgroupbyの違いと使い分け

5. Counterとgroupbyの違いと使い分け
5. Counterとgroupbyの違いと使い分け

Counterは値を数えるだけなら非常に簡単で使いやすいです。コードも短くて済みます。

groupbyは値ごとに何か特別な処理をしたいときに向いていますが、データを事前に並べ替える必要があります。

なので、単純に値の数を知りたいだけならCounterを使うのがおすすめです。

6. 最後に重要なポイント

6. 最後に重要なポイント
6. 最後に重要なポイント

・Pythonの辞書は「キー」と「値」のペアでデータを管理します。
・辞書の値を集計するときは、値だけを取り出すことが基本です。
・集計に便利なのがcollections.Counteritertools.groupbyです。
Counterは簡単に値の出現回数を数えるのに適しています。
groupbyは同じ値をまとめて何かしたいときに使いますが、データをソートする必要があります。
・まずはCounterを使いこなせるようになると、辞書の値の集計がスムーズになります。

まとめ

まとめ
まとめ

この記事では、Pythonの辞書に含まれる値を集計する方法について、初心者でも理解しやすいように段階的に解説してきました。 辞書は「キー」と「値」をペアで管理できる便利なデータ構造ですが、実際のプログラムでは「どの値が何回使われているか」「同じ値がどれくらいあるか」を知りたい場面が多くあります。 そのようなときに役立つのが、Countergroupbyといった集計テクニックです。

まず押さえておきたいのは、辞書の集計ではキーではなく値に注目するという点です。 辞書そのものをそのまま数えるのではなく、values()を使って値だけを取り出し、その値の出現回数を調べることが基本になります。 この考え方を理解しておくと、Pythonの辞書を使ったデータ処理やデータ分析の幅が一気に広がります。

Counterを使った値の集計の振り返り

collections.Counterは、Python標準ライブラリに含まれている非常に便利なクラスです。 辞書の値をそのまま渡すだけで、それぞれの値が何回出現したかを自動でカウントしてくれます。 コードが短く、直感的に書けるため、辞書の値を集計する最初の一歩として最適です。


from collections import Counter

data = {
    "Aさん": "赤",
    "Bさん": "青",
    "Cさん": "赤",
    "Dさん": "緑",
    "Eさん": "青"
}

result = Counter(data.values())
print(result)

このように、Counterを使えば「赤が何回」「青が何回」といった集計結果をすぐに確認できます。 アンケート結果の集計、ログデータの分類、カテゴリ別の件数カウントなど、さまざまな場面で活用できます。

groupbyを使った集計の考え方

itertools.groupbyは、値をグループごとにまとめて処理したいときに使う方法です。 Counterと違い、事前にデータをソートする必要があるという特徴がありますが、 グループごとに複雑な処理をしたい場合には非常に強力です。


from itertools import groupby

values = list(data.values())
values.sort()

for key, group in groupby(values):
    print(key, len(list(group)))

この方法では、「数える」だけでなく、「同じ値ごとに処理を分ける」といった柔軟な使い方ができます。 ただし、初心者のうちはCounterを中心に使い、必要になったらgroupbyを学ぶ流れがおすすめです。

辞書の値を集計するメリット

辞書の値を集計できるようになると、Pythonでのデータ処理が一段階レベルアップします。 例えば、ユーザーの回答傾向を分析したり、エラーの種類ごとの発生回数を調べたり、売上データを分類したりと、 実務や学習のさまざまな場面で役立つスキルになります。

また、辞書・Counter・groupbyといった考え方は、Pythonだけでなくデータ分析全般に共通する考え方でもあります。 「集計する」「分類する」「数を把握する」という視点を持つことが、プログラミング上達への近道です。

先生と生徒の振り返り会話

生徒:「辞書の値って、そのままじゃ数えにくいと思っていたんですが、values()を使えばいいんですね。」

先生:「その通りです。まずは値だけを取り出す、という発想がとても大切ですよ。」

生徒:「Counterを使うと、一行で集計できるのが便利でした。アンケート結果にも使えそうです。」

先生:「いいところに気づきましたね。Counterは実務でもよく使われるので、覚えておくと役立ちます。」

生徒:「groupbyは少し難しそうですが、同じ値ごとに処理を分けたいときに使えるんですね。」

先生:「そうです。最初はCounter、慣れてきたらgroupby、という順番で覚えると無理がありません。」

生徒:「辞書の集計ができるようになると、Pythonでできることが一気に増えた気がします!」

先生:「その感覚はとても大事です。ぜひ実際のデータで何度も試して、使いこなせるようになってくださいね。」

カテゴリの一覧へ
新着記事
New1
Flask
Flaskのログレベル(DEBUG/INFO/WARNING/ERROR)を使い分ける方法を完全ガイド!
New2
Python
Pythonのfrozensetとは?ミュータブルなsetとの違いをわかりやすく解説
New3
Python
Pythonでセットを活用してデータをフィルタリングする方法!初心者でもわかるセットの基本と使い方
New4
Python
Pythonの辞書操作まとめ!初心者が知っておくべき便利ワザ集
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
No.2
Java&Spring記事人気No2
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.3
Java&Spring記事人気No3
Flask
FlaskアプリのSECRET_KEYの設定方法を完全ガイド!初心者でもわかるセキュリティ対策
No.4
Java&Spring記事人気No4
Django
Djangoモデル入門|初心者が最初に知るべきORMの基本操作
No.5
Java&Spring記事人気No5
Flask
Flaskで非同期処理を成功させるベストプラクティス集|初心者でも失敗しない考え方
No.6
Java&Spring記事人気No6
Python
Pythonのリストを分割する方法を完全ガイド!初心者でもわかるスライス・split・itertoolsの使い方
No.7
Java&Spring記事人気No7
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.8
Java&Spring記事人気No8
Flask
Flaskのログをファイルに保存する方法!初心者でもわかる設定手順を徹底解説