Aplicar la función de raíz cuadrada en una columna del marco de datos de Pandas

Mehvish Ashiq 21 junio 2023
  1. Introducción a la raíz cuadrada
  2. Aplicar la función de raíz cuadrada en una columna del marco de datos de Pandas
  3. Utilice .astype(int) para determinar raíces cuadradas enteras en Pandas
Aplicar la función de raíz cuadrada en una columna del marco de datos de Pandas

Este tutorial enseña cómo aplicar la función de raíz cuadrada en una columna de Pandas Data Frame utilizando el operador de exponenciación, las funciones np.sqrt(), lambda y apply(). Además, aprenderemos a usar .astype(int) para determinar raíces cuadradas enteras.

Introducción a la raíz cuadrada

Antes de avanzar hacia la raíz cuadrada, uno debe entender qué es un cuadrado y cómo podemos calcularlo. Comencemos con eso.

En matemáticas hemos aprendido que el cuadrado de un número se calcula multiplicando el número especificado por sí mismo, por ejemplo, cuadrado de 3 = 3x3 = 9.

El cuadrado de cualquier número n se representa con un superíndice 2, que podemos escribir como n^2; debe cumplir las dos propiedades siguientes:

  1. El cuadrado del número especificado puede ser un número de coma flotante o un número entero.
  2. El cuadrado de un número específico siempre será un número positivo porque el producto de dos números negativos da como resultado un número positivo.

Ahora, estamos listos para aprender las raíces cuadradas. La raíz cuadrada de n^2 es n, que se representa como √n (también se representa como n^(1/2)).

Es útil para diversas funciones científicas y matemáticas.

Ahora que tenemos una sólida comprensión de la raíz cuadrada, aprendamos cómo podemos calcularla usando Python, específicamente, cómo podemos aplicar la función de raíz cuadrada en una columna del marco de datos de Pandas.

Aplicar la función de raíz cuadrada en una columna del marco de datos de Pandas

Podemos aplicar la función de raíz cuadrada usando varios enfoques; algunos de ellos se dan a continuación. Para usarlos todos, debemos tener un marco de datos; por ejemplo, tenemos lo siguiente:

import pandas as pd

data = {
    "years": [2020, 2021, 2022],
    "teams": ["Bears", "Packers", "Lions"],
    "wins": [25, 10, 6],
    "losses": [5, 5, 16],
}

df = pd.DataFrame(data, columns=["years", "teams", "wins", "losses"])
df["wins+losses"] = df[["wins", "losses"]].sum(axis=1)

df

Aquí tenemos un diccionario que contiene pares de clave-valor que se convertirán en un marco de datos de Python usando pd.DataFrame(), que toma los datos y una matriz de nombres de columna como parámetros.

Luego, agregamos una nueva columna al marco de datos, ganancias+pérdidas, que contiene la suma de las columnas ganancias y pérdidas. Para entenderlo mejor, observe el siguiente resultado.

años equipos gana pérdidas victorias+derrotas
0 2020 Osos 25 5 30
1 2021 empacadores 10 5 15
2 2022 leones 6 dieciséis 22

Este marco de datos se utilizará en los siguientes métodos, donde encontraremos la raíz cuadrada de las columnas ganancias, pérdidas y ganancias+pérdidas.

Método 1: use el operador de exponenciación para calcular la raíz cuadrada

Código de ejemplo:

import pandas as pd

data = {
    "years": [2020, 2021, 2022],
    "teams": ["Bears", "Packers", "Lions"],
    "wins": [25, 10, 6],
    "losses": [5, 5, 16],
}

df = pd.DataFrame(data, columns=["years", "teams", "wins", "losses"])
df["wins+losses"] = df[["wins", "losses"]].sum(axis=1)


df["sqrt(wins)"] = df[["wins"]] ** 0.5
df["sqrt(losses)"] = df[["losses"]] ** 0.5
df["sqrt(wins+losses)"] = df[["wins+losses"]] ** 0.5

df

Producción:

años equipos gana pérdidas victorias+derrotas sqrt (gana) sqrt (pérdidas) sqrt(ganancias+pérdidas)
0 2020 Osos 25 5 30 5.000000 2.236068 5.477226
1 2021 empacadores 10 5 15 3.162278 2.236068 3.872983
2 2022 leones 6 dieciséis 22 2.449490 4.000000 4.690416

El código anterior itera sobre la columna del marco de datos especificado y usa exponenciación (**), un operador aritmético conocido como operador de potencia.

Ya hemos aprendido que la raíz cuadrada del número n se representa como √n, que es igual a n^(1/2), también escrito como n**0.5 en Python. Aquí, n se reemplaza por cada valor de la columna especificada de un marco de datos de Pandas.

Método 2: utilice np.sqrt() para calcular la raíz cuadrada

Código de ejemplo:

import pandas as pd
import numpy as np

data = {
    "years": [2020, 2021, 2022],
    "teams": ["Bears", "Packers", "Lions"],
    "wins": [25, 10, 6],
    "losses": [5, 5, 16],
}

df = pd.DataFrame(data, columns=["years", "teams", "wins", "losses"])
df["wins+losses"] = df[["wins", "losses"]].sum(axis=1)

