リスト内の各要素の数
前回、リスト内包表記を二重にして二次元リスト(ネストされたリスト)を作成する方法を解説しました。
今回はリスト内の各要素の個数を数える方法に関して解説をしていきます。
まず今回使うリストですが、こんな感じで用意してみました。
val_list = ['A', 'A', 'A', 'B', 'B', 'C']
このリストを使って、A、B、Cそれぞれの数を数えてみましょう。
それでは始めていきましょう。
リスト内の要素の数:len
まずは超基本の基本をおさらい。
リスト内の要素数を数える方法です。
リスト内の要素数を数えるには「len(リスト)」を用います。
val_list = ['A', 'A', 'A', 'B', 'B', 'C']
print(len(val_list))
実行結果
6
特定の要素の数:count
次にリスト内の特定の要素の数の数え方です。
特定の要素の数を数えたい場合は「リスト名.count(数えたい要素)」を用います。
val_list = ['A', 'A', 'A', 'B', 'B', 'C']
print(val_list.count('A'))
print(val_list.count('B'))
print(val_list.count('C'))
実行結果
3
2
1
上記の例では文字列を使っていますが、int型の要素でも数えることができます。
int_list = [0, 0, 0, 1, 1, 2]
print(int_list.count(0))
print(int_list.count(1))
print(int_list.count(2))
実行結果
3
2
1
各要素の数を一括で数える:collections.Counter
countを使うと特定の要素の個数を数えることはできますが、各要素の個数を一括で取得したいということもあるでしょう。
その場合はPython標準ライブラリの「collections」を使います。
そして「collections.Counter(リスト)」とするとリスト内の各要素の数を一括で数えてくれます。
import collections
val_list = ['A', 'A', 'A', 'B', 'B', 'C']
collection = collections.Counter(val_list)
print(collection)
実行結果
Counter({'A': 3, 'B': 2, 'C': 1})
辞書形式となっているので、各要素をキーとして、それぞれの個数を取得することができます。
import collections
val_list = ['A', 'A', 'A', 'B', 'B', 'C']
collection = collections.Counter(val_list)
print(collection['A'])
print(collection['B'])
print(collection['C'])
実行結果
3
2
1
また辞書形式なので、「.keys()」や「.values()」も使うことができます。
import collections
val_list = ['A', 'A', 'A', 'B', 'B', 'C']
collection = collections.Counter(val_list)
print(collection.keys())
print(collection.values())
実行結果
dict_keys(['A', 'B', 'C'])
dict_values([3, 2, 1])
「collection.most_common(数値)」を使うと、頻度の高い要素から指定した数だけ要素を並べてくれます。
import collections
val_list = ['A', 'A', 'A', 'B', 'B', 'C']
collection = collections.Counter(val_list)
most_common = collection.most_common(2)
print(most_common)
実行結果
[('A', 3), ('B', 2)]
「collection.update(リスト)」をすると最初のリストに指定したリストの要素を加え、各要素の個数をカウントしてくれます。
import collections
val_list = ['A', 'A', 'A', 'B', 'B', 'C']
collection = collections.Counter(val_list)
collection.update(["B", "B", "C", "C", "C", "C", "C"])
print(collection)
実行結果
Counter({'C': 6, 'B': 4, 'A': 3})
collectionsで各要素の個数を一括で取得するのは本当に便利なので、覚えておいて損はないでしょう。
次回はPandasでデータフレーム中の特定の行を別のデータフレームに高速に移す方法を紹介します。
ではでは今回はこんな感じで。
コメント