【Python】リスト内の要素の出現頻度を分数形式で求める方法
リスト内の各要素について「何番目の出現か / 全体で何回出現したか」という分数形式の頻度(分数頻度)を求めたい場合があります。このような処理は、辞書内包表記、単純な反復処理、そしてcollectionsモジュールのCounterクラスを組み合わせることで簡単に実現できます。
サンプルコード
以下に具体的な実装例を示します。
from collections import Counter
my_list = [14, 15, 42, 60, 75, 50, 45, 55, 14, 60, 48, 65]
print("The list is :")
print(my_list)
# 一意な要素をキーとして、出現順序を記録するための辞書を作成
my_num = {index : 0 for index in set(my_list)}
# 各要素の総出現回数(分母)をカウント
my_denominator = Counter(my_list)
my_result = []
for element in my_list:
my_num[element] += 1
my_result.append(str(my_num[element]) + '/' + str(my_denominator[element]))
print("The result is :")
print(my_result)
実行結果
The list is : [14, 15, 42, 60, 75, 50, 45, 55, 14, 60, 48, 65] The result is : ['1/2', '1/1', '1/1', '1/2', '1/1', '1/1', '1/1', '1/1', '2/2', '2/2', '1/1', '1/1']
コードの解説
パッケージのインポート: collectionsモジュールからCounterクラスを環境にインポートします。
リストの定義と表示: 整数のリストを定義し、コンソールに出力します。
辞書内包表記による初期化: set()で重複を除去した一意の要素をキーとし、値を0で初期化した辞書を作成して変数に代入します。この辞書は、各要素が「何番目の出現か」を追跡するために使われます。
Counterによる分母の算出: リストをCounterに渡すことで、各要素の総出現回数(分数の分母)を一度に取得できます。
結果格納用リストの準備: 結果を保存するための空のリストを定義します。
反復処理と分数文字列の生成: 元のリストを先頭から順に走査し、各要素が出現するたびに対応するカウントを1増やします。そのうえで「現在の出現順序/総出現回数」の形式の文字列を生成し、appendメソッドを使って結果リストに追加していきます。
結果の出力: 最終的な分数頻度のリストがコンソールに表示されます。
たとえば最初の要素「14」は全体で2回出現しており、今回が1回目の出現なので「1/2」、9番目の「14」は2回目の出現なので「2/2」となります。一方、1回しか出現しない要素はすべて「1/1」になります。この手法を使えば、各要素の出現順位と総出現数をひと目で把握でき、データの重複状況を分析する際に非常に便利です。
-
Pythonでリストから指定したインデックスの複数要素を削除する方法
Pythonのリストから単一の要素を削除するのは、del文とインデックスを組み合わせれば簡単に行えます。しかし、複数のインデックスに該当する要素をまとめて削除したいケースでは、少し工夫が必要です。本記事では、削除対象となるインデックスのリストを指定して、元のリストから該当する要素だけを取り除く方法を2つ紹介します。方法1:sorted()とdelを組み合わせるこのアプローチでは、まず削除したい位置(インデックス)を格納したリストを作成します。その後、降順にソートしてから後ろの要素から順に削除することで、削除処理中にインデックスがずれる問題を回避し、元のリストの構造を保ったまま安全に要素を削除で
-
【初心者向け】Pythonでリストのサイズ(要素数)を取得する方法
リスト(list)は、Pythonにおける代表的なコレクション型のデータ構造の一つです。リストの要素は後から変更でき、重複した値を持つこともできます。本記事では、Pythonでリストのサイズ(長さ)を取得する方法を解説します。具体的には、重複の有無にかかわらず、リストに含まれる全要素の数をカウントする方法を紹介します。リストの長さを取得する基本:len()関数Pythonでリストの要素数を取得するには、組み込み関数の len() を使用します。len() はリストだけでなく、タプル・文字列・辞書などさまざまなコレクションに対しても利用できる汎用的な関数です。サンプルコード以下の例では、「day