関数を切り出す
大学の卒業可否を予測するモデルを開発する中で、学生の各年のGPAについてzスコア(平均からの標準偏差を示す指標)を求めるため、次のコードを書きました。これを本番品質のシステムにする準備として、重複処理を解消する必要があります。zスコアを計算する関数にまとめると改善できます。
# 各年のGPAを標準化する
df['y1_z'] = (df.y1_gpa - df.y1_gpa.mean()) / df.y1_gpa.std()
df['y2_z'] = (df.y2_gpa - df.y2_gpa.mean()) / df.y2_gpa.std()
df['y3_z'] = (df.y3_gpa - df.y3_gpa.mean()) / df.y3_gpa.std()
df['y4_z'] = (df.y4_gpa - df.y4_gpa.mean()) / df.y4_gpa.std()
注: df は pandas の DataFrame で、各行が1人の学生、各年のGPAを表す4つの列 y1_gpa、y2_gpa、y3_gpa、y4_gpa を持ちます。
この演習はコースの一部です
Python関数の書き方
演習の手順
- 列のzスコアを返すように関数を完成させてください。
- 関数を使って、生のGPAスコア(
df.y1_gpa、df.y2_gpaなど)から各年のzスコア(df['y1_z']、df['y2_z']など)を計算してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
def standardize(column):
"""Standardize the values in a column.
Args:
column (pandas Series): The data to standardize.
Returns:
pandas Series: the values as z-scores
"""
# Finish the function so that it returns the z-scores
z_score = (____ - ____.____()) / ____.____()
return z_score
# Use the standardize() function to calculate the z-scores
df['y1_z'] = ____
df['y2_z'] = ____
df['y3_z'] = ____
df['y4_z'] = ____