減算に対応するユーザー定義関数の更新
前の演習で扱った関数は減算に対応していませんでした。次の関数を見てみましょう。
def compute_ratio(df, numerator, denominator, ratio_name,
addition_in_numerator = True,
addition_in_denominator = True):
numerator_of_ratio = np.where(addition_in_numerator,
df[numerator].sum(axis=1),
df[numerator[0]] - df[numerator[1:]].sum(
axis=1))
denominator_of_ratio = np.where(addition_in_denominator,
df[denominator].sum(axis=1),
df[denominator[0]] - df[denominator[1:]].sum(axis=1))
df[ratio_name] = numerator_of_ratio/denominator_of_ratio
return df
この関数は、財務比率の分子と分母での加算・減算の両方に対応できます。関数内で np.where を使っている点に注目してください。これは NumPy パッケージの関数です。np.where は最初の引数が True かを判定し、True の場合は2番目の引数を、そうでない場合は3番目の引数を返します。たとえば上の例では次のようになります。
np.where(addition_in_numerator,
df[numerator].sum(axis=1),
df[numerator[0]] - df[numerator[1:]].sum(
axis=1))
addition_in_numerator が True のときは np.where は df[numerator].sum(axis=1) を返し、そうでないときは df[numerator[0]] - df[numerator[1:]].sum(axis=1) を返します。
この演習では、balance_sheet DataFrame に加えて、pandas と NumPy がそれぞれ pd と np として読み込まれています。これらを使って、次の記述のうちどれが正しいかを判断してください。
この演習はコースの一部です
