Curso
No tienes por qué limitarte a los datos tal cual vienen. Puedes añadir nuevas columnas a un DataFrame. A esto también se le llama transformar, mutar o hacer feature engineering.
Puedes crear columnas desde cero, pero también es habitual derivarlas a partir de otras, por ejemplo, sumando columnas entre sí o cambiando sus unidades.
Derivar una columna
Con un dataset de perros, imagina que quieres añadir una nueva columna al DataFrame con la altura de cada perro en metros en lugar de centímetros.
A la izquierda del signo igual, usas corchetes con el nombre de la nueva columna que quieres crear, en este caso, height_m. A la derecha, pones el cálculo.
dogs["height_m"] = dogs["height_cm"] / 100
print(dogs)
name breed color height_cm weight_kg date_of_birth height_m
0 Bella Labrador Brown 56 24 2013-07-01 0.56
1 Charlie Poodle Black 43 24 2016-09-16 0.43
2 Lucy Chow Chow Brown 46 24 2014-08-25 0.46
3 Cooper Schnauzer Gray 49 17 2016-09-16 0.49
4 Max Labrador Black 59 29 2016-09-16 0.59
5 Stella Chihuahua Tan 18 2 2016-09-16 0.18
6 Bernie St. Bernard White 77 74 2016-09-16 0.77
Fíjate en que tanto la columna original como la derivada aparecen en el dataframe que has modificado.
Añadir una columna
En este ejemplo, vas a calcular el índice de masa canina y añadirlo como columna a tu dataframe. BMI es el índice de masa corporal, que se calcula dividiendo el peso en kilogramos entre la altura en metros al cuadrado.
dogs["height_m"] = dogs["weight_kg"] / dogs["height_m"] ** 2
print(dogs.head())
name breed color height_cm weight_kg date_of_birth height_m bmi
0 Bella Labrador Brown 56 24 2013-07-01 0.56 76.530612
1 Charlie Poodle Black 43 24 2016-09-16 0.43 129.799892
2 Lucy Chow Chow Brown 46 24 2014-08-25 0.46 113.421550
3 Cooper Schnauzer Gray 49 17 2016-09-16 0.49 70.803832
4 Max Labrador Black 59 29 2016-09-16 0.59 83.309394
De nuevo, la nueva columna va a la izquierda del igual, pero esta vez el cálculo implica dos columnas.
Añadir una columna con varias transformaciones
La verdadera potencia de pandas aparece cuando combinas todas las habilidades que has aprendido. Vamos a encontrar los nombres de los perros altos y delgados.
Primero, para definir los perros delgados, tomas el subconjunto de perros con un BMI inferior a 100. Después, ordenas por altura en orden descendente para tener arriba a los más altos dentro de los delgados.
Por último, esta vez te vas a quedar solo con las columnas que te interesan.
bmi_lt_100 = dogs[dogs["bmi"] < 100]
bmi_lt_100_height = bmi_lt_100.short_values("height_cm", ascending=False)
bmi_lt_100_height[["name", "height_cm", "bmi"]]
name height_cm bmi
4 Max 59 83.309394
0 Bella 56 76.530612
3 Cooper 49 70.803832
5 Stella 18 61.728395
Aquí puedes ver que Max es el perro más alto con un BMI inferior a 100.
Ejemplo interactivo
En el siguiente ejemplo, añades una nueva columna al DataFrame homelessness, llamada total, con la suma de las columnas individuals y family_members. Después, añade otra columna a homelessness, llamada p_individuals, con la proporción de personas sin hogar en cada estado que son individuos. Por último, imprime el dataframe homelessness.
# Add total col as sum of individuals and family_members
homelessness["total"] = homelessness["individuals"] + homelessness["family_members"]
# Add p_individuals col as proportion of individuals
homelessness["p_individuals"] = homelessness["individuals"] / homelessness["total"]
# See the result
print(homelessness)
Al ejecutar el código anterior, se obtiene el siguiente resultado:
region state individuals family_members state_pop total p_individuals
0 East South Central Alabama 2570.0 864.0 4887681 3434.0 0.748
1 Pacific Alaska 1434.0 582.0 735139 2016.0 0.711
2 Mountain Arizona 7259.0 2606.0 7158024 9865.0 0.736
3 West South Central Arkansas 2280.0 432.0 3009733 2712.0 0.841
4 Pacific California 109008.0 20964.0 39461588 129972.0 0.8
...
48 South Atlantic West Virginia 1021.0 222.0 1804291 1243.0 0.821
49 East North Central Wisconsin 2740.0 2167.0 5807406 4907.0 0.558
50 Mountain Wyoming 434.0 205.0 577601 639.0 0.679
Échale también un vistazo al tutorial de DataCamp sobre cómo eliminar columnas en pandas.
Si quieres aprender más sobre cómo añadir columnas nuevas en pandas, mira este vídeo de nuestro curso Data Manipulation with pandas.
Este contenido se ha extraído del curso Data Manipulation with pandas de DataCamp, por Maggie Matsui y Richie Cotton.
