Operaciones vectorizadas en Series
Realice operaciones aritméticas entre dos Series, gestione automáticamente la alineación de índices y complete con NaN los valores alineados que falten.
Operaciones vectorizadas en Series es una lección gratuita de Pandas & NumPy Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Pandas & NumPy Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Pandas & NumPy Academy incluye 4 lecciones en total.
¿Por qué utilizar operaciones vectorizadas?
Al igual que NumPy, las Series de Pandas admiten operaciones vectorizadas que aplican operaciones aritméticas, comparaciones y funciones a cada elemento sin utilizar bucles de Python. Esto ofrece concisión y velocidad. Internamente, cada operación delega en las rutinas de nivel C de NumPy, pero Pandas añade una ventaja fundamental: la alineación automática de índices antes de realizar la operación.
import pandas as pd
revenue = pd.Series([1000, 2000, 1500], index=['Jan', 'Feb', 'Mar'])
tax_rate = 0.2
net = revenue * (1 - tax_rate) # vectorized -- no loop
print(net)Aritmética entre dos Series
Cuando suma, resta, multiplica o divide dos Series, Pandas las alinea primero mediante las etiquetas del índice. Solo las posiciones en las que ambas Series tienen una etiqueta producen un resultado; las etiquetas que no coinciden producen NaN. Este comportamiento evita errores ocultos provocados por datos desalineados; por ejemplo, al sumar las cifras de enero de dos fuentes de datos almacenadas en órdenes diferentes.
import pandas as pd
a = pd.Series([10, 20, 30], index=['x', 'y', 'z'])
b = pd.Series([1, 2, 3], index=['y', 'z', 'w'])
print(a + b)
# w NaN
# x NaN
# y 21.0
# z 32.0Rellenar NaN en operaciones alineadas
Para evitar la propagación de NaN en operaciones con índices desalineados, utilice métodos aritméticos como .add(), .sub(), .mul() y .div() con el parámetro fill_value=. Este parámetro sustituye por un valor determinado cualquier etiqueta que falte en una de las Series antes de realizar la operación; normalmente se utiliza 0 para la suma y 1 para la multiplicación.
import pandas as pd
a = pd.Series([10, 20, 30], index=['x', 'y', 'z'])
b = pd.Series([1, 2, 3], index=['y', 'z', 'w'])
result = a.add(b, fill_value=0)
print(result)
# w 3.0
# x 10.0
# y 21.0
# z 32.0Aritmética escalar en una Series
La aritmética con un escalar aplica la operación a cada elemento y produce una nueva Series con el mismo índice. Esta es la forma más sencilla de vectorización: s + 5, s * 100, s ** 2. La aritmética escalar nunca introduce NaN y se utiliza para convertir unidades, normalizar datos y aplicar desplazamientos a series temporales.
import pandas as pd
prices_eur = pd.Series([1.0, 2.5, 4.0], index=['a', 'b', 'c'])
exchange = 1.08
prices_usd = prices_eur * exchange
print(prices_usd.round(2))
# a 1.08
# b 2.70
# c 4.32Aplicar ufuncs de NumPy a Series
Las ufuncs de NumPy funcionan perfectamente con las Series de Pandas y devuelven una Series con el mismo índice. Esto significa que puede llamar directamente a np.sqrt(s), np.log1p(s) o np.exp(s) sobre una Series sin convertirla primero en una matriz. El resultado es una nueva Series que conserva las etiquetas originales.
import pandas as pd
import numpy as np
s = pd.Series([0, 1, 4, 9, 16], index=list('abcde'))
print(np.sqrt(s))
# a 0.0
# b 1.0
# c 2.0
# d 3.0
# e 4.0Operaciones de comparación en Series
Los operadores de comparación (==, !=, >, <, >=, <=) devuelven una Series booleana elemento a elemento. Constituyen la base del filtrado: debe pasar la Series booleana a .loc para seleccionar las filas que coinciden. Pandas también alinea los índices al comparar dos Series.
import pandas as pd
s = pd.Series([3, 7, 2, 9, 1], index=list('abcde'))
print(s > 4)
# a False
# b True
# c False
# d True
# e False
print(s[s > 4]) # b:7 d:9Encadenar operaciones vectorizadas
Como cada operación devuelve una nueva Series, puede encadenar varias transformaciones en una sola expresión. Esto mejora la legibilidad y evita crear variables intermedias innecesarias. En procesos complejos, divida la cadena en varias líneas usando paréntesis. El encadenamiento es el equivalente de Pandas a la programación funcional con datos inmutables.
import pandas as pd
import numpy as np
raw_scores = pd.Series([55, 80, 45, 90, 72])
normalised = (raw_scores - raw_scores.min()) / (raw_scores.max() - raw_scores.min())
print(normalised.round(2))
# 0 0.22
# 1 0.78
# 2 0.00
# 3 1.00
# 4 0.60Gestionar NaN en operaciones vectorizadas
NaN es contagioso: cualquier operación aritmética que incluya NaN produce NaN. Use s.fillna(value) para sustituirlo antes de operar, o el parámetro skipna=True en los métodos de agregación. La función pd.isna(s) devuelve una Series booleana que marca las posiciones con NaN; úsela para auditar los datos antes de calcular estadísticas.
import pandas as pd
import numpy as np
s = pd.Series([1.0, np.nan, 3.0, np.nan, 5.0])
print(s + 10)
# 0 11.0 2 13.0 4 15.0 -- NaN stays NaN
print(s.fillna(0) + 10)
# 0 11.0 1 10.0 2 13.0 3 10.0 4 15.0abs(), clip() y round() en Series
Las Series de Pandas exponen directamente muchos métodos similares a los de NumPy: s.abs(), s.clip(lower, upper) y s.round(decimals) devuelven nuevas Series con la transformación aplicada elemento a elemento. Son equivalentes a las llamadas a ufuncs de NumPy, pero utilizan la sintaxis de métodos y conservan el índice y el nombre de la Series.
import pandas as pd
s = pd.Series([-2.5, 1.3, -0.7, 4.9, -3.1])
print(s.abs()) # [2.5 1.3 0.7 4.9 3.1]
print(s.clip(-2, 2)) # [-2. 1.3 -0.7 2. -2. ]
print(s.round(0)) # [-2. 1. -1. 5. -3.]pct_change() para tasas de crecimiento
s.pct_change() calcula el cambio porcentual entre elementos consecutivos: (actual - anterior) / anterior. El primer elemento es NaN porque no existe un valor anterior. Es la operación estándar para calcular tasas de crecimiento intermensual, rendimientos diarios en finanzas y características de variación para modelos de series temporales.
import pandas as pd
monthly_revenue = pd.Series([100, 120, 110, 140],
index=['Q1', 'Q2', 'Q3', 'Q4'])
growth = monthly_revenue.pct_change()
print(growth.round(3))
# Q1 NaN
# Q2 0.200
# Q3 -0.083
# Q4 0.273cumsum() y cumprod() en Series
s.cumsum() devuelve una Series de totales acumulados y s.cumprod() devuelve productos acumulados. Se utilizan para calcular ingresos acumulados, rendimientos compuestos de inversiones o recuentos acumulados de palabras. Conservan las etiquetas del índice original, lo que facilita representar la serie acumulada a lo largo del tiempo o por categoría.
import pandas as pd
daily_sales = pd.Series([100, 150, 80, 200],
index=['Mon', 'Tue', 'Wed', 'Thu'])
print(daily_sales.cumsum())
# Mon 100
# Tue 250
# Wed 330
# Thu 530Comprobación rápida
Compruebe sus conocimientos sobre las operaciones vectorizadas en Series adquiridos en esta lección.
Recapitulación de la lección
En esta lección ha aprendido que los operadores aritméticos se aplican elemento a elemento a las Series sin utilizar bucles, que Pandas alinea automáticamente dos Series mediante las etiquetas del índice antes de operar y coloca NaN en las posiciones que no coinciden, y que métodos como fill_value, pct_change y cumsum amplían las operaciones vectorizadas para tareas analíticas. A continuación, exploraremos métodos útiles de las Series, como describe, value_counts y map, para realizar resúmenes rápidamente.
Aprende Python con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 30
- Lecciones
- 120
Preguntas frecuentes
¿La lección «Operaciones vectorizadas en Series» es gratis?
Sí — el texto completo de «Operaciones vectorizadas en Series» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Pandas & NumPy Academy, actualiza a CoddyKit PRO. El curso de Pandas & NumPy Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Operaciones vectorizadas en Series»?
Realice operaciones aritméticas entre dos Series, gestione automáticamente la alineación de índices y complete con NaN los valores alineados que falten. Practicas Pandas & NumPy Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Pandas & NumPy Academy?
No se requiere experiencia previa. Pandas & NumPy Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Operaciones vectorizadas en Series»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Pandas & NumPy Academy?
Sí. Cada lección de Pandas & NumPy Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Creación de una Series
- Acceso por etiquetas y por posiciones
- Operaciones vectorizadas en Series
- Métodos útiles de Series