work with tutorial seleccionar how functions data columnas python pandas normalization dataframe

python - with - Normalizar un DataFrame de pandas por fila



seleccionar columnas de un dataframe pandas (2)

¿Cuál es la forma más idiomática de normalizar cada fila de un DataFrame de pandas? La normalización de las columnas es fácil, por lo que una opción (¡muy fea!) Es:

(df.T / df.T.sum()).T

Las reglas de transmisión de pandas evitan que df / df.sum(axis=1) haga esto



Sugeriría utilizar bibliotecas de preprocesamiento de Scikit y transponer su marco de datos según sea necesario:

'''''' Created on 05/11/2015 @author: rafaelcastillo '''''' import matplotlib.pyplot as plt import pandas import random import numpy as np from sklearn import preprocessing def create_cos(number_graphs,length,amp): # This function is used to generate cos-kind graphs for testing # number_graphs: to plot # length: number of points included in the x axis # amp: Y domain modifications to draw different shapes x = np.arange(length) amp = np.pi*amp xx = np.linspace(np.pi*0.3*amp, -np.pi*0.3*amp, length) for i in range(number_graphs): iterable = (2*np.cos(x) + random.random()*0.1 for x in xx) y = np.fromiter(iterable, np.float) if i == 0: yfinal = y continue yfinal = np.vstack((yfinal,y)) return x,yfinal x,y = create_cos(70,24,3) data = pandas.DataFrame(y) x_values = data.columns.values num_rows = data.shape[0] fig, ax = plt.subplots() for i in range(num_rows): ax.plot(x_values, data.iloc[i]) ax.set_title(''Raw data'') plt.show() std_scale = preprocessing.MinMaxScaler().fit(data.transpose()) df_std = std_scale.transform(data.transpose()) data = pandas.DataFrame(np.transpose(df_std)) fig, ax = plt.subplots() for i in range(num_rows): ax.plot(x_values, data.iloc[i]) ax.set_title(''Data Normalized'') plt.show()