No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12 Días
0 Hrs
49 Min
9 Seg

Preparando los datos

5/17
Recursos

Aportes 19

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

No me agrada

df_data.isnull().sum()

Preferi utilizar las funciones missing que creamos en el curso de imputacion de valores faltantes.

Otra forma de importar la data sin descargarla es usando el API de kaggle

!pip install opendatasets
import opendatasets as od
od.download('https://www.kaggle.com/datasets/blastchar/telco-customer-churn')
df_data = pd.read_csv('/content/telco-customer-churn/WA_Fn-UseC_-Telco-Customer-Churn.csv')

get_dummies duplica los features en “feature_yes” y “feature_No”, esto pudiera ser redundante. si no queremos tener esta “duplicidad” podemos utilizar:
df_data_processing = pd.get_dummies(df_data_processing, drop_first=True).

Como propuesta, deberían de incluir en la sección de recursos el archivo tipo plantilla. Para que podamos irlo rellenando nosotros

Por el momento los archivos que incluyen ya están respondidos.

errors='coerce'

indica que si no se puede convertir un elemento de la columna TotalCharges a un número, se debe reemplazar con un valor especial NaN (Not a Number)

Esto se conoce como “coerción” porque se está forzando la conversión a un tipo de datos numérico, y si no es posible, se está forzando el uso de NaN en su lugar

Hola, yo resolví todo el problema por mi cuenta antes de ver la explicación, cuando vi que la columna ‘TotalCharges’ estaba dada como categórica intenté convertirla a numérica con astype(float),sin embargo, me aparecía el problema d que ciertos valores " " no podían ser convertidos a numéricos, por lo que lo primero que hice fue determinar que valores estaban como vacíos en esa columna

Posteriormente procedí a eliminar estos valores y a convertir esta columna a numérica.


Al final resulta los mismo que hace el profesor usando pd.to_numeric ,solo que haciendo esto los valores vacíos pasan a ser NaN y luego se tienen que eliminar, lo comprobé creando otro dataset y comparando la columnas donde anteriormente habían valores vacíos

Esto es lo que hace la variable get.dummies más detalladamente:

  • pd.get_dummies() es una función de la biblioteca pandas en Python que se utiliza para realizar una codificación one-hot de variables categóricas en un DataFrame. La codificación one-hot es un proceso que convierte variables categóricas en un conjunto de variables binarias (0 o 1) que representan la presencia o ausencia de una categoría en los datos originales. Este enfoque es comúnmente utilizado en el preprocesamiento de datos para que los algoritmos de aprendizaje automático puedan trabajar con variables categóricas.

Aquí hay una descripción de cómo funciona pd.get_dummies():

  • Entrada: La función toma como entrada un DataFrame de pandas que contiene una o más columnas con variables categóricas que deseas codificar.

  • Salida: pd.get_dummies() produce un nuevo DataFrame donde las columnas categóricas originales se han convertido en columnas binarias (0 o 1), una columna por categoría. Cada columna binaria representa una categoría específica y se llama “indicador” o “dummy variable”. Cuando una fila tiene una categoría, su columna correspondiente tendrá un valor de 1; de lo contrario, será 0.

Por ejemplo, si tienes una columna llamada “Color” con valores categóricos como “Rojo”, “Verde” y “Azul”, pd.get_dummies() generará tres nuevas columnas llamadas “Color_Rojo”, “Color_Verde” y “Color_Azul”, y asignará 1 o 0 según el color presente en cada fila.

Este proceso es útil en el análisis de datos y en la construcción de modelos de aprendizaje automático, ya que permite trabajar con variables categóricas en algoritmos que requieren datos numéricos, como regresión lineal, regresión logística y otros modelos. La codificación one-hot evita la asignación incorrecta de importancia numérica a las categorías y garantiza que cada categoría se trate de manera independiente en el modelo.

Recordemos que:

df_data.head(5)

es igual a escribir:

