【Python】リストの集計

【Python】リストの集計

このページでは、Pythonを用いたリストの集計方法について詳しく解説します。以下の目次から各セクションにジャンプできます。

リストとは

リストはPythonにおけるデータ構造の1つで、複数の要素を格納するためのデータ型です。リストはミュータブル(変更可能)で、さまざまなデータ型を含むことができます。

例:

my_list = [1, 2, 3, 4, 5]
mixed_list = [1, "apple", 3.14, True]

基本的な集計方法

リストの集計では、合計、平均、最大値、最小値などの統計的な処理を行うことがよくあります。

1. 合計を計算する

Pythonには組み込み関数 sum() が用意されています。

numbers = [1, 2, 3, 4, 5]
total = sum(numbers)
print(total)  # 出力: 15

2. 平均値を計算する

リストの平均値は、合計を要素数で割ることで計算できます。

numbers = [1, 2, 3, 4, 5]
average = sum(numbers) / len(numbers)
print(average)  # 出力: 3.0

3. 最大値と最小値を取得する

組み込み関数 max()min() を使うことで、リストの最大値と最小値を簡単に取得できます。

numbers = [1, 2, 3, 4, 5]
maximum = max(numbers)
minimum = min(numbers)
print(maximum)  # 出力: 5
print(minimum)  # 出力: 1

グループ化と集計

リスト内の要素をカテゴリごとにグループ化して集計する方法について解説します。

1. カウンターを使った集計

collections.Counter を使うと、リスト内の要素の出現回数を簡単に集計できます。

from collections import Counter

fruits = ["apple", "banana", "apple", "orange", "banana", "apple"]
fruit_counts = Counter(fruits)
print(fruit_counts)  # 出力: Counter({'apple': 3, 'banana': 2, 'orange': 1})

2. 辞書を使ったカスタム集計

辞書を用いて手動で要素をカウントすることも可能です。

fruits = ["apple", "banana", "apple", "orange", "banana", "apple"]
fruit_counts = {}

for fruit in fruits:
    if fruit in fruit_counts:
        fruit_counts[fruit] += 1
    else:
        fruit_counts[fruit] = 1

print(fruit_counts)  # 出力: {'apple': 3, 'banana': 2, 'orange': 1}

ネストされたリストの集計

リストがネストされている場合、特定の条件で集計を行う方法を紹介します。

1. ネストされたリストの合計

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
total = sum(sum(inner_list) for inner_list in nested_list)
print(total)  # 出力: 45

2. フラット化してから集計

ネストされたリストを1次元のリストに変換してから集計する方法です。

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened_list = [item for sublist in nested_list for item in sublist]
total = sum(flattened_list)
print(total)  # 出力: 45

カスタム関数を用いた集計

独自のロジックを用いてリストを集計する場合、関数を定義して再利用性を高めることができます。

1. 偶数のみを合計する

def sum_even_numbers(numbers):
    return sum(num for num in numbers if num % 2 == 0)

numbers = [1, 2, 3, 4, 5, 6]
total = sum_even_numbers(numbers)
print(total)  # 出力: 12

2. 条件付きの最大値を取得する

def max_below_threshold(numbers, threshold):
    return max(num for num in numbers if num < threshold)

numbers = [1, 2, 3, 4, 5, 6]
result = max_below_threshold(numbers, 5)
print(result)  # 出力: 4

まとめ

このページでは、Pythonでのリストの基本的な集計方法から、グループ化やカスタム関数を用いた高度な集計方法までを詳しく解説しました。リスト操作はデータ分析やプログラミングで非常に頻繁に使用されるため、これらのテクニックを習得しておくと役立ちます。

さらに学習を深めたい場合は、pandasnumpy のようなライブラリも活用してみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です