使用 Python 計算平均的 7 種方法|從基礎到進階全面解析

1. 使用 Python 計算平均值的基本方法

在 Python 中計算資料的平均值,最基本的方法是結合使用 sum() 函數與 len() 函數來進行計算。由於這是利用 Python 內建的標準函數,不需要額外安裝任何套件,因此對於初學者來說也非常容易理解。

基本的平均計算方法

平均值是透過將所有資料相加後除以資料的數量來取得的。例如,計算儲存在清單中的數值的平均,可以使用以下程式碼:

# サンプルデータ
numbers = [10, 20, 30, 40, 50]

# 合計を計算
total = sum(numbers)

# 平均値を計算
average = total / len(numbers)

print(f"データ: {numbers}")
print(f"平均値: {average}")

程式碼說明

這段程式碼首先使用 sum() 來加總清單 numbers 中的所有數值,接著使用 len() 來取得清單中的元素個數。最後,將總和除以資料數即可計算出平均值。len() 函數會回傳清單的長度,因此無論資料有多少筆,都能正確算出平均值。

由於這種方法僅使用 Python 的基本功能,因此具備良好的靈活性。此外,當資料量不大時,是非常合適的選擇。

2. 使用 statistics 模組計算平均值

Python 提供了標準函式庫 statistics 模組,讓計算平均值變得更加簡單方便。statistics.mean() 函數可以接收清單或元組等可迭代物件,並計算其平均值。

使用 statistics.mean() 進行平均計算的方法

import statistics

# サンプルデータ
numbers = [10, 20, 30, 40, 50]

# 平均値を計算
average = statistics.mean(numbers)

print(f"データ: {numbers}")
print(f"平均値: {average}")

程式碼說明

這段程式碼是透過 statistics 模組中的 mean() 函數來計算平均值。這個函數不受資料型態或格式限制,能夠對傳入的數值集合進行平均計算。由於這是 Python 標準函式庫的一部分,因此不需額外安裝,可以直接使用,非常方便。

statistics.mean() 函數內部其實也是使用 sum()len() 來進行計算,因此計算結果與前面的方法相同,但程式碼更簡潔,有助於減少錯誤。

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. 使用 NumPy 計算平均值(適合大型資料)

當處理大量數據時,NumPy 是一個非常強大的工具。NumPy 是一個支援大量數值計算的 Python 套件,其提供的 mean() 函數可以快速計算平均值,效率比標準函式更高。

使用 numpy.mean() 計算平均值

import numpy as np

# サンプルデータ
numbers = [10, 20, 30, 40, 50]

# 平均値を計算
average = np.mean(numbers)

print(f"データ: {numbers}")
print(f"平均値: {average}")

程式碼說明

這段程式碼使用 NumPymean() 函數來計算平均值。與 statistics 模組相比,NumPy 在處理大型數據時的效率更高,特別是在數值分析或機器學習等需要大量資料運算的情境中。

不過,使用 NumPy 需要先安裝套件,可以透過 pip install numpy 來安裝。

4. 使用 Pandas 計算平均值(適合表格資料)

若要處理像是 Excel 或 CSV 這類表格形式的資料,Pandas 是最佳選擇之一。Pandas 提供的 mean() 函數可用於 SeriesDataFrame 對象,讓平均計算變得簡單又快速。

使用 Pandas 的 Series 進行平均計算

import pandas as pd

# サンプルデータ(PandasのSeriesを使用)
numbers = pd.Series([10, 20, 30, 40, 50])

# 平均値を計算
average = numbers.mean()

print(f"データ:\n{numbers}")
print(f"平均値: {average}")

程式碼說明

這段程式碼使用 Pandas 的 Series 結構儲存數據,並透過 mean() 方法直接計算平均值。這種方式非常適合處理從 CSV 或 Excel 匯入的資料,或是需要資料清洗與前處理的情境。

NumPy 一樣,Pandas 套件也需要事先安裝,安裝方法為 pip install pandas

侍エンジニア塾

5. 使用 for 迴圈自行計算平均值

除了使用內建函式之外,也可以透過 for 迴圈手動計算平均值。這種方式有助於理解平均值的基本概念與計算流程。

使用 for 迴圈計算平均值的範例

# サンプルデータ
numbers = [10, 20, 30, 40, 50]

# 合計とカウントを初期化
total = 0
count = 0

# for文で繰り返し処理
for num in numbers:
    total += num
    count += 1

# 平均値を計算
average = total / count

print(f"データ: {numbers}")
print(f"平均値: {average}")

程式碼說明

此程式碼使用 for 迴圈逐一取得清單中的數值並加總,同時紀錄數據的筆數,最後計算平均值。這種方法可以靈活處理特定條件下的資料,也方便加入過濾條件。

雖然實務上會更常使用 sum()mean() 等簡潔方法,但掌握此方式對於程式邏輯的理解非常有幫助。

6. 排除缺失值(None, NaN)進行平均計算

在實際的資料分析中,常常會遇到包含 NoneNaN(非數值)的情況。這些缺失值若不排除,會導致平均計算失敗或錯誤,因此需要事先處理。

使用 list comprehension 排除 None

numbers = [10, 20, None, 40, 50]

# Noneを除外
cleaned = [num for num in numbers if num is not None]

# 平均値を計算
average = sum(cleaned) / len(cleaned)

print(f"元のデータ: {numbers}")
print(f"有効なデータ: {cleaned}")
print(f"平均値: {average}")

使用 pandas 排除 NaN

import pandas as pd
import numpy as np

# サンプルデータ(NaN を含む)
numbers = pd.Series([10, 20, np.nan, 40, 50])

# NaN を除外して平均値を計算
average = numbers.mean()

print(f"データ:\n{numbers}")
print(f"平均値: {average}")

7. 条件付きで平均を計算(フィルター付き平均)

特定の条件を満たすデータだけを抽出して平均を計算したい場合、if 文を組み合わせることで実現できます。

例:30以上の値だけを平均

numbers = [10, 20, 30, 40, 50]

# 条件を満たすデータを抽出(30以上)
filtered = [num for num in numbers if num >= 30]

# 平均値を計算
average = sum(filtered) / len(filtered)

print(f"元のデータ: {numbers}")
print(f"30以上のデータ: {filtered}")
print(f"平均値: {average}")

程式碼說明

上述範例中,我們使用 list comprehension 結合 if 條件,篩選出數值大於或等於 30 的項目,然後再進行平均計算。這種方式在需要排除異常值或進行條件分析時非常實用。