Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

182
Views
Conservar el orden de las columnas después de aplicar sklearn.compose.ColumnTransformer

Estoy usando los módulos Pipeline y ColumnTransformer de la biblioteca sklearn para realizar la ingeniería de funciones en mi conjunto de datos.

El conjunto de datos inicialmente se ve así:

fecha núm_bloque_fecha tienda_id Identificación del artículo precio del articulo
02.01.2013 0 59 22154 999.00
03.01.2013 0 25 2552 899.00
05.01.2013 0 25 2552 899.00
06.01.2013 0 25 2554 1709.05
15.01.2013 0 25 2555 1099.00
 $> data.info() <class 'pandas.core.frame.DataFrame'> RangeIndex: 2935849 entries, 0 to 2935848 Data columns (total 6 columns): # Column Dtype --- ------ ----- 0 date object 1 date_block_num object 2 shop_id object 3 item_id object 4 item_price float64 dtypes: float64(2), int64(3), object(1) memory usage: 134.4+ MB

Entonces tengo las siguientes transformaciones:

 num_column_transformer = ColumnTransformer( transformers=[ ("std_scaler", StandardScaler(), make_column_selector(dtype_include=np.number)), ], remainder="passthrough" ) num_pipeline = Pipeline( steps=[ ("percent_item_cnt_day_per_shop", PercentOverTotalAttributeWholeAdder( attribute_percent_name="shop_id", attribute_total_name="item_cnt_day", new_attribute_name="%_item_cnt_day_per_shop") ), ("percent_item_cnt_day_per_item", PercentOverTotalAttributeWholeAdder( attribute_percent_name="item_id", attribute_total_name="item_cnt_day", new_attribute_name="%_item_cnt_day_per_item") ), ("percent_sales_per_shop", SalesPerAttributeOverTotalSalesAdder( attribute_percent_name="shop_id", new_attribute_name="%_sales_per_shop") ), ("percent_sales_per_item", SalesPerAttributeOverTotalSalesAdder( attribute_percent_name="item_id", new_attribute_name="%_sales_per_item") ), ("num_column_transformer", num_column_transformer), ] )

Los primeros cuatro Transformers crean cuatro nuevas variables numéricas diferentes y el último aplica StandardScaler sobre todos los valores numéricos del conjunto de datos.

Después de ejecutarlo, obtengo los siguientes datos:

0 1 2 3 4 5 6 7 8
-0.092652 -0.765612 -0.173122 -0.756606 -0.379775 02.01.2013 0 59 22154
-0.092652 1.557684 -0.175922 1.563224 -0.394319 03.01.2013 0 25 2552
-0.856351 1.557684 -0.175922 1.563224 -0.394319 05.01.2013 0 25 2552
-0.092652 1.557684 -0.17613 1.563224 -0.396646 06.01.2013 0 25 2554
-0.092652 1.557684 -0.173278 1.563224 -0.380647 15.01.2013 0 25 2555

Me gustaría tener el siguiente resultado:

fecha núm_bloque_fecha tienda_id Identificación del artículo precio del articulo %_item_cnt_day_per_shop %_item_cnt_day_per_item %_ventas_por_tienda %_ventas_por_artículo
02.01.2013 0 59 22154 -0.092652 -0.765612 -0.173122 -0.756606 -0.379775
03.01.2013 0 25 2552 -0.092652 1.557684 -0.175922 1.563224 -0.394319
05.01.2013 0 25 2552 -0.856351 1.557684 -0.175922 1.563224 -0.394319
06.01.2013 0 25 2554 -0.092652 1.557684 -0.17613 1.563224 -0.396646
15.01.2013 0 25 2555 -0.092652 1.557684 -0.173278 1.563224 -0.380647

Como puede ver, las columnas 5 , 6 , 7 y 8 de la salida corresponden a las primeras cuatro columnas del conjunto de datos original. Por ejemplo, no sé dónde se encuentra la función item_price en la tabla de salida.

  1. ¿Cómo podría preservar el orden de las columnas y los nombres? Después de eso, quiero hacer ingeniería de características sobre variables categóricas y mis Transformers hacen uso del nombre de la columna de características.
  2. ¿Estoy usando correctamente la API de Scikit-Learn?
over 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!