Pandas DataFrame の列の平均を取得する方法
Ahmed Waheed
2023年1月30日
大きなデータセットを扱う場合、列の平均または平均をとらなければならないことがあります。たとえば、学生の成績リストがあり、成績の平均やその他の列を知りたいとします。このタスクを達成するためのさまざまな方法を以下に示します。
次のセクションでは、次のように同じ 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
であるため、列名と行名を参照することで、percentage
と grade
の平均を取得できます。
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"]