カテゴリ: Python 更新日: 2025/08/22

Pythonで辞書の値を集計する方法(Counter / groupbyの活用)初心者向け完全ガイド

Pythonで辞書の値を集計する方法(Counter / groupbyの活用)
Pythonで辞書の値を集計する方法(Counter / groupbyの活用)

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

生徒

「Pythonで辞書の値を集計する方法ってありますか?例えば、同じ値が何回出てくるか数えたいです。」

先生

「はい、そんなときはcollections.Counteritertools.groupbyを使うと便利ですよ。」

生徒

「その2つはどう違うんですか?」

先生

Counterは出現回数を簡単に数えるときに、groupbyはデータをグループ分けして集計するときに使います。それぞれの使い方を見ていきましょう!」

-

1. collections.Counterで値の出現回数を集計する

1. collections.Counterで値の出現回数を集計する
1. collections.Counterで値の出現回数を集計する

collections.Counterは、リストや辞書の値が何回出てくるかを簡単に数えるクラスです。


from collections import Counter

data = {"A": "赤", "B": "青", "C": "赤", "D": "緑", "E": "青"}
counter = Counter(data.values())
print(counter)

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

data.values()で辞書の値だけを取り出し、Counterに渡すと自動的に集計してくれます。

2. Counterの便利なメソッド

2. Counterの便利なメソッド
2. Counterの便利なメソッド

most_common()を使うと、出現回数の多い順に結果を取得できます。


print(counter.most_common())
print(counter.most_common(1))

[('赤', 2), ('青', 2), ('緑', 1)]
[('赤', 2)]

この方法なら、ランキング形式で集計結果を表示することも可能です。

3. itertools.groupbyでグループごとに集計する

3. itertools.groupbyでグループごとに集計する
3. itertools.groupbyでグループごとに集計する

groupbyは、指定したキーでデータをまとめる機能があります。使う前にデータをソートする必要があります。


from itertools import groupby

data_items = [
    {"色": "赤", "数量": 5},
    {"色": "青", "数量": 3},
    {"色": "赤", "数量": 2},
    {"色": "青", "数量": 4},
    {"色": "緑", "数量": 1},
]

data_items.sort(key=lambda x: x["色"])

grouped = groupby(data_items, key=lambda x: x["色"])
for color, items in grouped:
    total = sum(item["数量"] for item in items)
    print(color, total)

赤 7
青 7
緑 1

このように、groupbyでは「色」ごとの数量合計を計算できます。

4. Counterとgroupbyの使い分け

4. Counterとgroupbyの使い分け
4. Counterとgroupbyの使い分け
  • Counter:単純に値の出現回数を数えたいとき
  • groupby:特定のキーでまとめて合計や平均などを出したいとき

例えば「どの色が何回出たか」ならCounter、「どの色の数量合計がいくつか」ならgroupbyが適しています。

-

5. 実用例:アンケート結果の集計

5. 実用例:アンケート結果の集計
5. 実用例:アンケート結果の集計

例えば、アンケートで好きな色を答えてもらい、その結果を集計する場合、Counterを使うと簡単です。


votes = ["赤", "青", "赤", "緑", "青", "青"]
result = Counter(votes)
print(result)

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

この結果を棒グラフにして可視化すれば、データ分析にも応用できます。

6. 実用例:売上データのグループ集計

6. 実用例:売上データのグループ集計
6. 実用例:売上データのグループ集計

商品ごとの売上合計を出す場合はgroupbyが便利です。


sales = [
    {"商品": "りんご", "売上": 100},
    {"商品": "バナナ", "売上": 80},
    {"商品": "りんご", "売上": 120},
    {"商品": "バナナ", "売上": 90},
]

sales.sort(key=lambda x: x["商品"])
for product, items in groupby(sales, key=lambda x: x["商品"]):
    total_sales = sum(item["売上"] for item in items)
    print(product, total_sales)

りんご 220
バナナ 170

このように、groupbyを使うと複数の条件で柔軟に集計できます。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
New1
PHP
PHPのマルチバイト文字列を正しく扱う方法!初心者向けにmb_strlenとmb_substrをやさしく解説
New2
PHP
PHP の break, continue の使い方を完全解説!初心者でもわかるループ制御
New3
Python
Pythonで日本の元号を扱う方法を徹底解説!令和・平成の変換もバッチリ対応
New4
Python
Pythonの三項演算子とは?一行で条件分岐を記述する方法
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで辞書のキー・値・アイテムを取得する方法(keys(), values())
No.2
Java&Spring記事人気No2
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
No.3
Java&Spring記事人気No3
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.4
Java&Spring記事人気No4
Python
Pythonのライブラリとは?標準ライブラリとサードパーティライブラリの違いを初心者向けに解説!
No.5
Java&Spring記事人気No5
Python
PythonでMySQLに接続する方法を完全解説!初心者でもわかるpymysqlの基本
No.6
Java&Spring記事人気No6
PHP
PHPで画像ファイルをアップロードする方法を初心者向けに徹底解説!わかりやすい画像処理入門
No.7
Java&Spring記事人気No7
PHP
PHP の基本構文(開始タグ・コメント・インデント)を完全ガイド!初心者向け解説
No.8
Java&Spring記事人気No8
PHP
PHP の日付と時間の取得(date, time, strtotime)を完全解説!初心者でもわかる使い方
-
-