Python нормализация данных dataframe

How to Normalize Column or DataFrame in Pandas

In this tutorial, we’ll learn how to normalize columns or the whole DataFrame in Pandas. We will show different ways like:

(1) Min Max normalization

(2) Mean normalization

(3) biased normalization

scaler.fit_transform(df.iloc[. ].to_numpy()) 

Let’s cover all examples in more detail.

Setup

For this post we are creating example DataFrame with 3 numeric columns:

import pandas as pd data = df = pd.DataFrame(data=data) 
day temp humidity
0 1 9 0.89
1 2 8 0.86
2 3 6 0.54
3 4 13 0.73
4 5 10 0.45

1: Min Max normalization in Pandas

So let’s start by min max normalization (called also min max scaling) in Pandas and Python.

Single column

To do min max scaling for a single column we can do:

(df['humidity']-df['humidity'].min())/(df['humidity'].max()-df['humidity'].min()) 

The result is normalized Series:

0 0.88 1 0.82 2 0.18 3 0.56 4 0.00 5 0.36 6 1.00 7 0.44 Name: humidity, dtype: float64 

Checking data next to the original column:

humidity_norm humidity
0 0.88 0.89
1 0.82 0.86
2 0.18 0.54
3 0.56 0.73
4 0.00 0.45

All columns

To normalize all columns of a DataFrame we can use:

day temp humidity
0 0.000000 0.333333 0.88
1 0.142857 0.222222 0.82
2 0.285714 0.000000 0.18
3 0.428571 0.777778 0.56
4 0.571429 0.444444 0.00

2: Mean normalization in Pandas

Next we can see how to do mean normalization in Pandas and Python.

Single column

For a single column we can apply mean normalization by:

(df['humidity'] - df['humidity'].mean())/df['humidity'].std() 

The result and the original values:

humidity_norm humidity
0 0.993475 0.89
1 0.823165 0.86
2 -0.993475 0.54
3 0.085155 0.73
4 -1.504406 0.45

All columns

To normalize the whole DataFrame with mean normalization we can do:

day temp humidity
0 -1.428869 -0.353553 0.993475
1 -1.020621 -0.707107 0.823165
2 -0.612372 -1.414214 -0.993475
3 -0.204124 1.060660 0.085155
4 0.204124 0.000000 -1.504406

3: Biased normalization in Pandas

To perform biased normalization in Pandas we can use the library sklearn . The results will differ from the Pandas normalization.

import pandas as pd from sklearn.preprocessing import StandardScaler scaler = StandardScaler() scaler.fit_transform(df.to_numpy()) 
0 1 2
0 -1.527525 -0.377964 1.062070
1 -1.091089 -0.755929 0.880001
2 -0.654654 -1.511858 -1.062070
3 -0.218218 1.133893 0.091035
4 0.218218 0.000000 -1.608277

4: Normalize rows in Pandas

There are multiple ways to normalize rows:

Normalize rows by their sum

To normalize row based on the sum of the row in Pandas we can do:

day temp humidity
0 0.091827 0.826446 0.081726
1 0.184162 0.736648 0.079190
2 0.314465 0.628931 0.056604
3 0.225606 0.733221 0.041173
4 0.323625 0.647249 0.029126

Transpose

To normalize row wise in Pandas we can combine:

import pandas as pd from sklearn import preprocessing data = df.T.values scaler = preprocessing.MinMaxScaler() pd.DataFrame(scaler.fit_transform(data)).T 

So after using df.values we get:

array([[0.0135635 , 1. , 0. ], [0.15966387, 1. , 0. ], [0.45054945, 1. , 0. ], [0.26650367, 1. , 0. ], [0.47643979, 1. , 0. ], [0.3736952 , 1. , 0. ], [0.7515528 , 1. , 0. ], [0.78563773, 1. , 0. ]]) 
array([[0. , 0.33333333, 0.88 ], [0.14285714, 0.22222222, 0.82 ], [0.28571429, 0. , 0.18 ], [0.42857143, 0.77777778, 0.56 ], [0.57142857, 0.44444444, 0. ], [0.71428571, 1. , 0.36 ], [0.85714286, 0.33333333, 1. ], [1. , 0.44444444, 0.44 ]]) 

Conclusion

In this article we learned how to normalize columns and DataFrame in Pandas. Different ways of normalization were covered like — biased, unbiased, normalization per sum.

We also saw how to normalize rows of a DataFrame. Normalizing data is very useful in machine learning and visualizing data.

By using DataScientYst — Data Science Simplified, you agree to our Cookie Policy.

Источник

2 простых способа нормализовать данные в Python

В этом руководстве мы узнаем, как нормализовать данные в Python. При нормализации меняем масштаб данных. Чаще всего масштабирование данных изменяется в диапазоне от 0 до 1.

Почему нам нужно нормализовать данные в Python?

Алгоритмы машинного обучения, как правило, работают лучше или сходятся быстрее, когда различные функции (переменные) имеют меньший масштаб. Поэтому перед обучением на них моделей машинного обучения данные обычно нормализуются.

Нормализация также делает процесс обучения менее чувствительным к масштабу функций. Это приводит к улучшению коэффициентов после тренировки.

Этот процесс повышения пригодности функций для обучения путем изменения масштаба называется масштабированием функций.

Формула нормализации приведена ниже:

Нормализация</p data-lazy-src=

Затем нам нужно выбрать столбец и преобразовать его в массив. Мы собираемся использовать столбец total_bedrooms .

from sklearn import preprocessing x_array = np.array(housing['total_bedrooms']) normalized_arr = preprocessing.normalize([x_array]) print(normalized_arr) 
[[0.01437454 0.02129852 0.00194947 . 0.00594924 0.00618453 0.00336115]] 

Как нормализовать набор данных без преобразования столбцов в массив?

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

from sklearn import preprocessing import pandas as pd housing = pd.read_csv("/content/sample_data/california_housing_train.csv") d = preprocessing.normalize(housing) scaled_df = pd.DataFrame(d, columns=names) scaled_df.head() 

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

Использование MinMaxScaler() для нормализации данных в Python

Когда дело доходит до нормализации данных, Sklearn предоставляет еще один вариант: MinMaxScaler.

Это более популярный выбор для нормализации наборов данных.

Вот код для нормализации набора данных жилья с помощью MinMaxScaler:

from sklearn import preprocessing import pandas as pd housing = pd.read_csv("/content/sample_data/california_housing_train.csv") scaler = preprocessing.MinMaxScaler() names = housing.columns d = scaler.fit_transform(housing) scaled_df = pd.DataFrame(d, columns=names) scaled_df.head() 

MinMaxScaler

Вы можете видеть, что значения на выходе находятся между (0 и 1).

MinMaxScaler также дает вам возможность выбрать диапазон функций. По умолчанию диапазон установлен на (0,1). Посмотрим, как изменить диапазон на (0,2).

from sklearn import preprocessing import pandas as pd housing = pd.read_csv("/content/sample_data/california_housing_train.csv") scaler = preprocessing.MinMaxScaler(feature_range=(0, 2)) names = housing.columns d = scaler.fit_transform(housing) scaled_df = pd.DataFrame(d, columns=names) scaled_df.head() 

диапазон: (0,2)</p data-lazy-src=

Как нормализовать столбцы в Pandas DataFrame

Часто вам может понадобиться нормализовать значения данных одного или нескольких столбцов в кадре данных pandas.

В этом руководстве объясняются два способа сделать это:

1. Мин-макс нормализация

  • Цель: Преобразует каждое значение данных в значение от 0 до 1.
  • Формула: Новое значение = (значение – мин.) / (макс. – мин.)

2. Средняя нормализация

  • Цель: Масштабирует значения таким образом, чтобы среднее значение всех значений было равно 0 и станд. разв. 1.
  • Формула: Новое значение = (значение – среднее значение) / (стандартное отклонение)

Давайте рассмотрим пример использования каждого метода в кадре данных pandas.

Пример 1: Мин-макс нормализация

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame print(df) points assists rebounds 0 25 5 11 1 12 7 8 2 15 7 10 3 14 9 6 4 19 12 6 

Мы можем использовать следующий код, чтобы применить минимальную и максимальную нормализацию к каждому столбцу в DataFrame:

(df-df.min ())/(df.max ()-df.min ()) points assists rebounds 0 1.000000 0.000000 1.0 1 0.000000 0.285714 0.4 2 0.230769 0.285714 0.8 3 0.153846 0.571429 0.0 4 0.538462 1.000000 0.0 

Максимальное значение в каждом столбце теперь равно 1 , а минимальное значение в каждом столбце теперь равно 0 , а все остальные значения находятся в диапазоне от 0 до 1.

Пример 2: Нормализация среднего

Еще раз предположим, что у нас есть следующий кадр данных pandas:

import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame print(df) points assists rebounds 0 25 5 11 1 12 7 8 2 15 7 10 3 14 9 6 4 19 12 6 

Мы можем использовать следующий код для применения нормализации среднего значения к каждому столбцу в DataFrame:

(df-df.mean ())/df.std() points assists rebounds 0 1.554057 -1.133893 1.227881 1 -0.971286 -0.377964 -0.087706 2 -0.388514 -0.377964 0.789352 3 -0.582772 0.377964 -0.964764 4 0.388514 1.511858 -0.964764 

Значения в каждом столбце теперь нормализованы таким образом, что среднее значение значений в каждом столбце равно 0, а стандартное отклонение значений в каждом столбце равно 1.

Если конкретная точка данных имеет нормализованное значение больше 0, это указывает на то, что точка данных больше, чем среднее значение ее столбца. И наоборот, нормализованное значение меньше 0 указывает на то, что точка данных меньше среднего значения столбца.

Источник

Читайте также:  Php работа с файлами ссылками
Оцените статью