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

Ahmed Waheed 2023年1月30日 2020年6月9日
  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']