Maison >développement back-end >Tutoriel Python >Comment gérer l'avertissement Dtype de Pandas : options Low_Memory et Dtype ?

Comment gérer l'avertissement Dtype de Pandas : options Low_Memory et Dtype ?

DDD
DDDoriginal
2024-11-07 10:06:02513parcourir

How to Handle Pandas' Dtype Warning: Low_Memory and Dtype Options?

Résolution de l'avertissement Dtype de Pandas avec les options Low_Memory et Dtype

Lors du chargement d'un fichier CSV avec Pandas à l'aide de pd.read_csv('somefile.csv'), vous pouvez rencontrer un avertissement :

DtypeWarning: Columns (4,5,7,16) have mixed types. Specify dtype option on import or set low_memory=False.

Low_Memory : un concept obsolète

L'option low_memory est obsolète et n'a aucun impact fonctionnel. Son objectif était de réduire l'utilisation de la mémoire lors de l'analyse des fichiers en empêchant l'inférence de type. Cependant, il ne fait plus rien de différent.

Pourquoi Low_Memory=False peut aider ?

L'avertissement apparaît car deviner les types de chaque colonne nécessite beaucoup de ressources. Pandas détermine les types en analysant l'intégralité du fichier. Sans définir explicitement les types, il ne peut pas commencer l'analyse tant que le fichier complet n'est pas lu.

Pourquoi définir les types est primordial

Spécifier les types (par exemple, dtype={'user_id': int}) informe Pandas sur les types de données attendus, lui permettant de commencer l'analyse immédiatement.

pd.read_csv('somefile.csv', dtype={'user_id': int})

La définition de types de données peut éviter les erreurs lors de la rencontre de types de données non valides (par exemple, "foobar" dans une colonne entière).

Comprendre les types Pandas

Pandas prend en charge divers types, notamment :

  • Types Numpy : float, int, bool, timedelta64[ns], datetime64[ns]
  • Spécifique aux pandas :

    • datetime64[ns, ] : horodatage prenant en compte le fuseau horaire
    • catégorie : énumération représentée par des entiers
    • période[] : Périodes de temps
    • Sparse[int], Sparse[float] : Données avec des valeurs manquantes
    • Intervalle : Indexation
    • entiers nullables : Int8, Int16, Int32, Int64, UInt8 , UInt16, UInt32, UInt64
    • string : accès à l'attribut .str
    • booléen : prend en charge les données manquantes

Attentions

  • Le paramètre dtype=object supprime l'avertissement mais n'améliore pas l'efficacité de la mémoire.
  • Le paramètre dtype=unicode est inefficace car Numpy représente l'Unicode en tant qu'objet.

Alternative : Utilisation de convertisseurs

ToUse pour gérer des données potentiellement invalides (par exemple, "foobar" dans une colonne entière). Cependant, les convertisseurs sont lents et inefficaces, alors utilisez-les avec prudence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn