#python #pandas #scikit-learn
#python #pandas #scikit-learn
Вопрос:
Я пытаюсь использовать SimpleImputer в конкретных столбцах моего фрейма данных, а затем использовать эту предварительную обработку в конвейере. Я получил этот фрейм данных:
Тогда это мое решение:
from sklearn.compose import ColumnTransformer
from sklearn.impute import SimpleImputer
siFreq = SimpleImputer(
missing_values=np.nan,
strategy='most_frequent',
verbose=0,
copy=True
)
siZeros = SimpleImputer(
missing_values=np.nan,
strategy='constant',
fill_value=0,
verbose=0,
copy=True
)
fet_zeros = ['NUM_COURSES_BEGINNER_DATASCIENCE','NUM_COURSES_ADVANCED_DATASCIENCE','NUM_COURSES_BEGINNER_BACKEND',
'NUM_COURSES_ADVANCED_BACKEND','NUM_COURSES_BEGINNER_FRONTEND','NUM_COURSES_ADVANCED_FRONTEND']
fet_freq = ['HOURS_DATASCIENCE','HOURS_BACKEND','HOURS_FRONTEND','AVG_SCORE_DATASCIENCE',
'AVG_SCORE_BACKEND','AVG_SCORE_FRONTEND']
column_trans = ColumnTransformer(
transformers = [('si_zeros', siZeros, fet_zeros),
('si_freq', siFreq, fet_freq)],
remainder='passthrough')
#New DataFrame
df_data_3 = pd.DataFrame.from_records(
data=column_trans.fit_transform(df_data_2),
columns=df_data_2.columns # las columnas originales deben conservarse en esta transformación
)
Теперь проблема в том, что порядок столбцов изменяется в новом фрейме данных. Посмотрите:
Я нашел «решение», изменяющее dis:
data=column_trans.fit_transform(df_data_2)[:,[6,7,8,0,2,4,1,3,5,9,10,11,12]],
Посмотрите:
Но теперь у меня возникла другая большая проблема, когда я пытаюсь выполнить конвейерную обработку ColumnTransformer, потому что данные будут обрабатываться неправильным образом.