Pandas dataframe の列を正規化する方法
多くの場合、pandas DataFrame 内の 1 つ以上の列のデータ値を正規化したい場合があります。
このチュートリアルでは、これを行う 2 つの方法について説明します。
1. 最小値と最大値の正規化
- 目的:各データ値を 0 から 1 までの値に変換します。
- 式:新しい値 = (値 – 最小) / (最大 – 最小)
2. 平均の正規化
- 目的:すべての値の平均が 0 および標準値になるように値をスケーリングします。開発者。は1です。
- 計算式:新しい値 = (値 – 平均) / (標準偏差)
pandas DataFrame で各メソッドを使用する方法の例を見てみましょう。
例 1: 最小-最大正規化
次のパンダ データフレームがあるとします。
import pandas as pd #createDataFrame df = pd.DataFrame({'points': [25, 12, 15, 14, 19], 'assists': [5, 7, 7, 9, 12], 'rebounds': [11, 8, 10, 6, 6]}) #view DataFrame print (df) points assists rebounds 0 25 5 11 1 12 7 8 2 15 7 10 3 14 9 6 4 19 12 6
次のコードを使用して、DataFrame の各列に最小-最大正規化を適用できます。
(df-df. min ())/(df. max ()-df. min ()) points assists rebounds 0 1.000000 0.000000 1.0 1 0.000000 0.285714 0.4 2 0.230769 0.285714 0.8 3 0.153846 0.571429 0.0 4 0.538462 1.000000 0.0
各列の最大値は1になり、各列の最小値は0になり、他のすべての値は 0 から 1 の間になります。
例 2: 平均の正規化
もう一度、次の pandas DataFrame があると仮定してみましょう。
import pandas as pd #createDataFrame df = pd.DataFrame({'points': [25, 12, 15, 14, 19], 'assists': [5, 7, 7, 9, 12], 'rebounds': [11, 8, 10, 6, 6]}) #view DataFrame print (df) points assists rebounds 0 25 5 11 1 12 7 8 2 15 7 10 3 14 9 6 4 19 12 6
次のコードを使用して、DataFrame の各列に平均正規化を適用できます。
(df- df.mean ())/df. std () points assists rebounds 0 1.554057 -1.133893 1.227881 1 -0.971286 -0.377964 -0.087706 2 -0.388514 -0.377964 0.789352 3 -0.582772 0.377964 -0.964764 4 0.388514 1.511858 -0.964764
各列の値の平均が 0、各列の値の標準偏差が 1 になるように、各列の値が正規化されました。
特定のデータ ポイントの正規化値が 0 より大きい場合、そのデータ ポイントがその列の平均よりも大きいことを示します。逆に、0 未満の正規化値は、データ ポイントがその列の平均を下回っていることを示します。
追加リソース
パンダ: 複数の列をグループ化して集計する方法
複数の条件で Pandas DataFrame をフィルタリングする方法
Pandas DataFrame の欠損値を数える方法