如何獲取 Pandas DataFrame 的列的平均值

Ahmed Waheed 2023年1月30日
  1. df.mean() 方法來計算 Pandas DataFrame 列的平均值
  2. df.describe() 方法
如何獲取 Pandas DataFrame 的列的平均值

當我們處理大型資料集時,有時我們必須取列的平均值或均值。例如,你有一個學生的成績列表,並且想知道平均成績或其他一些列。下面列出了完成此任務的不同方法。

  1. df.mean()
  2. df.describe()

在以下各節中,我們將使用相同的 DataFrame,如下所示:

import pandas as pd

data = {
    "name": ["Oliver", "Harry", "George", "Noah"],
    "percentage": [90, 99, 50, 65],
    "grade": [88, 76, 95, 79],
}
df = pd.DataFrame(data)

下面是示例 DataFrame

     name  percentage  grade
0  Oliver          90     88
1   Harry          99     76
2  George          50     95
3    Noah          65     79

df.mean() 方法來計算 Pandas DataFrame 列的平均值

我們來看一下資料集中存在的成績等級列。

import pandas as pd

data = {
    "name": ["Oliver", "Harry", "George", "Noah"],
    "percentage": [90, 99, 50, 65],
    "grade": [88, 76, 95, 79],
}
df = pd.DataFrame(data)
mean_df = df["grade"].mean()
print(mean_df)

輸出:

84.5

讓我們再舉一個例子,在整個 DataFrame 上應用 df.mean() 函式。

import pandas as pd

data = {
    "name": ["Oliver", "Harry", "George", "Noah"],
    "percentage": [90, 99, 50, 65],
    "grade": [88, 76, 95, 79],
}
df = pd.DataFrame(data)
mean_df = df.mean()
print(mean_df)

在上面的示例中,我們沒有在 mean() 方法中指定列名。mean() 方法會自動確定哪些列適合應用 mean 功能。

輸出:

percentage    76.0
grade         84.5
dtype: float64

df.describe() 方法

此方法建立資料集完整統計資訊的輸出。讓我們看看如何使用它。

import pandas as pd

data = {
    "name": ["Oliver", "Harry", "George", "Noah"],
    "percentage": [90, 99, 50, 65],
    "grade": [88, 76, 95, 79],
}
df = pd.DataFrame(data)
print(df.describe())

輸出:

       percentage      grade
count    4.000000   4.000000
mean    76.000000  84.500000
std     22.524061   8.660254
min     50.000000  76.000000
25%     61.250000  78.250000
50%     77.500000  83.500000
75%     92.250000  89.750000
max     99.000000  95.000000

df.describle() 方法的結果是一個 DataFrame,因此,你可以通過引用列名和行名來獲得 percentagegrade 的平均值。

df.describe()["grade"]["mean"]
df.describe()["percentage"]["mean"]

df.describe() 也可以用於特定的列。讓我們將此函式應用於等級列。

import pandas as pd

data = {
    "name": ["Oliver", "Harry", "George", "Noah"],
    "percentage": [90, 99, 50, 65],
    "grade": [88, 76, 95, 79],
}
df = pd.DataFrame(data)
print(df["grade"].describe())

輸出:

count     4.000000
mean     84.500000
std       8.660254
min      76.000000
25%      78.250000
50%      83.500000
75%      89.750000
max      95.000000
Name: grade, dtype: float64

指定列時結果為 Series。我們可以直接參考 mean 來獲得平均值。

df["grade"].describe()["mean"]