はじめに
前回は大量のデータの中から、使われている文字や数値(重複を数えない)方法を調べました。
同じ様にあるデータが何回出現しているのかを数える(重複を数える)事もよくあります。
データの頻度を調べることで何かしらの傾向や法則があるかなどが分かり用途は広いです。
とうことで今回は重複データの数え方(何回出現するのか)についての方法についてのメモです。
サンプルソースコード
100個の0~100のランダムな数値が格納されたリストの数値の出現回数を数える簡単なサンプルソースコードです。
回数を数える簡単な方法としてcollectionsのCounterを使います。
# count_test.py
from collections import Counter
tmp = [68, 48, 71, 30, 93, 89, 58, 58, 82, 12, 26, 75, 72, 32, 63, 53, 35, 25, 10, 86, 67, 31, 83, 96, 25, 51, 82, 66, 92, 65, 67, 83, 85, 75, 51, 53, 33, 33, 66, 99, 93, 70, 41, 76, 38, 23, 57, 13, 92, 19, 25, 60, 33, 48, 10, 40, 87, 70, 3, 42, 72, 79, 88, 31, 98, 80, 75, 18, 55, 18, 32, 25, 57, 51, 53, 6, 84, 96, 38, 68, 100, 0, 69, 49, 10, 35, 53, 39, 50, 85, 85, 93, 41, 98, 9, 50, 72, 87, 42, 47]
counter = Counter(tmp)
print(type(counter))
print(counter)
print("25の出現頻度:"+str(counter[25])+"回")
print("101の出現頻度:"+str(counter[101])+"回")
counterの各要素を知りたい場合は辞書の様に要素を指定するとその出現回数が表示されます。
(例では25と101)
実行結果
プログラムを下のコマンドで実行すると
python count_test.py
以下の様に結果が表示されます。
<class 'collections.Counter'>
Counter({53: 4, 25: 4, 93: 3, 75: 3, 72: 3, 10: 3, 51: 3, 85: 3, 33: 3, 68: 2, 48: 2, 58: 2, 82: 2, 32: 2, 35: 2, 67: 2, 31: 2, 83: 2, 96: 2, 66: 2, 92: 2, 70: 2, 41: 2, 38: 2, 57: 2, 87: 2, 42: 2, 98: 2, 18: 2, 50: 2, 71: 1, 30: 1, 89: 1, 12: 1, 26: 1, 63: 1, 86: 1, 65: 1, 99: 1, 76: 1, 23: 1, 13: 1, 19: 1, 60: 1, 40: 1, 3: 1, 79: 1, 88: 1, 80: 1, 55: 1, 6: 1, 84: 1, 100: 1, 0: 1, 69: 1, 49: 1, 39: 1, 9: 1, 47: 1})
25の出現頻度:4回
101の出現頻度:0回
Type()表示させるとわかりますが、リストからcollections.Counterにクラスが変わっています。
また、出現頻度の多い順に表示される様になります。
ただ、頻度が多い数同士はソートはされません。(53と25など)
もし並び替えしたいなら、リストの時点で並び替えするのがいいと思います(5行目にtmp.sort()を入れる)
数値が存在しない101は結果に0が返されます。
最後に
ということで今回は重複の回数を数える方法についてでした。
前回同様、出現回数を数えるというのはプログラムを書いているとよく出てくると思います。
Counterを使えば簡単に出来るのでわざわざ自作する必要もありませんね。
この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございました。