Vamos a cargar el conjunto de datos. Muestra por pantalla el número de observaciones y sus características.
Mira el tipo de datos de cada una de sus columnas.
Ya sabemos que este conjunto de datos tiene observaciones NA. Vamos a eliminarlas y a verificar que efectivamente
no queda ninguno:
penguins=penguins.dropna()
print(penguins)
# Elimino aquellas filas donde se encuentre un NaN y lo guardo dentro de la misma variable para trabajar con ellaspeciesislandbill_length_mm ... body_mass_gsexyear0AdelieTorgersen39.1 ... 3750.0male20071AdelieTorgersen39.5 ... 3800.0female20072AdelieTorgersen40.3 ... 3250.0female20074AdelieTorgersen36.7 ... 3450.0female20075AdelieTorgersen39.3 ... 3650.0male2007
.. ... ... ... ... ... ... ...
339ChinstrapDream55.8 ... 4000.0male2009340ChinstrapDream43.5 ... 3400.0female2009341ChinstrapDream49.6 ... 3775.0male2009342ChinstrapDream50.8 ... 4100.0male2009343ChinstrapDream50.2 ... 3775.0female2009
[333rowsx8columns]
print(penguins.isna().any())
# Para verificar si existe algún nan utilizo la funcion isna() la cual demuestra que no hay datos NANsspeciesFalseislandFalsebill_length_mmFalsebill_depth_mmFalseflipper_length_mmFalsebody_mass_gFalsesexFalseyearFalsedtype: bool
¿Cuántos individuos hay de cada sexo? Puedes obtener la longitud media del pico según el sexo:
individuos_por_sexo=penguins["sex"].value_counts()
print(individuos_por_sexo)
# El conteo de la variable sex me muestra que existe un total de 168 machos y 165 hembras en mi muestramale168female165Name: sex, dtype: int64
Vamos a añadir una columna, vamos a realizar una estimación (muy grosera) del área del pico de los pingüinos
(bill) tal como si esta fuese un rectángulo. Esta nueva columnas se llama bill_area y debe encontrarse en la última
posición. Verifica que es correcto.
# Creo una nueva columna con el valor solicitado# El área de un rectangulo se calcula multiplicando la base x altura, en este caso bill_length x bill_depthbill_area=penguins["bill_length_mm"]*penguins["bill_depth_mm"]
# Agrego la columna a mi dataframepenguins["bill_area"] =bill_areaprint(penguins)
speciesislandbill_length_mm ... sexyearbill_area0AdelieTorgersen39.1 ... male2007731.171AdelieTorgersen39.5 ... female2007687.302AdelieTorgersen40.3 ... female2007725.404AdelieTorgersen36.7 ... female2007708.315AdelieTorgersen39.3 ... male2007809.58
.. ... ... ... ... ... ... ...
339ChinstrapDream55.8 ... male20091104.84340ChinstrapDream43.5 ... female2009787.35341ChinstrapDream49.6 ... male2009902.72342ChinstrapDream50.8 ... male2009965.20343ChinstrapDream50.2 ... female2009938.74
[333rowsx9columns]
# Para verificar que el resultado de mi nueva columna es correcto, lo verifico haciendo el calculo manual del primer dato# Y verifico que corresponda con mi primer resultado.comprobacion=penguins["bill_length_mm"][0]*penguins["bill_depth_mm"][0]
# El valor calculado manualmente es correcto ya que corresponde con el primer valor de la columna bill_area print(penguins["bill_area"][0] ==comprobacion)
comprobacion=True
Hagamos algo un poco más elaborado, vamos a realizar una agrupación en función del sexo y de la especie de cada
observación. Queremos obtener solamente la información referente al sexo Femenino.
# Para sacar la longitud media del pico por sexo primero aplico la funcion groupby y me quedo con los datos de "female"# Agrupopor_sexo=penguins.groupby('sex')
# Filtro datos "female"females=penguins.loc[por_sexo.groups['female'].values]
# Por ultimo vuelvo a agrupar por especie con la mean_bill_fem=females.groupby(["species"]).aggregate({"bill_length_mm":np.mean})
# Funcion group by, la cual me devolverá la longitud media del pico de cada especie de hembras.print(mean_bill_fem)
bill_length_mmspeciesAdelie37.257534Chinstrap46.573529Gentoo45.563793
Como ya sabemos, la variable peso, se encuentra en gramos, la pasaremos a kg. Para ello crearemos una nueva
columna llamada body_mass_kg y eliminaremos body_mass_g.
# Primero realizo la conversion de gr a kg dividiendo los gr en 1000body_mass_kg=penguins["body_mass_g"] /1000# Agrego a la nueva columna llamada 'body_mass_kr'penguins["body_mass_kg "] =body_mass_kg# Finalmente elimino la golumna 'body_mass_g'tabla_final=penguins.drop(columns=["body_mass_g"])
print(tabla_final)
speciesislandbill_length_mm ... yearbill_areabody_mass_kg0AdelieTorgersen39.1 ... 2007731.173.7501AdelieTorgersen39.5 ... 2007687.303.8002AdelieTorgersen40.3 ... 2007725.403.2504AdelieTorgersen36.7 ... 2007708.313.4505AdelieTorgersen39.3 ... 2007809.583.650
.. ... ... ... ... ... ... ...
339ChinstrapDream55.8 ... 20091104.844.000340ChinstrapDream43.5 ... 2009787.353.400341ChinstrapDream49.6 ... 2009902.723.775342ChinstrapDream50.8 ... 2009965.204.100343ChinstrapDream50.2 ... 2009938.743.775
[333rowsx9columns]