Guías de Make it Real
  • Introduction
  • Preparación
    • Conceptos básicos
    • El editor de texto
    • La línea de comandos
    • Git y Github
  • Git
    • Instalación y configuración
    • Conceptos y comandos esenciales
    • Ignorando archivos y carpetas
    • Trabajando con ramas
    • Repositorios remotos
    • Etiquetas
    • Reescribiendo la historia
    • Stashing
    • Github
  • HTML y CSS
    • Introducción a HTML
    • Introducción a CSS
    • Más elementos de HTML
    • Tablas
    • Formularios
    • El modelo de caja en CSS
    • Fondos (backgrounds)
    • Posicionamiento
    • Selectores CSS
    • Bordes, sombras y gradientes
    • Media Queries
    • Unidades en CSS
    • Flexbox
  • Bootstrap 3
    • Primeros pasos
    • Elementos básicos de HTML
    • Componentes
    • La grilla
    • Personalizando Bootstrap
    • Utilizando plantillas
  • Bootstrap 4
    • Primeros pasos
    • Elementos básicos de HTML
    • Componentes
    • La grilla
    • Clases utilitarias
    • Personalizando Bootstrap
  • Ruby
    • Primeros pasos
    • Tipos y operadores
    • Variables y entrada de usuario
    • Condicionales
    • Ciclos
    • Arreglos
    • Más cadenas de texto
    • Hashes
    • Métodos
    • Manipulación de archivos
    • Gemas
  • Programación Orientada a Objetos en Ruby
    • Clases y objetos
    • Métodos y atributos de clase
    • Herencia
    • Módulos
    • Excepciones
  • JavaScript I
    • Primeros pasos
    • Tipos y operadores
    • Variables
    • Condicionales
    • Ciclos
    • Arreglos
    • Más cadenas de texto
    • Funciones
    • Objetos literales
    • Manipulación de archivos
  • JavaScript en el navegador
    • Primeros pasos
    • Manipulando HTML
    • Escuchando eventos
    • Local Storage
    • History API
    • Canvas
    • Notificaciones Web
    • Audio y Video
    • Arrastrar y soltar
    • JSON
    • Realizando peticiones HTTP
  • jQuery
    • Primeros pasos
    • Manipulando HTML
    • Escuchando eventos
    • Plugins
    • Realizando peticiones con AJAX
  • JavaScript II
    • Prototipos
    • Librerías (Node.js)
    • ES6
    • Uso de this (call, apply, bind)
    • Programación funcional
    • Scope, hoisting, closures
    • Programación asincrónica
    • Testing
  • HTTP y Sinatra
    • Primeros pasos con Sinatra
    • El protocolo HTTP
    • Rutas
    • Formularios
    • Cookies y sesión
  • Bases de datos
    • Bases de datos relacionales
    • SQL
    • DDL
    • MongoDB
  • Ruby on Rails I
    • Primeros pasos
    • Arquitectura
    • Rutas
    • Layouts y rendering
    • ActiveRecord - Modelos
    • ActiveRecord - Migraciones
    • ActiveRecord - Validaciones
    • ActiveRecord - Asociaciones
    • ActiveRecord - Scopes
    • ActiveRecord - Callbacks
    • Recursos REST
    • Formularios
    • Autenticación con Devise
    • Sass y Bootstrap
    • Envío de correos
    • Carga de imágenes
    • Seeds
    • Heroku
  • Ruby on Rails II
    • Usando JavaScript (y jQuery) en Rails
    • Testing en Ruby
    • Testing en Rails
    • Creando una Web API
    • Web Sockets
  • Express.js
    • Primeros Pasos
    • El protocolo HTTP
    • Rutas
    • Vistas
    • Middlewares y manejo de errores
    • Formularios
    • Cookies y sesión
  • Express.js II
    • Mongoose
    • Web Sockets
    • Autenticación
    • Envío de correos
    • Cargar imágenes
    • Deployment
    • Testing
    • Creando una Web API
  • React
    • Primeros pasos
    • JSX
    • Componentes
    • Más sobre estado
    • Formularios
    • Peticiones HTTP con Axios
    • React Hooks
    • React Context
    • React Bootstrap
    • React Router
    • Carga de Imágenes
    • Testing
    • Estructura de carpetas
    • Componentes de clase
  • Redux
    • Primeros pasos
    • Action creators
    • Usando la librería react-redux
    • Middlewares
    • Operaciones asincrónicas con redux-thunk
    • Combinando funciones reductoras
    • Testing
    • Redux Tool Kit
  • Algoritmos
    • Describiendo un algoritmo
    • Complejidad (Big-O)
    • Estructuras de datos
    • Recursión
    • Ordenamiento
    • Búsqueda
    • Programación dinámica
  • Python
    • Primeros Pasos
    • Tipos y Variables
    • Funciones
    • Control de Flujo
    • Listas
    • Ciclos
    • Diccionarios, Tuplas y Sets
  • NumPy
    • Primeros Pasos
    • Arreglos
    • Arreglos Multidimensionales
    • Estadística con NumPy
    • Distribución Estadística
  • Pandas
    • Primeros Pasos
    • Inspección y Selección de Datos
    • Modificando Dataframes
    • La Función Lambda
    • Aggregates en Pandas
    • Múltiples Tablas
Powered by GitBook
On this page
  • Añadiendo una columna
  • Añadiendo columnas
  • Corriendo operaciones en columnas
  • Renombrando columnas
  • Eliminando columnas
  1. Pandas

Modificando Dataframes

¿Cuando vamos a necesitar modificar un DataFrame? Una razón importante para la modificación es cuando necesitamos añadir una nueva entrada a la tabla, que normalmente se denomina fila. A veces necesitamos actualizar una fila específica, o incluso varias filas, en un dataframe.

En Pandas, las columnas son similares a las columnas que se usan en las bases de datos SQL. Nos permiten tener valores similares que caen bajo diferentes columnas. Una modificación común de un DataFrame es añadir una nueva columna si estamos ampliando el DataFrame para incluir más columnas y añadir más información.

Añadiendo una columna

Es posible que queramos añadir nueva información o realizar un cálculo basado en los datos que ya tenemos. Una forma de añadir una nueva columna es dando una lista de la misma longitud que el DataFrame existente. Supongamos que somos dueños de una ferretería y tenemos un DataFrame que contiene información de inventario:

df = pd.DataFrame([
    [1, '3 inch screw', 0.5, 0.75],
    [2, '2 inch nail', 0.10, 0.25],
    [3, 'hammer', 3.00, 5.50],
    [4, 'screwdriver', 2.50, 3.00]
],
columns=['Product ID', 'Description', 'Cost of Manufacture', 'Price']
)

Parece que la cantidad de cada producto en nuestro almacén ha desaparecido! Usemos el siguiente código para añadir esa información a nuestro DataFrame.

df['Quantity'] = [100, 150, 50, 35]
print(df)

#     Product ID   Description  Cost of Manufacture  Price  Quantity
# 0           1  3 inch screw                 0.5   0.75       100
# 1           2   2 inch nail                 0.1   0.25       150
# 2           3        hammer                 3.0   5.50        50
# 3           4   screwdriver                 2.5   3.00        35

¿Podemos añadir la columna en una posicion especifica del DataFrame? Si. Especificando el index y usando insert(). Por ejemplo, si queremos que Quantity quede en la tercera columna (posicion-index 2), hacemos lo siguiente:

# df.insert(position, "new-column", data)
df.insert(2, Quantity, [100, 150, 50, 35])

Añadiendo columnas

Tambien podemos añadir una columna que tendra el mismo valor para todas las filas. Supongamos que todos los productos estan en inventario, podemos hacer esto:

df['In stock'] = True
print(df)

#     Product ID   Description  Cost of Manufature  Price  Quantity  In stock
# 0           1  3 inch screw                 0.5   0.75       100      True
# 1           2   2 inch nail                 0.1   0.25       150      True
# 2           3        hammer                 3.0   5.50        50      True
# 3           4   screwdriver                 2.5   3.00        35      True

Finalmente podemos añadir una columna que corra un funcion sobre las columnas. Por ejemplo si queremos una nueva columna con los impuestos

df['Sales Tax'] = df.Price * 0.075
print(df)