df_data.head()
Esta clase es una de las más interesantes, no sabía que los dataframes de pandas tenían esos atributos como el de remplazar
OneHotEncoding Perron perron: ```from sklearn.preprocessing import OneHotEncoder categorical\_cols = df.select\_dtypes(include=\['object']).columnsencoder = OneHotEncoder(sparse\_output=False, drop='first') encoded\_array = encoder.fit\_transform(df\[categorical\_cols])encoded\_df = pd.DataFrame(    encoded\_array,     columns=encoder.get\_feature\_names\_out(categorical\_cols)) encoded\_df.reset\_index(drop=True, inplace=True)df.drop(categorical\_cols, axis=1, inplace=True)df.reset\_index(drop=True, inplace=True) \# Concatenate the DataFramesdf\_final = pd.concat(\[df, encoded\_df], axis=1) df\_final.head()df = df\_finaldf.head()```
Pase de bools a int64 de esta manera: ```python categorical_cols = data_processing.select_dtypes(include=['object']).columns data_processing = pd.get_dummies(data_processing, columns=categorical_cols, drop_first=True) bool_cols = data_processing.select_dtypes(include=['bool']).columns data_processing[bool_cols] = data_processing[bool_cols].astype('int64') data_processing.info() ``` ![](https://static.platzi.com/media/user_upload/image-c48faf30-807b-4b4a-b426-cb7f83c34f4a.jpg) ![](https://static.platzi.com/media/user_upload/image-87c03fea-b150-4244-810a-750f4b3eb225.jpg)
Les recomiendo hacer el one-hot encoding con el drop\_first para evitar la multicolinealidad ```js df_data_processing = pd.get_dummies(df_data_processing, drop_first=True) ```
Otra forma de codifica las variables churn ```js label_encoder = LabelEncoder() df_data['Churn'] = label_encoder.fit_transform(df_data['Churn']) ```

Interesante este metodo de conversion, no sabia nada. Ahora si tengo ganas de mejorar mis capacidades.

porque cuando realiza el get\_dummies las variables categoricas les cambia el nombre, agregando un (\_) mas el nombre de la variable? me genera el proble de crear muchisimas columnas mas de las que tiene el dataset original, porque=>

Esto es lo que hace el comando dropna más el arugmento inpalce_True =

  • inplace=True: Este argumento se utiliza para indicar que deseas realizar la eliminación de las filas directamente en el DataFrame df_data en su lugar. Si inplace está configurado en True, los cambios se aplican al DataFrame original y no se crea un nuevo DataFrame. Si se establece en False o no se proporciona, se devuelve un nuevo DataFrame con las filas eliminadas, y el DataFrame original permanece sin cambios.

Entonces, cuando ejecutas df_data.dropna(inplace=True), elimina todas las filas en df_data que contienen valores nulos y aplica este cambio directamente en el DataFrame original df_data. El resultado es que df_data ahora contendrá solo las filas que no tienen valores nulos en ninguna de sus columnas. Las filas con valores nulos se han eliminado del DataFrame.

Comandos similares a la misma familia de comandos como dropna:

  • .fillna(): Este método se utiliza para rellenar valores nulos con un valor específico o una estrategia de relleno. Puedes proporcionar un valor constante, un diccionario de relleno por columna o utilizar métodos de interpolación.

  • .isnull() y .notnull(): Estos métodos te permiten crear máscaras booleanas que indican dónde se encuentran los valores nulos y no nulos en un DataFrame. Son útiles para filtrar o seleccionar datos basados en la presencia o ausencia de valores nulos.

  • .interpolate(): Este método se utiliza para realizar la interpolación de valores nulos en una serie o DataFrame. La interpolación calcula valores intermedios para rellenar los valores nulos basándose en los valores adyacentes.

  • .drop(): Aunque su nombre es similar al de .dropna(), el método .drop() se utiliza para eliminar filas o columnas específicas en un DataFrame, pero puedes especificar etiquetas de fila o columna en lugar de valores nulos.

  • .replace(): Este método se utiliza para reemplazar valores específicos, incluidos los valores nulos, por otros valores en un DataFrame.

  • .ffill() y .bfill(): Estos métodos se utilizan para rellenar valores nulos hacia adelante (ffill) o hacia atrás (bfill) utilizando el valor más cercano en la misma columna.

  • .melt(): Esta función se utiliza para realizar una operación de “melt” o “unpivot” en un DataFrame, lo que puede ayudar a lidiar con datos faltantes.

  • .combine_first(): Este método se utiliza para combinar dos DataFrames, rellenando los valores nulos en el DataFrame original con los valores del otro DataFrame.

Estos son algunos ejemplos de los métodos y funciones disponibles en pandas para el manejo de valores nulos y la limpieza de datos. La elección del método adecuado dependerá de la naturaleza de tus datos y del tipo de operación que necesites realizar.

Tan rápido que hizo la limpieza y lo de más en un video de 14 minutos!, si hubiera empezado por estos videos no hubiera perdido mi tiempo en los de limpieza instalando paquetes que probablemente nunca utilizaré

Yo converti los valores del target usando where de numpy que es igual a los condicionales de excel

df_data['Churn'] = df_data['Churn'].apply(lambda x: np.where(x == 'Yes', 1, 0))