Habitación 1: Explorador de Datos
Mix.install([
{:explorer, "~> 0.11.1"},
{:kino, "~> 0.19.0"},
{:kino_explorer, "~> 0.1.25"},
{:helpers, path: Path.expand("../helpers", __DIR__)}
])
defmodule Room do
require Explorer.DataFrame, as: DF
def verify(info, desc) do
case Enum.count(info) > 12 do
true -> case desc do
%DF{} -> Helpers.Messages.correct("03.livemd", "Has explorado correctamente el dataset.")
_ -> Helpers.Messages.error("Revisa bien las instrucciones...\nLa variable `desc` debe ser el resultado de `DF.describe()`.")
end
_ -> Helpers.Messages.error("Revisa bien las instrucciones...\n¿Estás seguro que cargaste `info` correctamente?")
end
|> Kino.Markdown.new()
end
end
Contexto
El sistema se ha reiniciado parcialmente…
Pero las puertas siguen bloqueadas.
En la pantalla aparece un mensaje del Profesor Oak:
> “Un verdadero Maestro Pokémon debe conocer bien sus datos antes de analizarlos. > Solo podrás avanzar si logras explorar la estructura y características de los Pokémon.”
Explorar datos en Elixir
Para obtener información general de un DataFrame se pueden utilizar las siguientes funciones:
require Explorer.DataFrame, as: DF
-
DF.names(): Obtiene los nombres de las columnas. -
DF.dtypes(): Obtiene los tipos de datos de las columnas. -
DF.n_rows(): Obtiene la cantidad total de filas. -
DF.n_columns(): Obtiene la cantidad total de columnas. -
DF.estimated_size(): Obtiene el tamaño estimado del DataFrame. -
DF.describe(): Ver estadísticas básicas de las columnas numéricas.
Desafío de la Habitación
Ya cargaste los datos en la sala anterior (df).
Ahora:
-
Crea una variable llamada
infoque almacene el resultado deDF.names()(solo ejecutarlo está bien). -
Crea una variable llamada
descque almacene el resultado deDF.describe().
require Explorer.DataFrame, as: DF
file = Path.expand("../files/pokemon.csv", __DIR__) # "pokemon.csv"
df = file
# |> Kino.FS.file_path()
|> DF.from_csv!()
Crear la variable info
info = DF.names(df)
Crear la variable desc
desc = DF.describe(df)
Verificar tu respuesta
Room.verify(info, desc)