Te damos la contestación a este disgusto, o por lo menos eso creemos. Si presentas inquietudes compártelo en un comentario y sin dudarlo te ayudaremos
Solución:
Podrías convertir el DataFrame como un numpy array utilizando as_matrix()
. Ejemplo en un conjunto de datos aleatorio:
Editar:
Cambiando as_matrix()
para values
(no cambia el resultado) según la última oración del as_matrix()
documentos anteriores:
Generalmente, se recomienda usar ‘.valores’.
import pandas as pd
import numpy as np #for the random integer example
df = pd.DataFrame(np.random.randint(0.0,100.0,size=(10,4)),
index=range(10,20),
columns=['col1','col2','col3','col4'],
dtype='float64')
Tenga en cuenta que los índices son 10-19:
In [14]: df.head(3)
Out[14]:
col1 col2 col3 col4
10 3 38 86 65
11 98 3 66 68
12 88 46 35 68
Ahora fit_transform
el DataFrame para obtener el scaled_features
array
:
from sklearn.preprocessing import StandardScaler
scaled_features = StandardScaler().fit_transform(df.values)
In [15]: scaled_features[:3,:] #lost the indices
Out[15]:
array([[-1.89007341, 0.05636005, 1.74514417, 0.46669562],
[ 1.26558518, -1.35264122, 0.82178747, 0.59282958],
[ 0.93341059, 0.37841748, -0.60941542, 0.59282958]])
Asigne los datos escalados a un DataFrame (Nota: use el index
y columns
argumentos de palabras clave para mantener sus índices originales y nombres de columnas:
scaled_features_df = pd.DataFrame(scaled_features, index=df.index, columns=df.columns)
In [17]: scaled_features_df.head(3)
Out[17]:
col1 col2 col3 col4
10 -1.890073 0.056360 1.745144 0.466696
11 1.265585 -1.352641 0.821787 0.592830
12 0.933411 0.378417 -0.609415 0.592830
Edición 2:
Encontré el paquete sklearn-pandas. Se enfoca en hacer que scikit-learn sea más fácil de usar con pandas. sklearn-pandas
es especialmente útil cuando necesita aplicar más de un tipo de transformación a los subconjuntos de columnas del DataFrame
, un escenario más común. Está documentado, pero así es como lograría la transformación que acabamos de realizar.
from sklearn_pandas import DataFrameMapper
mapper = DataFrameMapper([(df.columns, StandardScaler())])
scaled_features = mapper.fit_transform(df.copy(), 4)
scaled_features_df = pd.DataFrame(scaled_features, index=df.index, columns=df.columns)
import pandas as pd
from sklearn.preprocessing import StandardScaler
df = pd.read_csv('your file here')
ss = StandardScaler()
df_scaled = pd.DataFrame(ss.fit_transform(df),columns = df.columns)
El df_scaled será el marco de datos ‘mismo’, solo que ahora con los valores escalados
features = ["col1", "col2", "col3", "col4"]
autoscaler = StandardScaler()
df[features] = autoscaler.fit_transform(df[features])
Comentarios y valoraciones del tutorial
Nos puedes añadir valor a nuestra información colaborando tu experiencia en las crónicas.