Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Reto 3 | Avanzando a Tareas
Procesamiento Previo de Datos

book
Reto 3

Tarea

Swipe to start coding

La última tarea que hemos preparado para ti es la implementación de ingeniería de características. Trabajarás con el conjunto de datos 'sales_data.csv' y tu tarea será crear nuevas variables y procesar datos categóricos y numéricos.

  1. Utiliza la ingeniería de características para crear nuevas columnas como año, mes y día de la semana a partir de Date
  2. Codifica las columnas categóricas 'Region' y 'Product' utilizando el método de codificación one-hot
  3. Para los datos numéricos ('Sales'), tendrás que escalar los datos

Solución

from sklearn.preprocessing import StandardScaler, MinMaxScaler
import numpy as np
import pandas as pd

# Read the dataset
df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/9c23bf60-276c-4989-a9d7-3091716b4507/datasets/sales_data.csv')

# Convert date column to datetime format
df['Date'] = pd.to_datetime(df['Date'])

# Create new columns based on date column
# 'Year'
# 'Month'
# 'Weekend' - if the day is a weekend, then the value is 1, if not a weekend, then 0
# For 'Weekend' column use .map() function
df['Year'] = df['Date'].dt.year
df['Month'] = df['Date'].dt.month
df['Weekend'] = df['Date'].dt.day_name()
df['Weekend'] = df['Weekend'].map({'Monday': 0, 'Tuesday': 0, 'Wednesday': 0, 'Thursday': 0,
'Friday': 0, 'Saturday': 1, 'Sunday': 1,})

# Drop original date column
df = df.drop('Date', axis=1)

# Create MinMaxScaler
scaler = MinMaxScaler()

# Make one-hot encoding with pd.get_dummies()
one_hot = pd.get_dummies(df[['Region', 'Product']])
# Join the encoded columns
df = df.join(one_hot)
# Drop initial columns
df = df.drop(['Region', 'Product'], axis=1)

# Fit and transform numerical data for the scaler
df[['Sales']] = scaler.fit_transform(df[['Sales']])
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 6. Capítulo 3
from sklearn.preprocessing import StandardScaler, MinMaxScaler
import numpy as np
import pandas as pd

# Read the dataset
df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/9c23bf60-276c-4989-a9d7-3091716b4507/datasets/sales_data.csv')

# Convert date column to datetime format
df['Date'] = pd.to_datetime(df['Date'])

# Create new columns based on date column
# 'Year'
# 'Month'
# 'Weekend' - if the day is a weekend, then the value is 1, if not a weekend, then 0
# For 'Weekend' column use .map() function
df['Year'] = df['Date'].dt.___
df['Month'] = df['Date'].dt.___
df['Weekend'] = df['Date'].dt.day_name()
df['Weekend'] = df['Weekend'].___({'Monday': 0, 'Tuesday': 0, 'Wednesday': 0, 'Thursday': 0,
'Friday': 0, 'Saturday': 1, 'Sunday': 1,})

# Drop original date column
df = df.drop('Date', axis=1)

# Create MinMaxScaler
scaler = MinMaxScaler()

# Make one-hot encoding with pd.get_dummies()
one_hot = pd.___(df[['Region', 'Product']])
# Join the encoded columns
df = df.join(one_hot)
# Drop initial columns
df = df.drop(['Region', 'Product'], axis=1)

# Fit and transform numerical data for the scaler
df[['Sales']] = scaler.___(df[['Sales']])
toggle bottom row
some-alt