: 문자 데이터를 숫자-범주형 데이터로 변환
import pandas as pd
df = pd.DataFrame({
'A' : ['a', 'b', 'c', 'a', 'b'],
'B' : [1, 2, 3, 1, 0]
})
df

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
le.fit(df['A'])
le.classes_
-> array(['a', 'b', 'c'], dtype=object)
df['le_A'] = le.transform(df['A'])
df

le.fit_transform(df['A'])
-> array([0, 1, 2, 0, 1])
le.transform(['a'])
-> array([0])
le.inverse_transform(df['le_A'])
-> array(['a', 'b', 'c', 'a', 'b'], dtype=object)
분자: min을 0으로 보내는 것
분모: 크기를 1로 바꾸는 것

데이터 생성
df = pd.DataFrame({
'A' : [10, 20, -10, 0, 25],
'B' : [1, 2, 3, 1, 0]
})
df

from sklearn.preprocessing import MinMaxScaler
mms = MinMaxScaler()
mms.fit(df)
mms.data_max_, mms.data_min_
-> (array([25., 3.]), array([-10., 0.]))
df_mms = mms.transform(df)
df_mms

mms.inverse_transform(df_mms)

mms.fit_transform(df)

: 방법은 min-max Scaler와 같음!
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
ss.fit(df)
ss.mean_, ss.scale_
-> (array([9. , 1.4]), array([12.80624847, 1.0198039 ]))
df_ss = ss.transform(df)
df_ss

ss.fit_transform(df)
ss.inverse_transform(df_ss)

여기서의 q1, q2~~ 는 boxplot에서의 q들을 말하는 것 말하는 것
q3 - q1: 제사분위수(50%)
중앙값을 0으로 보내겠다는 것

데이터 준비
df = pd.DataFrame({
'A': [-0.1, 0., 0.1, 0.2, 0.3, 0.4, 1.0 , 1.1, 5]
})
from sklearn.preprocessing import MinMaxScaler, StandardScaler, RobustScaler
mm = MinMaxScaler()
ss = StandardScaler()
rs = RobustScaler()
df_scaler['MinMax'] = mm.fit_transform(df)
df_scaler['Standard'] = ss.fit_transform(df)
df_scaler['Robust'] = rs.fit_transform(df)
df_scaler

import seaborn as sns
import matplotlib.pyplot as plt
sns.set_theme(style='whitegrid')
plt.figure(figsize=(16, 6))
sns.boxplot(data=df_scaler, orient='h');
