Tout d'abord, vous devez être en mesure d'accéder simplement la colonne que vous êtes intéressé à faire avec une tranche.
data[:,2] # grab all rows, and just the column with index 2
Maintenant, vous voulez compter les occurrences qui sont NaN
:
np.count_nonzero(np.isnan(data[:,2]))
Et nous voulons compter le nombre de zéro éléments:
data[:,2].size - np.count_nonzero(data[:,2])
Et si l'on ajoute les ensemble:
data[:,2].size - np.count_nonzero(data[:,2]) + np.count_nonzero(np.isnan(data[:,2]))
Ceci est ennuyeux, mais, puisque la 3ème colonne n'a pas 0
ou NaN
en elle. Lets essayer avec la dernière colonne:
>>> slice = data[:,3]
>>> slice.size - np.count_nonzero(slice) + np.count_nonzero(np.isnan(slice))
3
modifier Je dois expliquer pourquoi cela fonctionne:
np.isnan(data[:,2])
donne un tableau de True
et False
sur la base si elle est un NaN
ou non. True
, lorsqu'il est considéré comme un nombre, est converti en 1
et np.count_nonzero valeurs NaN`.
np.count_nonzero(data[:,2])
compte le nombre de non-zéro directement. Si nous soustrayons le nombre d'éléments non-zéro du nombre total d'éléments, nous obtiendrons le nombre 0
s.
Pouvez-vous être plus précis sur ce dont vous avez besoin? Quelle est la sortie que vous voulez par exemple? – Psidom
c'est ce que j'essaie de comprendre aussi ... c'est comme ça que la question a été formulée. Donc je suppose que je dois juste retourner combien de cellules dans le fichier csv est vide, nan ou 0. –
devrait être 'data = np.array ([[1, 2000, 143, 4546], [2, 1999, 246 , 0], [3, 2008, 190, np.NAN], [4, 2000, 100, 0]]) – RagingRoosevelt