df["sqrt(wins)"] = np.sqrt(df[["wins"]])
df["sqrt(losses)"] = np.sqrt(df[["losses"]])
df["sqrt(wins+losses)"] = np.sqrt(df[["wins+losses"]])

df

Producción:

años equipos gana pérdidas victorias+derrotas sqrt (gana) sqrt (pérdidas) sqrt(ganancias+pérdidas)
0 2020 Osos 25 5 30 5.000000 2.236068 5.477226
1 2021 empacadores 10 5 15 3.162278 2.236068 3.872983
2 2022 leones 6 dieciséis 22 2.449490 4.000000 4.690416

Este fragmento de código utiliza la función sqrt() de la biblioteca NumPy, que toma una matriz de valores de entrada cuyas raíces cuadradas deben determinarse.

Método 3: use la expresión lambda para calcular la raíz cuadrada

Código de ejemplo:

import pandas as pd

data = {
    "years": [2020, 2021, 2022],
    "teams": ["Bears", "Packers", "Lions"],
    "wins": [25, 10, 6],
    "losses": [5, 5, 16],
}

df = pd.DataFrame(data, columns=["years", "teams", "wins", "losses"])
df["wins+losses"] = df[["wins", "losses"]].sum(axis=1)

df["sqrt(wins)"] = df.transform(lambda x: (df[["wins"]] ** 0.5))
df["sqrt(losses)"] = df.transform(lambda x: (df[["losses"]]) ** 0.5)
df["sqrt(wins+losses)"] = df.transform(lambda x: (df[["wins+losses"]]) ** 0.5)

df

Producción:

años equipos gana pérdidas victorias+derrotas sqrt (gana) sqrt (pérdidas) sqrt(ganancias+pérdidas)
0 2020 Osos 25 5 30 5.000000 2.236068 5.477226
1 2021 empacadores 10 5 15 3.162278 2.236068 3.872983
2 2022 leones 6 dieciséis 22 2.449490 4.000000 4.690416

Aquí, estamos usando la expresión lambda (que es una función) con exponenciación (**) para determinar las raíces cuadradas de las columnas especificadas. Usamos expresiones lambda donde preferimos la practicidad y la simplicidad del código.

También usamos el método transform(), que llama a una función en self produciendo un DataFrame con elementos/valores transformados. Devuelve un DataFrame que contiene la misma longitud que self.

Método 4: use aplicar () para calcular la raíz cuadrada

Código de ejemplo:

import pandas as pd
import numpy as np

data = {
    "years": [2020, 2021, 2022],
    "teams": ["Bears", "Packers", "Lions"],
    "wins": [25, 10, 6],
    "losses": [5, 5, 16],
}

df = pd.DataFrame(data, columns=["years", "teams", "wins", "losses"])
df["wins+losses"] = df[["wins", "losses"]].sum(axis=1)


df["sqrt(wins)"] = df[["wins"]].apply(np.sqrt)
df["sqrt(losses)"] = df[["losses"]].apply(np.sqrt)
df["sqrt(wins+losses)"] = df[["wins+losses"]].apply(np.sqrt)

df

Producción:

años equipos gana pérdidas victorias+derrotas sqrt (gana) sqrt (pérdidas) sqrt(ganancias+pérdidas)
0 2020 Osos 25 5 30 5.000000 2.236068 5.477226
1 2021 empacadores 10 5 15 3.162278 2.236068 3.872983
2 2022 leones 6 dieciséis 22 2.449490 4.000000 4.690416

Esta valla de código utiliza el método apply() de la biblioteca Pandas, que toma np.sqrt como parámetro y devuelve un DataFrame de valores de raíz cuadrada.

Es posible que haya notado que todos los enfoques anteriores devuelven raíces cuadradas como valores flotantes. ¿Qué pasa si los queremos como valores enteros?

Utilice .astype(int) para determinar raíces cuadradas enteras en Pandas

Código de ejemplo:

import pandas as pd
import numpy as np

data = {
    "years": [2020, 2021, 2022],
    "teams": ["Bears", "Packers", "Lions"],
    "wins": [25, 10, 6],
    "losses": [5, 5, 16],
}

df = pd.DataFrame(data, columns=["years", "teams", "wins", "losses"])
df["wins+losses"] = df[["wins", "losses"]].sum(axis=1)


df["sqrt(wins)"] = df[["wins"]].apply(np.sqrt).astype(int)
df["sqrt(losses)"] = df[["losses"]].apply(np.sqrt).astype(int)
df["sqrt(wins+losses)"] = df[["wins+losses"]].apply(np.sqrt).astype(int)

df

Producción:

años equipos gana pérdidas victorias+derrotas sqrt (gana) sqrt (pérdidas) sqrt(ganancias+pérdidas)
0 2020 Osos 25 5 30 5 2 5
1 2021 empacadores 10 5 15 3 2 3
2 2022 leones 6 dieciséis 22 2 4 4

De manera similar, podemos usar .astype(int) con otros enfoques. Recuerde, encontrar el cuadrado de 0 no causará ningún error porque 0 elevado a la potencia de cualquier cosa también sería 0, pero puede obtener ValueError o NaN si intenta encontrar la raíz cuadrada de un número negativo.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook