No tienes acceso a esta clase

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

Agregar o eliminar datos con Pandas

14/24
Recursos

Muchas ocasiones necesitamos agregar, eliminar o separar datos y pandas nos ofrece varias funciones para que este proceso se vuelva mucho más sencillo.

  • Muestra las primeras 5 líneas del DataFrame
df_books.head() 
---> muestra las primeras 5 lineas del dataFrame
  • Eliminar columnas de la salida pero no del DataFrame
df_books.drop('Genre', axis=1).head()
---> #elimina la columna Genre de la salida pero no del dataFrame
  • Eliminar una columna
del df_books['Price'] 
---> #elimina la columna Price del dataFrame
  • Eliminar filas
df_books.drop(0, axis=0)
---> #elimina la fila 0 del dataFrame
  • Eliminar un conjunto de filas mediante una lista
df_books.drop([0,1,2], axis=0)
---> #elimina las filas 0, 1 y 2 del dataFrame
  • Elimina un conjunto de filas mediante un rango
df_books.drop(range(0,10), axis=0)
---> #elimina las primeras 10 filas del dataFrame
  • Agregar una nueva columna con valores Nan
df_books['Nueva_columna'] = np.nan
---> #Crea una nueva columna con el nombre de Nueva_columna de valores Nan
  • Mostrar el número de filas o columnas que tiene un DataFrame
df_books.shape[0]
---> #Muestra el numero de filas que posee el dataFrame
  • Agregar valores a una nueva columna
data = np.arange(0, df_books.shape[0])
  • Crear una nueva columna y agregar los valores almacenados en el array
df_books['Rango'] = data
---> #Crea una nueva columna llamada Rango con los valores del array 
  • Para añadir filas se utiliza la función append de Python añadiendo como parámetro una lista, diccionario o añadiendo los valores manualmente.
df_books.append(df_books)
---> #Duplica las filas del dataFrame porque se agrega a si mismo

Contribución creada por: Edward Giraldo.

Aportes 11

Preguntas 0

Ordenar por:

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

Si quieren borrar un elemento en especifico por ejemplo un autor

Obtenemos los indices donde se encuentra el autor que queremos borrar

index_author=df_books[df_books['Author']=="Fredrik Backman"].index
index_author

Le pasamos ese indice a drop para borrarlo

df_books.drop(index_author,inplace=True)
df_books.head(10)

Carlos Excelente clase!

Una buena practica antes del iniciar la limpieza de la data, es generar una copia profunda del DataFrame:
df_copy = df.copy(deep=True), en caso de no colocar deep=True solo se generara una shallow copy (solo referencias de la data y el indice) y cualquier cambio del df original afectara el Shallow copy y viceversa.

Para agregar toda una fila podemos usar diccionarios, ejemplo:

df.append({'Name':'Cien años de Soledad', 'Author':'Gabriel García Márquez', "User Rating": 4.8, 'Reviews':20000,'Year':1967, 'Price':25}, ignore_index = True)```

Agregar o eliminar datos de Pandas

  • Mostrar las primeras 5 filas del dataFrame
import pandas as pd
import numpy as np

df_books = pd.read_csv('bestsellers-with-categories.csv', sep=',', header=0)
df_books.head() ---> #muestra las primeras 5 lineas del dataFrame
  • Eliminar columnas de la salida pero no del dataFrame
df_books.drop('Genre', axis=1).head() #axis 1 = columnas. axis 2 = filas
----> #elimina la columna Genre de la salida pero no del dataFrame
  • Eliminar una columna del dataFrame
del df_books['Price'] 
----> #elimina la columna Price del dataFrame
  • Eliminar filas del dataFrame
df_books.drop(0, axis=0)
----> #elimina la fila 0 del dataFrame
  • Eliminar un conjunto de filas mediante una lista
df_books.drop([0,1,2], axis=0)
----> #elimina las filas 0, 1 y 2 del dataFrame
  • Elimina un conjunto de filas mediante un rango
df_books.drop(range(0,10), axis=0)
----> #elimina las primeras 10 filas del dataFrame
  • Agregar una nueva columna con valores Nan
df_books['Nueva_columna'] = np.nan
----> #Crea una nueva columna con el nombre de Nueva_columna de valores Nan
  • Mostrar el numero de filas(0) o columnas(1) que tiene un dataFrame
df_books.shape[0]
----> #Muestra el numero de filas que posee el dataFrame
  • Agregar valores a una nueva columna del dataFrame
#Creamos una array con un numero de valores igual al numero de filas del dataFrame
data = np.arange(0, df_books.shape[0])

#Creamos una nueva columna y agregamos los valores almacenados en el array
df_books['Rango'] = data
----> #Crea una nueva columna llamada Rango con los valores del array 
  • Para añadir filas se utiliza la funcion append de python añadiendo como parametro una lista, diccionario o añadiendo los valores manualmente
df_books.append(df_books)
----> #Duplica las filas del dataFrame

Agregué una columna con un flag que dice si el libro es malo basado en su rating. Usé Python pero supongo que hay una mejor forma de hacerlo

rating = list(df['User Rating'])
is_bad_list = list()
for i in rating:
  if i < 4.5:
    is_bad_list.append(1)
  else:
    is_bad_list.append(0)
is_bad_array = np.array(is_bad_list)

df['Is Bad'] = is_bad_array

Encontré 2 formas más de eliminar registros:
1_ Eliminando los registros repetidos.
2_ Eliminando registros con determinada característica por ejemplo los index impares.
Lo hago con el dataframe de la clase:

import pandas as pd
import numpy as np 
df_books = pd.read_csv('/content/VIDEO 12 bestsellers-with-categories.csv',sep=',',header=0)
df_books.shape

(550, 7)

1_ ELIMINAR REGISTROS REPETIDOS
Tenemos 550 registrosde libros en el dataframe.
Entonces generamos un nuevo dataframe con repeticiones de los primeros 2 rows

df_books_rep = df_books.append(df_books.head(2))
df_books_rep.tail(5)

Usamos el metodo drop_duplicates para eliminar los regitros duplidades de nombre de los libros

df_books_sinrep = df_books_rep.drop_duplicates('Name')
df_books_sinrep.shape

(351, 7)

Se eliminaron mas de 2 registros. En total 201. Es decir: en el dataframe original habia 199 repeticiones de los nombres de todos los libros
El dataframe df_books_sinrep no tiene repeticiones de nombres de libros

2_ ELIMINAR INDEX IMPARES
El procedimiento es asignar a un nuevo dataset los index pares. Lo hacemos on ILOC.

df_books_pares = df_books.iloc[::2]
df_books_pares.head(10)

Actualmente frame.append está deprecado, se recomienda
utilizar pandas.concat.

Probar el método concat para agregar filas.
ignore_index=True , permite generar nuevos índices con el total de filas.

print(pd.concat([games_csv,games_csv],ignore_index=True))

La verdad que un gran docente. Muy feliz de poder seguir su curso.

No me quedó muy claro la forma de usar
df.append() y encontré un página bastante útil que explica la función en profundidad

Excelente explicacion