No tienes acceso a esta clase

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

Borrar filas, columnas y copiar información

10/28
Recursos

Aportes 27

Preguntas 4

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Una estrategia que resulta ser bastante común y útil en ciertas ocasiones, aunque se debe tener cuidado de si tiene sentido aplicarla, es eliminar las filas o columnas que tengan valores nan. una manera sencilla de hacerlo es:

''' para el data frame meteoritos(df), por ejemplo la variable masa tiene valores nan, esto lo podemos ver haciendo primero viendo que variables tienen valores nan.'''

df.isna().any()

''' si nos concetramos en la variable masa, veremos la cantidad de 
nan's que se tienen.'''

df['masa'].isna().value_counts()

''' ahora si se quiere borrar los nan hacemos:'''

df['masa']=df['masa].dropna()

''' si queremos borrar los nan de todas las variables
 axis=0 para filas y 1 para borrar  columnas con nan
 how = 'any' o 'all'. el primero borra la fila o columna si algunas entradas tienen nan, el segundo solo la borra si todos los valores son nan'''


df.dropna(axis= , how=)





Para borrar líneas donde el valor en la columna ‘mass’ = 21.0

df_meteorites.drop(df_meteorites[df_meteorites['mass']== 21.0].index)```

¿Qué aprenderemos en esta clase?

Vamos a aprender a como borrar los registros de un dataframe usando la función drop, así mismo a como copiar correctamente un dataframe.

Nota: En la rutina de procesamiento de datos es ideal que siempre se mantenga la fuente de datos original, si queremos hacer modificaciones en el dataframe siempre es recomendable hacer una copia en donde se puedan hacer experimentos, siempre y cuando se conserve la fuente original. Lo ideal para el Profesor DaVinci que hace en sus rutinas es copiarlo y borrar aquellas variables que no me interesan y me pueden llegar a contaminar el análisis.

La diferencia entre Deep copy y shallow copy (que es el otro tipo de copia), es que el shallow copy sigue referenciado al mismo espacio de memoria asi que si cambiamos algo en una variable el cambio se reflejará en el otro también. En cambio con deep copy lo que hacemos más bien es Clonar los datos y separarlos completamente si cambiamos un valor no afectará para nada lo anterior.

Si copy() se deja vacio, las modificaciones en la nueva variable no se reflejaran en la variable original.

df = df_meteorite.copy()

Ya que por default, deep = True.

axis = 0 -> para filas
axis = 1 -> para columnas

Borrar columnas y dato

  • df.drop([‘columna’], axis=0/1) : el 0 borra utilizando la columna como referencia del índice o el 1 como nombre de la columna
  • Por defecto toma el axis=0, ej: df.drop([0,2,4]) borra las filas con el índice 0,2,4
  • df.drop(columns=[‘columna1’,‘columna2’], index=[0,2,4,6]) borra los registros para la columna 1 y 2 y además los índices 0, 2, 4 y 6
  • df2 = df.copy( deep=True) es lo recomendable para trabajar sobre una copia
  • deep=True es importante para que nuestro df2 genera una copia real del df original, en lugar de que guarde una referencia al original como pasa por defecto si hacemos df2 = df

Excelente, las copias de seguridad nunca pasaran de moda 😉

Aqui tienen un script en modo resumen de la clase,
espero que les sea de utilidad.

Tengo un problema , estoy leyendo mi archivo EXCEL, y por cuestiones de practica NECESITO eliminar las columnas unnamed, para que me quede como nombre de las columnas lo correspondiente “Codigo cliente”, “Razon Social” “Origen” “Ciudad”
¿Como hago para eliminar esos Unnamed ! HELP

He visto que para drop no es necesario porque si no se pone inplace=True igual va a retornar una copia.

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.drop.html#pandas-dataframe-drop

hasta ahora buen profe y buen contenido

Borrar columna

Hice una copia sin deep = True, altere la copia pero el original no se alterba como menciona el docente esto debido a que si copy() se deja vacio, las modificaciones en la nueva variable no se reflejaran en la variable original.

Con respecto a la funcionalidad de deep copy. Nos permite clonar los datos, esto significa que almacenamos la misma información pero como diferentes objetos en memoria.

En su código pueden ver la ubicación en memoria de una variable con el comando id():

id(df_meteorites)
id(df)

Si utilizaron clonación (deep=True) podrán ver que están almacenados en diferentes ubicaciones.

En mi humilde opinion el copy profundo es el primer paso que se debe hacer en la rutina de análisis para cada DF.

Entendido y puesto en práctica

bueno… sumando un poco, probe con iloc que sirve para seleccionar columnas y filas por su puesto dentro de DataFrame y la selección q usamos lo hace por el nombre de la variable, pero, da resultados similares
df[‘mass’] y df2.iloc[:, [4]]
df.iloc[:, [4]].isna().value_counts() y df[‘mass’].isna().value_counts()
mass **
False 45585 False 45585
True 131 True 131
dtype: int64 Name:
mass**, dtype: int64

Pero, no funciona para usar drop()

Para eliminar columnas. Se elimina la columna ‘ones’

df_meteorites.drop('ones',axis=1)

Para eliminar filas. Se elimina la fila 45711

df_meteorites.drop(45711, axis=0)

Borrar filas

Copiar un dataframe

Eliminar columnas (DROP)

df_sample = df_sample.dropna()

elimina todas las celdad cin nan

importante el: variable = df.copy(deep = True) para hacer experimentos sin modificar nuestro data frame original

interesante cada día me gusta mas este curso

#borra las filas que tengan nan en 'mass' 
df = df.dropna(subset=['mass'])