I'd like to scale some (but not all) of the columns in a Pandas dataFrame using a MinMaxScaler. How can I do it?
StandardScaler follows Standard Normal Distribution (SND). Therefore, it makes mean = 0 and scales the data to unit variance. MinMaxScaler scales all the data features in the range [0, 1] or else in the range [-1, 1] if there are negative values in the dataset.
Demo:
In [90]: df = pd.DataFrame(np.random.randn(5, 3), index=list('abcde'), columns=list('xyz')) In [91]: df Out[91]: x y z a -0.325882 -0.299432 -0.182373 b -0.833546 -0.472082 1.158938 c -0.328513 -0.664035 0.789414 d -0.031630 -1.040802 -1.553518 e 0.813328 0.076450 0.022122 In [92]: from sklearn.preprocessing import MinMaxScaler In [93]: mms = MinMaxScaler() In [94]: df[['x','z']] = mms.fit_transform(df[['x','z']]) In [95]: df Out[95]: x y z a 0.308259 -0.299432 0.505500 b 0.000000 -0.472082 1.000000 c 0.306662 -0.664035 0.863768 d 0.486932 -1.040802 0.000000 e 1.000000 0.076450 0.580891
the same result can be also achieved using sklearn.preprocessing.minmax_scale
:
from sklearn.preprocessing import minmax_scale df[['x','z']] = minmax_scale(df[['x','z']])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With