#     Product ID   Description  Cost of Manufature  Price  Quantity  In stock  \
# 0           1  3 inch screw                 0.5   0.75       100      True   
# 1           2   2 inch nail                 0.1   0.25       150      True   
# 2           3        hammer                 3.0   5.50        50      True   
# 3           4   screwdriver                 2.5   3.00        35      True   
#
# Sales Tax  
# 0    0.05625  
# 1    0.01875  
# 2    0.41250  
# 3    0.22500  

¿Podemos correr opraciones entre mas de dos columnas de un dataframe? Si. De hecho no hay limite en que cantidad de columnas puedes correr funciones. Por ejemplo si tenemos 3 columnas: price, tax y quantity podemos hacer algo como esto:

df['Total'] = (df.Price + (df.Price * df['Sales Tax'])) * df.Quantity
print(df)

#     Product ID   Description  Cost of Manufature  Price  Quantity  In stock  \
# 0           1  3 inch screw                 0.5   0.75       100      True   
# 1           2   2 inch nail                 0.1   0.25       150      True   
# 2           3        hammer                 3.0   5.50        50      True   
# 3           4   screwdriver                 2.5   3.00        35      True   
#
# Sales Tax       Total  
# 0    0.05625   79.218750  
# 1    0.01875   38.203125  
# 2    0.41250  388.437500  
# 3    0.22500  128.625000

Corriendo operaciones en columnas

A menudo queremos añadir una columna que está relacionada con las columnas existentes, pero que requieren un cálculo más complejo que multiplicar o sumar. Por ejemplo tenemos el siguiente dataframe:

df = pd.DataFrame([
    ['JHON SMITH', 'john.smith@gmail.com'],
    ['jane Doe', 'jdoe@gmail.com'],
    ['Jos schomo', 'joe@gmail.com']
],
columns=['Name', 'Email'])

Es un poco rara la capitalización de las letras en cada fila. Nosotros queremos hacerlo más consistente cambiando todas las letras a mayúsculas. Podemos usar la función apply para cada valor en una columna en particular.

df['Name'] = df['Name'].str.upper()
print(df)

#   Name                 Email
# 0  JHON SMITH  john.smith@gmail.com
# 1    JANE DOE        jdoe@gmail.com
# 2  JOS SCHOMO         joe@gmail.com

Renombrando columnas

Es posible que tengamos que cambiar el nombre de una columna por otro que haga que los datos sean más claros para los usuarios. Por ejemplo, si tuviéramos un dataframe con información sobre las películas, y el nombre de la columna para los títulos de las películas se llamara simplemente "nombre", esto podría no ser obvio. Podríamos renombrar la columna a algo más claro como "movie_title".

Cuando obtenemos los datos de otras fuentes, normalmente vamos a querer cambiar los nombres de las columnas. Podamos cambiar los nombres de las columnas todas a la vez con el método .columns. pero tenga cuidado porque podríamos no etiquetar bien las columnas si lo hacemos en el orden incorrecto

df = pd.DataFrame({
    'name': ['john', 'andrea', 'juliana', 'daniel'],
    'age': [23, 25, 33, 34]
})

df.columns = ['First Name', 'Age']
print(df)

#   First Name  Age
# 0       john   23
# 1     andrea   25
# 2    juliana   33
# 3     daniel   34

También podemos renombrar columnas de forma individual usando el método .rename. Pasando un diccionario con los argumentos: {'old_column_name1': 'new_column_name1', 'old_column2': 'new_column2'}

df = pd.DataFrame({
    'name': ['john', 'andrea', 'juliana', 'daniel'],
    'age': [23, 25, 33, 34]
})

df.rename(columns={
    'name': 'First Name',
    'age': 'Age'
}, inplace=True)

print(df)

# First Name  Age
# 0       john   23
# 1     andrea   25
# 2    juliana   33
# 3     daniel   34

Eliminando columnas

Se puede utilizar el metodo drop() para eliminar una columna en especifico y debemos especificar el eje con axis=1

df.drop(['Age'], axis=1, inplace=True)
print(df)

#   First Name
# 0       john
# 1     andrea
# 2    juliana
# 3     daniel
PreviousInspección y Selección de DatosNextLa Función Lambda

Last updated 2 years ago