В мире анализа данных масштабирование – это распространенный метод, используемый для преобразования числовых данных в стандартизированный диапазон. Однако при выполнении операций масштабирования часто возникает проблема сохранения исходных имен столбцов. В этой статье мы рассмотрим несколько способов решения этой проблемы и обеспечения того, чтобы имена столбцов оставались неизменными даже после масштабирования. Итак, приступим!
Метод 1: использование Pandas DataFrame
Библиотека Pandas предоставляет мощный набор инструментов для манипулирования данными. Чтобы сохранить имена столбцов после масштабирования, вы можете использовать функцию DataFrame. Вот пример того, как этого можно добиться:
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
# Create a sample DataFrame
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
# Scale the data using MinMaxScaler
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(df.values)
# Create a new DataFrame with original column names
scaled_df = pd.DataFrame(scaled_data, columns=df.columns)
Метод 2: использование массивов NumPy
Если вы предпочитаете работать с массивами NumPy, вы можете использовать следующий подход:
import numpy as np
from sklearn.preprocessing import MinMaxScaler
# Create a sample NumPy array
data = np.array([[1, 4], [2, 5], [3, 6]])
# Scale the data using MinMaxScaler
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data)
# Create a new NumPy array with original column names
scaled_array = np.column_stack((scaled_data[:, 0], scaled_data[:, 1]))
Метод 3: пользовательская функция с сопоставлением
Другой способ сохранить имена столбцов после масштабирования — написать специальную функцию, которая сопоставляет масштабированные значения с соответствующими именами столбцов. Вот пример:
from sklearn.preprocessing import MinMaxScaler
def scale_with_names(data):
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data)
scaled_with_names = {}
for i, column in enumerate(data.columns):
scaled_with_names[column] = scaled_data[:, i]
return pd.DataFrame(scaled_with_names)
# Usage
scaled_df = scale_with_names(df)