Aplicar la función de raíz cuadrada en una columna del marco de datos de Pandas
- Introducción a la raíz cuadrada
- Aplicar la función de raíz cuadrada en una columna del marco de datos de Pandas
-
Utilice
.astype(int)
para determinar raíces cuadradas enteras en 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:
- El cuadrado del número especificado puede ser un número de coma flotante o un número entero.
- 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.