2017-05-10 8 views

Répondre

9

null valeurs représente « aucune valeur » ou « rien », il est même pas une chaîne vide ou nulle. Il peut être utilisé pour représenter que rien d'utile n'existe. NaN signifie "Not a Number", c'est généralement le résultat d'une opération mathématique qui n'a aucun sens, par ex. 0.0/0.0.

Une façon possible de gérer valeurs nulles est de les supprimer avec:

df.na.drop() 

Ou vous pouvez les modifier à une valeur réelle (ici je 0) avec:

df.na.fill(0) 

Une autre façon serait de sélectionner les lignes où une colonne spécifique est null pour un traitement ultérieur:

df.where(col("a").isNull) 
df.where(col("a").isNotNull) 

lignes avec NaN peuvent également être sélectionnées en utilisant la méthode équivalente:

df.where(col("a").isNaN) 
+1

J'ai reçu les réponses complètes de @Shadio. Merci! –

+1

Voilà un exemple de réponse parfaite, juste sympa :) –

+0

Merci, gentil d'être utile. :) – Shaido

2

Vous pouvez diference votre NaN valeurs en utilisant la fonction isnan, comme cet exemple

>>> df = spark.createDataFrame([(1.0, float('nan')), (float('nan'), 2.0)], ("a", "b")) 
>>> df.select(isnan("a").alias("r1"), isnan(df.a).alias("r2")).collect() 
[Row(r1=False, r2=False), Row(r1=True, r2=True)] 

Le diference est dans le type de l'objet qui generetes la valeur. NaN (pas un nombre) est un moyen à l'ancienne de faire face à la "Aucune valeur pour un nombre", vous pouvez penser que vous avez tous les nombres (-1-2 ... 0,1,2 ...) et il y a le besoin d'avoir et de valeur supplémentaire, pour les cas d'erreurs (exemple, 1/0), je veux que 1/0 me donne un numéro, mais quel numéro? bien, comme il y a un nombre pour 1/0, ils créent une nouvelle valeur appelée NaN, qui est aussi de type Number.

Aucune n'est utilisée pour le vide, l'absence d'un élément, est encore plus abstraite, car à l'intérieur du type de nombre, vous avez, outre la valeur de NaN, la valeur None. La valeur None est présent dans tous les ensembles de valeurs de tous les types

+0

Merci, pourriez-vous indiquer la différence entre les deux types de nul et Nan étincelle? Je suis toujours confus au sujet de la raison pour laquelle l'étincelle sort de ces deux types pour ne rien représenter. –

+0

Oui bien sûr, je vais l'ajouter –

+0

J'espère que cela éclaire votre esprit, votre question était très intéressante, car il n'est pas simple à comprendre et à faire face à ce genre de concepts. Nice :) –