Pandas データ フレームの列に平方根関数を適用する
このチュートリアルでは、指数演算子、np.sqrt()、lambda、および apply() 関数を使用して、Pandas データ フレームの列に平方根関数を適用する方法を説明します。 さらに、.astype(int) を使用して整数の平方根を決定する方法を学習します。
平方根の紹介
平方根に進む前に、平方とは何か、またその計算方法を理解する必要があります。 それから始めましょう。
数学では、数値の 2 乗は、指定された数値をそれ自体で乗算することによって計算されることを学びました。たとえば、3 の 2 乗 = 3x3 = 9 です。
任意の数 n の 2 乗は上付き文字 2 で表され、n^2 と書くことができます。 次の 2つのプロパティを満たす必要があります。
- 指定した数値の 2 乗は、浮動小数点数または整数にすることができます。
- 2つの負の数の積は正の数になるため、指定された数の 2 乗は常に正の数になります。
これで、平方根を学習する準備が整いました。 n^2 の平方根は n であり、√n で表されます (n^(1/2) とも表されます)。
さまざまな科学的および数学的な機能に役立ちます。
これで平方根についての理解が深まりました。Python を使用して平方根を計算する方法、具体的にはパンダのデータ フレームの列に平方根関数を適用する方法を学びましょう。
Pandas データ フレームの列に平方根関数を適用する
さまざまなアプローチを使用して平方根関数を適用できます。 それらのいくつかを以下に示します。 それらすべてを使用するには、データ フレームが必要です。 たとえば、次のようになります。
import pandas as pd
data = {
"years": [2020, 2021, 2022],
"teams": ["Bears", "Packers", "Lions"],
"wins": [25, 10, 6],
"losses": [5, 5, 16],
}
df = pd.DataFrame(data, columns=["years", "teams", "wins", "losses"])
df["wins+losses"] = df[["wins", "losses"]].sum(axis=1)
df
ここでは、データと列名の配列をパラメーターとして受け取る pd.DataFrame() を使用して Python データ フレームに変換される key-value ペアを含む辞書があります。
次に、wins 列と losses 列の合計を含む新しい列 wins+losses をデータ フレームに追加します。 理解を深めるために、次の出力を確認してください。
| 年 | チーム | 勝つ | 損失 | 勝ち+負け | |
|---|---|---|---|---|---|
| 0 | 2020年 | クマ | 25 | 5 | 30 |
| 1 | 2021年 | パッカーズ | 10 | 5 | 15 |
| 2 | 2022年 | ライオンズ | 6 | 16 | 22 |
このデータ フレームは、次のメソッドで使用されます。ここでは、wins、losses、および wins+losses 列の平方根を見つけます。
方法 1: 指数演算子を使用して平方根を計算する
コード例:
import pandas as pd
data = {
"years": [2020, 2021, 2022],
"teams": ["Bears", "Packers", "Lions"],
"wins": [25, 10, 6],
"losses": [5, 5, 16],
}
df = pd.DataFrame(data, columns=["years", "teams", "wins", "losses"])
df["wins+losses"] = df[["wins", "losses"]].sum(axis=1)
df["sqrt(wins)"] = df[["wins"]] ** 0.5
df["sqrt(losses)"] = df[["losses"]] ** 0.5
df["sqrt(wins+losses)"] = df[["wins+losses"]] ** 0.5
df
出力:
| 年 | チーム | 勝つ | 損失 | 勝ち+負け | sqrt(勝ち) | sqrt(損失) | sqrt(勝ち+負け) | |
|---|---|---|---|---|---|---|---|---|
| 0 | 2020年 | クマ | 25 | 5 | 30 | 5.000000 | 2.236068 | 5.477226 |
| 1 | 2021年 | パッカーズ | 10 | 5 | 15 | 3.162278 | 2.236068 | 3.872983 |
| 2 | 2022年 | ライオンズ | 6 | 16 | 22 | 2.449490 | 4.000000 | 4.690416 |
上記のコードは、指定されたデータ フレームの列を反復処理し、累乗演算子として知られる算術演算子である累乗 (**) を使用します。
数 n の平方根は √n で表され、これは n^(1/2) に等しく、Python では n**0.5 とも書きます。 ここで、n は、Pandas データ フレームの指定された列の各値に置き換えられています。
方法 2: np.sqrt() を使用して平方根を計算する
コード例:
import pandas as pd
import numpy as np
data = {
"years": [2020, 2021, 2022],
"teams": ["Bears", "Packers", "Lions"],
"wins": [25, 10, 6],
"losses": [5, 5, 16],
}
df = pd.DataFrame(data, columns=["years", "teams", "wins", "losses"])
df["wins+losses"] = df[["wins", "losses"]].sum(axis=1)
df["sqrt(wins)"] = np.sqrt(df[["wins"]])
df["sqrt(losses)"] = np.sqrt(df[["losses"]])
df["sqrt(wins+losses)"] = np.sqrt(df[["wins+losses"]])
df
出力:
| 年 | チーム | 勝つ | 損失 | 勝ち+負け | sqrt(勝ち) | sqrt(損失) | sqrt(勝ち+負け) | |
|---|---|---|---|---|---|---|---|---|
| 0 | 2020年 | クマ | 25 | 5 | 30 | 5.000000 | 2.236068 | 5.477226 |
| 1 | 2021年 | パッカーズ | 10 | 5 | 15 | 3.162278 | 2.236068 | 3.872983 |
| 2 | 2022年 | ライオンズ | 6 | 16 | 22 | 2.449490 | 4.000000 | 4.690416 |
このコード スニペットは、NumPy ライブラリの sqrt() 関数を使用しています。これは、平方根を決定する必要がある入力値の配列を取ります。
方法 3: lambda 式を使用して平方根を計算する
コード例:
import pandas as pd
data = {
"years": [2020, 2021, 2022],
"teams": ["Bears", "Packers", "Lions"],
"wins": [25, 10, 6],
"losses": [5, 5, 16],
}
df = pd.DataFrame(data, columns=["years", "teams", "wins", "losses"])
df["wins+losses"] = df[["wins", "losses"]].sum(axis=1)
df["sqrt(wins)"] = df.transform(lambda x: (df[["wins"]] ** 0.5))
df["sqrt(losses)"] = df.transform(lambda x: (df[["losses"]]) ** 0.5)
df["sqrt(wins+losses)"] = df.transform(lambda x: (df[["wins+losses"]]) ** 0.5)
df
出力:
| 年 | チーム | 勝つ | 損失 | 勝ち+負け | sqrt(勝ち) | sqrt(損失) | sqrt(勝ち+負け) | |
|---|---|---|---|---|---|---|---|---|
| 0 | 2020年 | クマ | 25 | 5 | 30 | 5.000000 | 2.236068 | 5.477226 |
| 1 | 2021年 | パッカーズ | 10 | 5 | 15 | 3.162278 | 2.236068 | 3.872983 |
| 2 | 2022年 | ライオンズ | 6 | 16 | 22 | 2.449490 | 4.000000 | 4.690416 |
ここでは、指定された列の平方根を決定するために、べき乗 (**) で lambda 式 (関数) を使用しています。 コードの実用性と単純さを優先する場合は、lambda 式を使用します。
transform() メソッドも使用します。このメソッドは、self で関数を呼び出し、変換されたアイテム/値を持つ DataFrame を生成します。 self と同じ長さの DataFrame を返します。
方法 4: apply() を使用して平方根を計算する
コード例:
import pandas as pd
import numpy as np
data = {
"years": [2020, 2021, 2022],
"teams": ["Bears", "Packers", "Lions"],
"wins": [25, 10, 6],
"losses": [5, 5, 16],
}
df = pd.DataFrame(data, columns=["years", "teams", "wins", "losses"])
df["wins+losses"] = df[["wins", "losses"]].sum(axis=1)
df["sqrt(wins)"] = df[["wins"]].apply(np.sqrt)
df["sqrt(losses)"] = df[["losses"]].apply(np.sqrt)
df["sqrt(wins+losses)"] = df[["wins+losses"]].apply(np.sqrt)
df
出力:
| 年 | チーム | 勝つ | 損失 | 勝ち+負け | sqrt(勝ち) | sqrt(損失) | sqrt(勝ち+負け) | |
|---|---|---|---|---|---|---|---|---|
| 0 | 2020年 | クマ | 25 | 5 | 30 | 5.000000 | 2.236068 | 5.477226 |
| 1 | 2021年 | パッカーズ | 10 | 5 | 15 | 3.162278 | 2.236068 | 3.872983 |
| 2 | 2022年 | ライオンズ | 6 | 16 | 22 | 2.449490 | 4.000000 | 4.690416 |
このコード フェンスは、Pandas ライブラリの apply() メソッドを使用しています。このメソッドは、np.sqrt をパラメーターとして取り、平方根値の DataFrame を返します。
上記のすべてのアプローチが平方根を float 値として返すことに気付いたかもしれません。 それらを整数値にしたい場合はどうすればよいでしょうか?
.astype(int) を使用して Pandas の整数平方根を決定する
コード例:
import pandas as pd
import numpy as np
data = {
"years": [2020, 2021, 2022],
"teams": ["Bears", "Packers", "Lions"],
"wins": [25, 10, 6],
"losses": [5, 5, 16],
}
df = pd.DataFrame(data, columns=["years", "teams", "wins", "losses"])
df["wins+losses"] = df[["wins", "losses"]].sum(axis=1)
df["sqrt(wins)"] = df[["wins"]].apply(np.sqrt).astype(int)
df["sqrt(losses)"] = df[["losses"]].apply(np.sqrt).astype(int)
df["sqrt(wins+losses)"] = df[["wins+losses"]].apply(np.sqrt).astype(int)
df
出力:
| 年 | チーム | 勝つ | 損失 | 勝ち+負け | sqrt(勝ち) | sqrt(損失) | sqrt(勝ち+負け) | |
|---|---|---|---|---|---|---|---|---|
| 0 | 2020年 | クマ | 25 | 5 | 30 | 5 | 2 | 5 |
| 1 | 2021年 | パッカーズ | 10 | 5 | 15 | 3 | 2 | 3 |
| 2 | 2022年 | ライオンズ | 6 | 16 | 22 | 2 | 4 | 4 |
同様に、.astype(int) を他のアプローチで使用できます。 0 の 2 乗を見つけてもエラーにはなりません。なぜなら、0 を何乗しても 0 になるからです。ただし、平方根を見つけようとすると、ValueError または NaN になることがあります 負の数の。
