2013-02-08 1 views
1

Fondamentalement, je voudrais identifier si les valeurs manquantes dans l'ensemble de données sont continuellement répétées ou non. S'il y a des valeurs manquantes répétées de façon répétée dans l'ensemble de données, j'aimerais savoir si les longueurs de chaque ensemble de valeurs manquantes répétées en continu sont au-dessus du nombre de certiates ou non.Identifier ou compter en continu le nombre répété (en fait la valeur manquante: nan) dans la liste

Par exemple:

data =['1', '0', '9', '31', '11', '12', 'nan', '10', '44', '53', '12', '66', '99', '3', '2', '6.75833',....., 'nan', 'nan', 'nan', '3', '7', 'nan', 'nan'] 

Dans data ci-dessus, le nombre total de 'nan' serait 6 et il pourrait être calculé avec data.count('nan'). Cependant, ce que je veux savoir, c'est combien continuellement la valeur manquante peut être répétée. Pour ces données, la réponse serait 3.

Je m'excuse de ne pas montrer mon exemple de code, mais je suis très novice dans ce domaine et je ne pouvais avoir aucune idée de codage.

Une idée, une aide ou des astuces seraient vraiment appréciées.

+0

Êtes-vous vraiment en utilisant des chaînes comme ' 'nan'' ou utilisez-vous' numpy.nan'? – wim

Répondre

3

Cela ressemble à un travail pour itertools.groupby():

>>> from itertools import groupby 
>>> data =['1', '0', '9', '31', '11', '12', 'nan', '10', '44', '53', 
      '12', '66', '99', '3', '2', '6.75833', 'nan', 'nan', 'nan', 
      '3', '7', 'nan', 'nan'] 
>>> [len(list(group)) for key, group in groupby(data) if key == 'nan'] 
[1, 3, 2] 

Notez que si votre code a en fait réel NaN au lieu de chaînes, le test d'égalité if key == 'nan' doit être remplacé par math.isnan(key).

+0

Merci beaucoup. Je vous le ferai savoir après l'avoir essayé. – Isaac

+0

Je l'apprécie vraiment. Cela fonctionne aussi bien que je le pensais. – Isaac

2

Ou vous pouvez essayer celui-ci, ce qui est plus rapide:

grouped_L = [sum(1 for i in group) for k,group in groupby(L)] 
Questions connexes