Масштабирование / нормализация колонны панд - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть такой фрейм данных:

TOTAL | Name
3232     Jane
382      Jack
8291     Jones

Я бы хотел создать недавно масштабированный столбец в фрейме данных с именем SIZE, где SIZE - это число от 5 до 50.

Например:

TOTAL | Name | SIZE
3232     Jane   24.413
382      Jack   10
8291     Jones  50

Я пробовал

from sklearn.preprocessing import MinMaxScaler
import pandas as pd

scaler=MinMaxScaler(feature_range=(10,50))
df["SIZE"]=scaler.fit_transform(df["TOTAL"])

, но получил Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

Я пробовал другие вещи, такие как созданиеПеречислите, преобразуйте его и добавьте его обратно в фрейм данных, среди прочего.

Какой самый простой способ сделать это?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

В случае, если вы хотите масштабировать только один столбец в кадре данных, вы должны изменить форму значений столбца следующим образом:

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
df['SIZE'] = scaler.fit_transform(df['TOTAL'].values.reshape(-1,1))
0 голосов
/ 25 апреля 2018

Вариант 1
sklearn
Вы видите эту проблему снова и снова, ошибка действительно должна указывать на то, что вам нужно сделать. Вы в основном пропускаете лишнее измерение на входе. Измените df["TOTAL"] на df[["TOTAL"]].

df['SIZE'] = scaler.fit_transform(df[["TOTAL"]])

df
   TOTAL   Name       SIZE
0   3232   Jane  24.413959
1    382   Jack  10.000000
2   8291  Jones  50.000000

Вариант 2
pandas
Желательно, чтобы я обходил склеарн и сам выполнял минимальное-максимальное масштабирование.

a, b = 10, 50
x, y = df.TOTAL.min(), df.TOTAL.max()
df['SIZE'] = (df.TOTAL - x) / (y - x) * (b - a) + a

df
   TOTAL   Name       SIZE
0   3232   Jane  24.413959
1    382   Jack  10.000000
2   8291  Jones  50.000000

Это, по сути, то, что делает скейлер min-max, но без дополнительных затрат на импорт scikit learn (не делайте этого, если не нужно, это тяжелая библиотека).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...