Pythonでsumメソッドやreduceメソッド等を使ってリストの平均を求める方法5つ

スポンサーリンク

Pythonでリストの平均を求める方法は、すべて同じ型であれば、たくさんあります。

この記事では、Pythonのリストの平均要素を求める方法のいくつかを見ていきます。

さっそく始めてみましょう


スポンサーリンク

方法1: reduce() を使って Python でリストの平均を求める

reduce()メソッドとラムダ関数(このように)を使用します。

平均 = (全要素の合計) / (要素数) なので、ラムダ関数を使って要素を合計し、その結果をリストの長さで割ることになります。

ということで、対応する式は

average = (reduce(lambda x, y: x + y, input_list)) / len(input_list)

では、実際に例を挙げて説明しよう。

from functools import reduce
 
input_list = [3, 2, 1, 5, 7, 8]
 
average = (reduce(lambda x, y: x + y, input_list)) / len(input_list)
 
print("Average of List:", average)

結果は以下の通りです。

Average of List: 4.333333333333333

平均は (3 + 2 + 1 + 5 + 7 + 8) / 6 = 26 / 6 = 4.333 であるから、これは確かに正しい出力です。

異なる型の要素を渡すことはできません。

なぜなら、+ オペランドが機能しない可能性があるからです。

ですから、これが動作するためには、リストのすべての要素が + オペランドと型互換でなければなりません。

これはPythonでリストの平均を求める方法の1つです。

方法2: sum() メソッドを使う (推奨)

reduce()メソッドを使う代わりに、sum(list) を使って直接合計を求め、それを長さで割ることができます。

input_list = [3, 2, 1, 5, 7, 8]
 
average = sum(input_list) / len(input_list)
 
print("Average of List:", average)

先ほどと同じ出力が得られます!

Pythonでリストの平均を求めるには、この方法がおすすめです。

ビルトイン関数しか使わないので、とても簡単です。

方法3:statistics.mean()を使う

Pythonのバージョンが3.4以上の場合、Pythonのリストの平均を求めるために statistics モジュールを使うこともできます。

import statistics
 
input_list = [3, 2, 1, 5, 7, 8]
 
average = statistics.mean(input_list)
 
print("Average of List:", average)

方法4: numpy.mean()を使用する

NumPyベースのメソッドを使いたい場合は、numpy.mean()が代わりにやってくれるでしょう。

import numpy as np
 
input_list = [3, 2, 1, 5, 7, 8]
 
average = np.mean(input_list)
 
print("Average of List:", average)

また、リストをnumpyの配列に変換し、ndarray.meanで平均値を取得することもできます。

あなたのユースケースに適した方を使用することができますが、両者はほぼ同じパフォーマンスです。

import numpy as np
 
input_list = [3, 2, 1, 5, 7, 8]
 
# Convert to a numpy ndarray and get the mean
# using ndarray.mean
average = np.array(input_list).mean
 
print("Average of List:", average)

方法5: pandasを使用する Series.mean()

もし Pandas を使っているなら、 pandas.Series(list).mean() を使ってリストの平均を取得することができます。

import pandas as pd
 
input_list = [3, 2, 1, 5, 7, 8]
 
# Convert the list to a Pandas Series using pd.Series(list)
# and then get it's mean using series.mean()
average = pd.Series(input_list).mean()
 
print("Average of List:", average)

結果は以下の通りです。

Average of List: 4.333333333333333

まとめ

今回は、Pythonでリストの平均を求める方法を、様々なアプローチで学びました。


タイトルとURLをコピーしました