Maison > Article > développement back-end > Pourquoi devriez-vous éviter l'option « low_memory » et définir explicitement des types lors de l'utilisation de Pandas « read_csv » ?
Lors de l'utilisation de pandas pour importer un fichier CSV, les utilisateurs peuvent rencontrer une erreur concernant des types de données mixtes dans des colonnes spécifiques , invitant la suggestion de spécifier l'option dtype ou de définir low_memory sur False. Pour approfondir cette question, nous devons comprendre la signification des deux paramètres.
L'option low_memory est conçue pour conserver la mémoire lors de l'ingestion de données mais n'est plus conseillée. à utiliser car il ne sert à rien en pratique. La raison en est que deviner les types de données pour chaque colonne d’un ensemble de données nécessite beaucoup de mémoire. Pandas tente de déterminer le type approprié en examinant les données de chaque colonne. Cependant, ce processus nécessite que l'intégralité du fichier soit lu afin d'attribuer les types de données corrects, ce qui peut s'avérer inefficace pour des ensembles de données plus volumineux.
Par défaut, Pandas déduit le type pour chaque colonne après avoir lu l'intégralité du fichier. Cette approche pose des défis lorsqu'il s'agit de colonnes contenant des données mixtes, où le type ne peut pas être déterminé tant que toutes les valeurs n'ont pas été traitées. Par exemple, une colonne intitulée "user_id" peut être constituée uniquement de valeurs numériques mais ne peut pas se voir attribuer le type int tant que la colonne entière n'a pas été lue. En effet, les Pandas ne peuvent pas supposer que toutes les valeurs seront numériques sans risquer de devoir modifier le type ultérieurement.
Pour éviter les limitations de dtype devinant, il est impératif de spécifier explicitement le dtype pour chaque colonne à l'aide du paramètre dtype. Cette approche élimine le besoin pour Pandas d'analyser l'intégralité du fichier et attribue immédiatement le type approprié en fonction du type spécifié.
Prenons l'exemple d'un fichier CSV avec une colonne nommée "user_id" contenant uniquement des valeurs numériques. En ajoutant "dtype={'user_id': int}" à l'appel pd.read_csv(), Pandas reconnaîtra la colonne comme un entier dès le début du processus d'importation.
Pandas prend en charge une gamme complète de types, y compris les types de données numpy (par exemple, float, int, bool) et les types spécifiques à Pandas (par exemple, « catégorie », « Sparse »). La liste complète des dtypes disponibles dans Pandas peut être trouvée dans la référence dtype : Pandas dtype reference
Définir dtype sur 'object' supprimera l'avertissement de types de données mixtes mais ne le fera pas. améliorer l'efficacité de la mémoire. Définir dtype sur « unicode » est inefficace car Numpy représente l'Unicode comme « objet ».
L'utilisation de convertisseurs peut aider à gérer des données non conformes, telles qu'une valeur de chaîne dans une colonne spécifiée sous forme d'entier. Cependant, les convertisseurs peuvent être coûteux en termes de calcul et doivent être utilisés avec parcimonie.
Bien que l'option low_memory ne soit plus recommandée, la spécification des types appropriés est essentielle pour un traitement de données efficace et précis. En évitant de deviner les dtypes et en définissant les types de données corrects à l'avance, les utilisateurs peuvent optimiser l'utilisation de la mémoire et améliorer les performances de leur code Pandas.
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!