Pandas DataFrame の列の平均を取得する方法

Ahmed Waheed 2023年1月30日
  1. Pandas DataFrame 列の平均を計算する df.mean() メソッド
  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

Pandas 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["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() は特定の列に対しても機能します。この関数を grade 列に適用してみましょう。

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 になります。平均値を直接参照することで平均値を取得できます。

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