Saltar al contenido

La mejor manera de convertir columnas numéricas de un conjunto de datos con valores faltantes en una matriz

Posterior a de esta larga compilación de información dimos con la respuesta este disgusto que tienen algunos de nuestros lectores. Te compartimos la respuesta y nuestro deseo es serte de mucha apoyo.

Solución:

No está del todo claro si desea reemplazar las filas que contienen un Missing o si quieres dejarlos fuera. Cuando quiera omitirlos, la forma muy detallada sería escribirlo así:

Query[
  Select[!MissingQ[#"passengerAge"] && ! MissingQ[#"passengerWeight"] &], 
  #"passengerAge", #"passengerWeight" &
][ds]

y luego normalizando.

gráficos matemáticos

Query no es estrictamente necesario, pero debido a la buena publicidad de WReach, aprendí a preferirlo. Esto también es posible

ds[Select[! MissingQ[#"passengerAge"] && !MissingQ[#"passengerWeight"] &],
 #"passengerAge", #"passengerWeight" &]

Editar

¡Gracias por su respuesta! Preferiblemente, me gustaría el Missing para ser reemplazado por 0's.

Entonces probablemente:

Query[ReplaceAll[Missing[] -> 0], #"passengerAge", #"passengerWeight" &][ds]

Esto funciona:

Block[Missing,
 Missing[] = 0;
 ds[All, Select[NumberQ]][Values]]

ingrese la descripción de la imagen aquí

ds[associationIndex][Transpose][
  GroupBy[Query[DeleteMissing /* Query[Apply[And], NumericQ]]] /* 
   Query[Key[True] -> Query[All, All, Replace[_Missing -> 0.]]] /* 
   Values /* Apply[Join]][Transpose]

ingrese la descripción de la imagen aquí

donde la utilidad associationIndex es una de las docenas de frases ingeniosas incluidas en la API de mi próximo libro "Flujo de trabajo de datos funcionales".

associationIndex[a_Association]:=Query[Normal/*MapIndexed[First[#2]->#1&]/*Association][a]

associationIndex[l_List]:=Query[MapIndexed[First[#2]->#1&]/*Association][l]

Sin ella, después de la Apply[Join] tendrías que enhebrar keys de vuelta - tenga en cuenta el uso de corchetes Transpose. Tal conmutación es un patrón común, (por cierto Transpose también imputará Missing valores para normalizar los datos irregulares), pero tenga cuidado ya que el formulario de operación tiene errores (evité RightComposition)

Es posible que desee modificar la lógica a continuación para adaptarse a varias aplicaciones:

Query[DeleteMissing /* Query[Apply[And], NumericQ]]

Si solo desea la matriz numérica, no es necesario unirse:

ds[associationIndex][Transpose][
  GroupBy[Query[DeleteMissing /* Query[Apply[And], NumericQ]]] /* 
   Key[True] /* 
   Query[Values, Values, Replace[_Missing -> 0.]]][Transpose]

36.5, 186.5, 9., 90., 35., 0., 60., 160., 23., 0., 22., 122., 0. , 120, 0., 0., 17., 170.

Si para ti ha sido de ayuda nuestro artículo, nos gustaría que lo compartas con otros entusiastas de la programación de esta forma nos ayudas a dar difusión a nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.