この記事のポイント
Pythonで平均値を計算する際には、標準ライブラリのstatistics.mean関数を使うのが効率的です。この記事では、基本的な使い方から実践的な応用まで幅広く解説します。
- データセットの平均値を簡潔に求めるための標準ライブラリの関数
- リストやタプルなどのイテラブルオブジェクトに対応した柔軟な使用方法
- エラーハンドリングや型変換を含む実践的なプログラミング技術
これらの知識を活用することで、データ分析や統計処理の場面で効率的かつ読みやすいプログラムを構築できるようになります。
statistics.meanとは?
Pythonのstatistics.meanは、Python標準ライブラリのstatisticsモジュールに含まれる関数で、数値データの算術平均(相加平均)を求める際に利用します。リストやタプルなどのイテラブルを入力として受け取り、要素の合計を要素数で割った算術平均を返します。
手作業でループ処理を記述する必要がないためコードが簡潔になり、誤計算の防止にも役立ちます。statistics.meanは高精度な浮動小数点演算を備えており、精度の高い平均値を算出できる点が特長です。信頼性の高い結果を得られるため、データサイエンスや統計処理の分野で広く利用されています。
【関連】
Pythonをもっと詳しく学ぶならpaizaラーニング
基本構文
Pythonのstatistics.meanの基本的な使い方は至ってシンプルで、statisticsモジュールをインポートしてから関数を呼び出すだけです。
数字リストの平均値を計算して表示
import statistics
NUMBERS = [10, 20, 30, 40, 50]
def calculate_average(values):
return statistics.mean(values)
def main():
average = calculate_average(NUMBERS)
print(average)
if __name__ == "__main__":
main()
出力結果
30
整数だけでなく浮動小数点数を含むデータでも同様に計算できます。
気温リストの平均値を計算して表示
import statistics
TEMPERATURES = [23.5, 25.2, 22.1, 26.8, 24.3]
def calculate_average(values):
return statistics.mean(values)
def main():
avg_temperature = calculate_average(TEMPERATURES)
print(f"平均気温: {avg_temperature:.2f}度")
if __name__ == "__main__":
main()
出力結果
平均気温: 24.38度
タプルや他のイテラブルオブジェクトでも動作します。ただし、空のデータセットに対してはStatisticsErrorが発生するため適切な例外処理が必要です。
実用例
以下では、statistics.mean を用いた実践的なコード例を、複数のシナリオに分けて紹介します。各例は日常的なプログラミングで想定される状況を基にしており、実際のプロジェクトでもそのまま応用できる内容です。
基本的な数値リストの平均計算
学生のテストの点数から平均点を算出する基本的な例です。
テストの平均点と受験者数を表示
import statistics
TEST_SCORES = [85, 92, 78, 95, 88, 91, 87]
def calculate_average(values):
return statistics.mean(values)
def main():
average_score = calculate_average(TEST_SCORES)
print(f"平均点: {average_score:.1f}点")
print(f"受験者数: {len(TEST_SCORES)}人")
if __name__ == "__main__":
main()
出力結果
平均点: 88.0点
受験者数: 7人
このコードでは、7人の学生のテスト結果を格納したリストから平均点を計算しています。statistics.mean関数は自動的に浮動小数点数を返すため、小数点以下の精度も保持されます。f-stringを使用した文字列フォーマットにより、結果を分かりやすく表示できます。
CSVデータの列平均計算
複数の動物の体重データから平均体重を求める実践的な例です。
動物リストの平均体重を表示
import statistics
ANIMAL_WEIGHTS = [
["ネコ", 4.2],
["イヌ", 15.5],
["ウサギ", 2.8],
["ハムスター", 0.12],
["フェレット", 1.5],
]
def extract_weights(data):
return [item[1] for item in data]
def main():
weights = extract_weights(ANIMAL_WEIGHTS)
average_weight = statistics.mean(weights)
print(f"動物の平均体重: {average_weight:.2f}kg")
if __name__ == "__main__":
main()
出力結果
動物の平均体重: 4.82kg
この例では、2次元リストから特定の列を抽出し、その平均値を求める方法を示します。リスト内包表記を用いることで、抽出処理を簡潔に記述できるのがメリットです。この手法は、CSV ファイルから読み込んだデータに対する統計処理でもよく利用されます。
辞書データの値の平均計算
複数の都市の月平均気温データから全体の平均を算出する例です。
都市ごとの気温データから平均気温と都市数を表示
import statistics
CITY_TEMPERATURES = {
"東京": 15.4,
"大阪": 16.2,
"名古屋": 15.8,
"福岡": 17.1,
"札幌": 8.9,
}
def calculate_average(values):
return statistics.mean(values)
def main():
avg_temp = calculate_average(CITY_TEMPERATURES.values())
print(f"全都市平均気温: {avg_temp:.1f}度")
print(f"対象都市数: {len(CITY_TEMPERATURES)}都市")
if __name__ == "__main__":
main()
出力結果
全都市平均気温: 14.7度
対象都市数: 5都市
辞書のvaluesメソッドを使用して値のみを取得し、平均値を計算しています。辞書形式のデータは実際のアプリケーションでよく使用される形式であり、キーと値の対応関係を保持しながら統計処理を行う際に便利です。
条件付き平均値の計算
動物園の動物の年齢データから、特定の条件を満たす個体の平均年齢を計算する例です。
動物園データから成体(10歳以上)の平均年齢を表示
import statistics
ZOO_ANIMALS = [
{"name": "ライオン", "age": 8},
{"name": "ゾウ", "age": 25},
{"name": "キリン", "age": 12},
{"name": "パンダ", "age": 6},
{"name": "サル", "age": 15},
]
def extract_adult_ages(data):
return [animal["age"] for animal in data if animal["age"] >= 10]
def main():
adult_ages = extract_adult_ages(ZOO_ANIMALS)
avg_adult_age = statistics.mean(adult_ages)
print(f"成体の平均年齢: {avg_adult_age:.1f}歳")
if __name__ == "__main__":
main()
出力結果
成体の平均年齢: 17.3歳
この例では、条件付きのリスト内包表記を用いて10歳以上の動物のみを抽出し、その平均年齢を計算しました。データの絞り込みと統計処理を効率的に組み合わせることで、より複雑な分析要件にも対応できます。
エラーハンドリング付き平均計算
空のデータセットや、異常値を含む可能性があるデータを用いる際の、安全な平均計算の例です。
平均値計算を安全に行い、データごとに結果を表示
import statistics
def safe_mean_calculation(data, label):
try:
if not data:
return f"{label}: データがありません"
result = statistics.mean(data)
return f"{label}: {result:.2f}"
except TypeError:
return f"{label}: 数値以外のデータが含まれています"
TEST_DATA_SETS = [
([1, 2, 3, 4, 5], "正常データ"),
([], "空データ"),
([10.5, 20.3, 15.7], "小数データ"),
]
def main():
for data, label in TEST_DATA_SETS:
print(safe_mean_calculation(data, label))
if __name__ == "__main__":
main()
出力結果
正常データ: 3.00
空データ: データがありません
小数データ: 15.50
上記は、try-except文によるエラーハンドリングを用いた、さまざまな状況に対して適切に対応するための関数の一例です。実際のプロジェクトでは、入力データの品質が保証されない場合が多いため、このような防御的プログラミングの手法が重要になります。
まとめ
Pythonのstatistics.meanは、数値の平均を求めるためのシンプルで実用的な関数です。日常的なデータ処理から統計分析まで幅広く活用できます。統計処理の学習はもちろん、現場のエンジニアからも幅広く使用される実用的な関数です。
statistics.meanの活躍する場面
- 学生の成績や試験結果の統計処理における平均点算出
- センサーデータや測定値の品質管理における基準値計算
- マーケティングデータの顧客行動分析における指標算出
重要なポイント
- 空のデータセットではStatisticsErrorが発生するため例外処理が必要
- 浮動小数点数と整数の混在データでも正確な計算結果を返す特徴
- リスト内包表記と組み合わせることで条件付き平均計算が可能
これらの知識を活用することで、効率的で読みやすいPythonコードを書けるようになり、データ処理の精度と生産性の向上につながります。
レベルを更に上げたい方はpaizaプログラミングスキルチェックへ