IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Suppression lignes NaN - Pandas


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 17
    Par défaut Suppression lignes NaN - Pandas
    Bonjour !

    J'ai un tableau avec des NaN dans certaines colonnes.
    J'aimerais supprimer les lignes de mon dataset lorsqu'il y a 2 NaN dans la ligne (comme ici la première ligne par exemple).

    Nom : Capture d’écran 2021-02-04 110049.jpg
Affichages : 3194
Taille : 60,4 Ko

    J'ai trouvé un moyen de supprimer une ligne lorsqu'il y a au moins un NaN dedans mais ce n'est pas vraiment ce que je veux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    d_f = data[list_colonnes]
    index_with_nan = d_f.index[d_f.isnull().any(axis=1)]
    index_with_nan
    d_f.drop(index_with_nan,0, inplace=True)
    d_f

    Merci beaucoup pour votre aide !

  2. #2
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 17
    Par défaut
    J'ai essayé avec ça mais ça n'a pas l'air de fonctionner :

    Personne n'a d'idée ?

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur banc de test
    Inscrit en
    Mai 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur banc de test
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 199
    Par défaut
    Bonjour,

    je viens d'essayer, c'est bien la syntaxe d_f.dropna(thresh=2).

    L'exemple donné dans la doc : https://pandas.pydata.org/pandas-doc...me.dropna.html

    Ça permet bien de supprimer les lignes contenant au moins 2 NaN/NaT.

    Il faudrait s'assurer que vos NaN sont bien de type float : float('nan'), np.nan
    et non en str.

    Car 'NaN' sera affiché pareil en print mais ne pourra pas être reconnu comme une valeur Not a Number.


    Essayez cette syntaxe pour inspecter chaque type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pd.DataFrame([(type(c).__name__ for c in row) for i, row in d_f.iterrows()])
    qui devrait afficher un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
           0    1      2
    0    int  int  float
    1    int  int  float
    2    str  int  float
    3    int  int  float
    4    int  int  float
    5  float  int  float
    6    int  int  float
    7    int  int  float
    8    int  int  float
    9    int  int  float
    Si les éléments NaN sont indiqués str c'est qu'il faut les convertir au préalable en float.

    Avec la syntaxe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d_f.replace("NaN", np.nan)

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 17
    Par défaut
    Bonjour !

    Au final j'ai réussi à résoudre mon problème, il fallait juste écrire d_f = devant pour attribuer les nouvelles données à mon tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d_f = d_f.dropna(thresh=2)
    Merci pour votre aide !

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par plikplak06 Voir le message
    il fallait juste écrire d_f = devant pour attribuer les nouvelles données à mon tableau.
    Il fallait... non ajouter l'argument inplace=True à dropna l'aurait fait tout aussi bien. C'est comme pour tout les outils: lire le mode d'emploi est une étape nécessaire.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Suppression ligne avec NaN
    Par nietsab86 dans le forum MATLAB
    Réponses: 10
    Dernier message: 24/06/2014, 13h21
  2. [BATCH] Suppression Ligne
    Par kilian dans le forum Windows
    Réponses: 2
    Dernier message: 24/05/2006, 14h02
  3. [VBA][EXCEL] pb suppression ligne
    Par megapacman dans le forum Access
    Réponses: 2
    Dernier message: 06/04/2006, 13h34
  4. [JTable] probleme suppression ligne
    Par lilou77 dans le forum Composants
    Réponses: 1
    Dernier message: 01/11/2005, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo