Normalize columns of pandas data frame
one easy way by using Pandas: (here I want to use mean normalization)
to use min-max normalization:
Edit: To address some concerns, need to say that Pandas automatically applies colomn-wise function in the code above.
You can use the package sklearn and its associated preprocessing utilities to normalize the data.
import pandas as pdfrom sklearn import preprocessingx = df.values #returns a numpy arraymin_max_scaler = preprocessing.MinMaxScaler()x_scaled = min_max_scaler.fit_transform(x)df = pd.DataFrame(x_scaled)
For more information look at the scikit-learn documentation on preprocessing data: scaling features to a range.
Based on this post: https://stats.stackexchange.com/questions/70801/how-to-normalize-data-to-0-1-range
You can do the following:
def normalize(df): result = df.copy() for feature_name in df.columns: max_value = df[feature_name].max() min_value = df[feature_name].min() result[feature_name] = (df[feature_name] - min_value) / (max_value - min_value) return result
You don't need to stay worrying about whether your values are negative or positive. And the values should be nicely spread out between 0 and 1.