У меня есть кадр данных pandas, который имеет несколько строк и столбцов. Каждый столбец имеет заголовок. Теперь, пока я продолжаю выполнять операции манипуляции данными в pandas, мои заголовки переменных сохраняются. Но если я попробую некоторые функции предварительной обработки данных Sci-kit-learn lib, я в конечном итоге потеряю все свои заголовки, и кадр преобразуется в матрицу чисел.
Я понимаю, почему это происходит, потому что scikit-learn дает numpy ndarray как вывод. И numpy ndarray, являющийся просто матрицей, не имеет имен столбцов.
Но вот что. Если я создаю некоторую модель на моем наборе данных, даже после предварительной обработки исходных данных и попыток какой-либо модели, мне, возможно, придется выполнить еще несколько задач по управлению данными, чтобы запустить другую модель для лучшей подгонки. Без возможности доступа к заголовку столбца сложно выполнять манипуляции с данными, поскольку я, возможно, не знаю, что является индексом конкретной переменной, но проще запомнить имя переменной или даже искать, выполняя df.columns.
Как преодолеть это?
EDIT1: Редактирование с моментальным снимком данных образца.
Pclass Sex Age SibSp Parch Fare Embarked
0 3 0 22 1 0 7.2500 1
1 1 1 38 1 0 71.2833 2
2 3 1 26 0 0 7.9250 1
3 1 1 35 1 0 53.1000 1
4 3 0 35 0 0 8.0500 1
5 3 0 NaN 0 0 8.4583 3
6 1 0 54 0 0 51.8625 1
7 3 0 2 3 1 21.0750 1
8 3 1 27 0 2 11.1333 1
9 2 1 14 1 0 30.0708 2
10 3 1 4 1 1 16.7000 1
11 1 1 58 0 0 26.5500 1
12 3 0 20 0 0 8.0500 1
13 3 0 39 1 5 31.2750 1
14 3 1 14 0 0 7.8542 1
15 2 1 55 0 0 16.0000 1
Вышеуказанное в основном представляет собой фрейм данных pandas. Теперь, когда я сделаю это в этом фрейме данных, он разделит заголовки столбцов.
from sklearn import preprocessing
X_imputed=preprocessing.Imputer().fit_transform(X_train)
X_imputed
Новые данные имеют массив numpy и, следовательно, имена столбцов лишены.
array([[ 3. , 0. , 22. , ..., 0. ,
7.25 , 1. ],
[ 1. , 1. , 38. , ..., 0. ,
71.2833 , 2. ],
[ 3. , 1. , 26. , ..., 0. ,
7.925 , 1. ],
...,
[ 3. , 1. , 29.69911765, ..., 2. ,
23.45 , 1. ],
[ 1. , 0. , 26. , ..., 0. ,
30. , 2. ],
[ 3. , 0. , 32. , ..., 0. ,
7.75 , 3. ]])
Поэтому я хочу сохранить имена столбцов, когда выполняю некоторые манипуляции с данными в моем фрейме данных pandas.