【問63~問68】データサイエンス100本ノック 解説

※アフィリエイト広告を利用しています。

ファイル
  1. はじめに
  2. 問63 商品データフレーム(df_product)の単価(unit_price)と原価(unit_cost)から、各商品の利益額を算出せよ。結果は10件表示させれば良い。
  3. 問64 商品データフレーム(df_product)の単価(unit_price)と原価(unit_cost)から、各商品の利益率の全体平均を算出せよ。 ただし、単価と原価にはNULLが存在することに注意せよ。
  4. 問65 商品データフレーム(df_product)の各商品について、利益率が30%となる新たな単価を求めよ。ただし、1円未満は切り捨てること。そして結果を10件表示させ、利益率がおよそ30%付近であることを確認せよ。ただし、単価(unit_price)と原価(unit_cost)にはNULLが存在することに注意せよ。
  5. 問66 商品データフレーム(df_product)の各商品について、利益率が30%となる新たな単価を求めよ。今回は、1円未満を丸めること(四捨五入または偶数への丸めで良い)。そして結果を10件表示させ、利益率がおよそ30%付近であることを確認せよ。ただし、単価(unit_price)と原価(unit_cost)にはNULLが存在することに注意せよ。
  6. 問67 商品データフレーム(df_product)の各商品について、利益率が30%となる新たな単価を求めよ。今回は、1円未満を切り上げること。そして結果を10件表示させ、利益率がおよそ30%付近であることを確認せよ。ただし、単価(unit_price)と原価(unit_cost)にはNULLが存在することに注意せよ。
  7. 問68 商品データフレーム(df_product)の各商品について、消費税率10%の税込み金額を求めよ。 1円未満の端数は切り捨てとし、結果は10件表示すれば良い。ただし、単価(unit_price)にはNULLが存在することに注意せよ。
  8. Pythonのコードやライブラリーについて知りたい場合
  9. 独学でデータ分析をしている方へ

はじめに

問63~問68のコードの説明を初心者や初学者でもわかるような方法でまとめました。

データサイエンス100本ノックのはじめ方は、以下のブログ記事を参考にしてください。

>>【Google Colabはじめ方】データサイエンス100本ノックーデータサイエンティスト協会

問63 商品データフレーム(df_product)の単価(unit_price)と原価(unit_cost)から、各商品の利益額を算出せよ。結果は10件表示させれば良い。

df_product)に新しくunit_profitのカラムを作成し、そちらには、各商品の利益額を算出したものを入力します。

各商品の利益額は、単価(unit_price)ー 原価(unit_cost)で計算できます。

df_product['unit_profit'] = df_product['unit_price'] - df_product['unit_cost']

問64 商品データフレーム(df_product)の単価(unit_price)と原価(unit_cost)から、各商品の利益率の全体平均を算出せよ。 ただし、単価と原価にはNULLが存在することに注意せよ。

df_product)に新しくunit_profit_rateのカラムを作成し、そちらには、各商品の利益率を算出したものを入力します。

各商品の利益率は、(単価(unit_price)ー原価(unit_cost))/単価(unit_price)*100で計算できます。

df_product['unit_profit_rate'] = (df_product['unit_price'] - df_product['unit_cost']) / df_product['unit_price']*100

各商品の利益率の全体平均を求めるには、mean()を使用します。

なお、「単価と原価にはNULLが存在することに注意せよ」とありますが、mean()引数skipna=Trueを選択すると値がないデータを飛ばして計算してくれますが、mean()デフォルトでTrueに設定されているので、特段書く必要はありません

df_product['unit_profit_rate'].mean()

問65 商品データフレーム(df_product)の各商品について、利益率が30%となる新たな単価を求めよ。ただし、1円未満は切り捨てること。そして結果を10件表示させ、利益率がおよそ30%付近であることを確認せよ。ただし、単価(unit_price)と原価(unit_cost)にはNULLが存在することに注意せよ。

利益率30%ということは、「単価が原価の70%」である必要があります。

例えば、利益率30%というものは、原価70円のものを単価100円で売った場合です。

つまり、単価100円×0.7=原価70円の関係です。
仮に単価A原価Bとし、これを式にすると、A×0.7=Bです。

式変形すると、A=B/0.7になります。

すなわち、利益率30%は、「単価が原価の70%を指します。

そして、「1円未満は切り捨てる」必要があるので、np.floor()を使用します。

なお、問43問56で使用したmath.floor()小数点の切り捨てができますが、データにNaNが存在するとエラーになってしまいます。

df_product['new_price'] = np.floor(df_product['unit_cost']/0.7)

そして、利益率がおよそ30%付近であることを確認するために、問64で行ったようにnew_priceに対して、利益率を表示します。

df_product['new_profit_rate'] = (df_product['new_price'] - df_product['unit_cost']) / df_product['new_price']*100

問66 商品データフレーム(df_product)の各商品について、利益率が30%となる新たな単価を求めよ。今回は、1円未満を丸めること(四捨五入または偶数への丸めで良い)。そして結果を10件表示させ、利益率がおよそ30%付近であることを確認せよ。ただし、単価(unit_price)と原価(unit_cost)にはNULLが存在することに注意せよ。

問65と基本的な処理は同じです。

違う点は、「1円未満を丸めること(四捨五入または偶数への丸めで良い)」です。

それには、np.round()を使用します。

df_product['new_price'] = np.round(df_product['unit_cost']/0.7)
df_product['new_profit_rate'] = (df_product['new_price'] - df_product['unit_cost']) / df_product['new_price']*100
df_product.head(10)

問67 商品データフレーム(df_product)の各商品について、利益率が30%となる新たな単価を求めよ。今回は、1円未満を切り上げること。そして結果を10件表示させ、利益率がおよそ30%付近であることを確認せよ。ただし、単価(unit_price)と原価(unit_cost)にはNULLが存在することに注意せよ。

こちらも問65問66と基本的な処理は同じです。

違う点は、「1円未満を切り上げること」です。

それには、np.ceil()を使用します。

df_product['new_price'] = np.ceil(df_product['unit_cost']/0.7)
df_product['new_profit_rate'] = (df_product['new_price'] - df_product['unit_cost']) / df_product['new_price']*100
df_product.head(10) 

問68 商品データフレーム(df_product)の各商品について、消費税率10%の税込み金額を求めよ。 1円未満の端数は切り捨てとし、結果は10件表示すれば良い。ただし、単価(unit_price)にはNULLが存在することに注意せよ。

消費税率10%税込み金額は、単価(unit_price)×1.1となります。

そして、「1円未満の端数は切り捨て」るので、np.floor()を使用します。

df_product['price_tax'] = np.floor(df_product['unit_price']/1.1)
df_product.head(10)

Pythonのコードやライブラリーについて知りたい場合

Pythonデータ分析よく使われている言語です。

この機会にPythonコードの打ち方・ライブラリーについてもっと知りたいと思った方は、以下のブログ記事をご覧ください。

独学でデータ分析をしている方へ

機械学習データサイエンスデータ分析独学で学ぶには、どうしたらよいかをまとめてみましたので、興味がある方はこちらのブログ記事をご覧ください。