【Python初心者でも分かる】データサイエンティスト協会の100本ノック|小数点の処理

スポンサーリンク
Python
【初心者必見】プログラミング言語Pythonでできること5選
プログラミング言語の一つであるPythonはコードが理解しやすく、いろんな用途に使える汎用性があります。ですので、全くの初心者にもおすすめしているサイトが多いです。 ここで改めて、Pythonを勉強したい人やデータ分析、AI開発をして...
初心者に人気のプログラミング言語Pythonは独学可能か?
Pythonは非常に人気のあるプログラミング言語で、まったくの初心者でも独学が可能と言われています。 Pythonはさまざまな目的に使える、汎用性のあるプログラミング言語です。 プログラミングは「独学が難しい」と言われていま...

データサイエンティスト協会の100本ノックがGitHubに公開しているデータとPythonコードを初心者にでも分かるように解説していきます。

今回は65~68本です。内容は主に、データから新たなデータを作成する「小数点を処理する方法」について解説していきます。

Pythonの環境設定は以下の記事を参考にして下さい。

【2021年最新】M1 mac でanacondaをインストールする方法

【2021年最新】WindowsでAnacondaをインストールする方法

  1. 小数点の処理
    1. P-065: 商品データフレーム(df_product)の各商品について、利益率が30%となる新たな単価を求めよ。ただし、1円未満は切り捨てること。そして結果を10件表示させ、利益率がおよそ30%付近であることを確認せよ。ただし、単価(unit_price)と原価(unit_cost)にはNULLが存在することに注意せよ。
    2. P-066: 商品データフレーム(df_product)の各商品について、利益率が30%となる新たな単価を求めよ。今回は、1円未満を四捨五入すること(0.5については偶数方向の丸めで良い)。そして結果を10件表示させ、利益率がおよそ30%付近であることを確認せよ。ただし、単価(unit_price)と原価(unit_cost)にはNULLが存在することに注意せよ。
    3. P-067: 商品データフレーム(df_product)の各商品について、利益率が30%となる新たな単価を求めよ。今回は、1円未満を切り上げること。そして結果を10件表示させ、利益率がおよそ30%付近であることを確認せよ。ただし、単価(unit_price)と原価(unit_cost)にはNULLが存在することに注意せよ。
    4. P-068: 商品データフレーム(df_product)の各商品について、消費税率10%の税込み金額を求めよ。 1円未満の端数は切り捨てとし、結果は10件表示すれば良い。ただし、単価(unit_price)にはNULLが存在することに注意せよ。

小数点の処理

まずは、以下からダウンロードして下さい。

GitHubからデータをダウンロードする方法

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

import pandas as pd
import numpy as np
df_product = pd.read_csv("product.csv")

df_65 = df_product.copy()
df_65['new_price'] = np.floor(df_65['unit_cost']/0.7)
df_65['new_profit_rate'] = 1-df_65['unit_cost']/df_65['new_price']
df_65.head(10)

出力:

コスト「unit_cost」を 0.7 で割ると利益率が30%になる価格が計算できます。

そして、利益率30%になる価格を変数「new_price」とします。

「new_price」が正しいく利益率30%になっているかを確認するために、新しく作った変数「new_price」を使って利益率を計算しています。このときに、小数点以下の計算を行っています。

すなわち、小数点以下の切り捨てを、np.floor() を使って行っています。

利益率は、コスト「unit_cost」を新しい変数「new_price」で割った数値を、1から引くことで計算できます。計算結果を「new_profit_rate」として結果を表出しています。

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

df_66 = df_product.copy()
df_66['new_price'] = np.round(df_65['unit_cost']/0.7)
df_66['new_profit_rate'] = 1-df_66['unit_cost']/df_66['new_price']
df_66.head(10)

出力:

基本的には前問と同じです。

小数点以下の処理に違いがあるだけです。

小数点以下を四捨五入を、np.round() を使って行っています。

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

df_67 = df_product.copy()
df_67['new_price'] = np.ceil(df_67['unit_cost']/0.7)
df_67['new_profit_rate'] = 1-df_67['unit_cost']/df_67['new_price']
df_67.head(10)

出力:

こつらは、小数点以下の切り上げを、np.ceil() を使って行っています。

ここで小数点の処理方法をまとめて確認してみましょう。

print(np.floor(1.9))  # 切り捨て
print(np.round(1.5))  # 四捨五入
print(np.round(1.4))  # 四捨五入
print(np.ceil(1.1))   # 切り上げ

出力:
1.0
2.0
1.0
2.0

小数点以下の処理はこのような種類があります。データ分析の目的に応じて使い分けていきましょう。

小数点以下の処理をしないと、出力結果が分かりにくくなってしまいます。

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

df_68 = df_product.copy()
df_68["unit_price_intax"] = np.floor(df_68["unit_price"]*1.1)
df_68.head(10)

出力:

np.floor() を使って、小数点以下の切り捨てをしています。

また、10%の消費税を計算するために、価格 ✕ 1.1 を計算しています。

データサイエンティスト協会の100本ノックを解説|ダウンロードから読み込みまで

データサイエンティスト協会の100本ノックを解説|データの抽出

データサイエンティスト協会の100本ノックを解説|変数の一部を使ってデータを抽出する

データサイエンティスト協会の100本ノックを解説|ソート(順序で整列)

データサイエンティスト協会の100本ノックを解説|グループ分け

データサイエンティスト協会の100本ノック|新たなデータフレームの作成

データサイエンティスト協会の100本ノック|日付データ

データサイエンティスト協会の100本ノック|特徴量エンジニアリング

データサイエンティスト協会の100本ノック|変数を整える



コメント

タイトルとURLをコピーしました