Pandas chunksize

Pandas chunksize
Les scientifiques des données ou les professionnels doivent souvent gérer les ensembles de données dont la taille est beaucoup plus grande que la mémoire de leur système local. Il est difficile de comprendre comment gérer efficacement la mémoire tout en permettant l'utilisation la plus efficace des données. Lorsque vous traitez avec un grand bloc de données qui ne rentrera pas dans la mémoire, vous pouvez diviser les données en portions plus petites en utilisant l'option ChunkSize de Pandas. En choisissant cette option, un objet Iterator est produit qui peut être utilisé pour parcourir les différents morceaux et effectuer un filtrage ou une analyse de la même manière que l'on le ferait lors du chargement de l'ensemble de données entier.

Comment charger de grandes données à l'aide de la taille de pandas

Pandas est un outil de source ouverte puissant et convivial pour l'analyse des données construit sur Python qui permet l'importation et la visualisation des données dans divers formats, tels que .TSV, .CSV, .db, et .fichiers txt. Seul ".Les fichiers CSV »seront utilisés dans les exemples suivants, bien que la technique soit la même pour les autres formats de fichiers. La fonction read_csv () sera utilisée pour lire les fichiers CSV.

Paramètres:

filepath_or_bufferstr: Un chemin de chaîne valide peut être utilisé. De plus, une URL pourrait être dans la chaîne. Les schémas URL acceptables sont FTP, S3, HTTP, GS et Fichier. Il devrait y avoir un hôte pour les URL de fichier. Voici un exemple de fichier local: fichier: / localhost / path / to / table.CSV.

Iteratorbool: Renvoie un objet TextFileReader pour itérer via le fichier ou pour récupérer des morceaux à l'aide de get_chunk ().

Chunksize: Accepte int; c'est un paramètre facultatif. Pour itération, il renvoie un objet TextFileReader.

L'argument ChunkSize de la fonction read_csv () est celui qui nous intéresse par cet article. Techniquement, ChunkSize fait référence au nombre de lignes par seconde pandas lues à partir d'un fichier. On peut dire que les 100 premières lignes seront chargées par des pandas si le chunksize est spécifié comme 100. L'objet renvoyé est un TextFileReader qui doit être itéré pour récupérer les données.

Exemple n ° 1: Chargez les données à l'aide de la fonction read_csv () sans chunksize

Pour cet exemple, nous téléchargerons un ensemble de données avec un .Extension de fichier CSV à partir de tout site Web open-source. Vous pouvez télécharger l'ensemble de données requis à partir de plusieurs sites Web sur Internet. Pour charger un fichier en pandas, nous importerons d'abord la bibliothèque Pandas. Après l'importation des pandas, nous utiliserons la fonction read_csv () pour charger le fichier dans notre environnement actuel. Un fichier CSV est importé dans le format DataFrame à l'aide de la fonction pandas read_csv ().

Vous remarquerez que avec Pandas, nous avons également importé une bibliothèque Pprint car les structures de données peuvent être imprimées d'une manière compréhensible et attrayante en utilisant le module Python Pprint. Après avoir importé les modules, nous avons chargé notre .Fichier CSV en mettant le nom du fichier avec l'extension de fichier à l'intérieur du PD.Fonction read_csv (). Pour afficher nos colonnes à l'intérieur du DataFrame, nous avons utilisé le PD.Attribut des colonnes. Ces étiquettes de colonne nous permettent d'accéder aux éléments d'un dataframe et à effectuer une manipulation de données. Les «pandas. Trame de données.L'attribut Colonnes »est utilisé pour obtenir les étiquettes de colonnes individuelles à partir d'un dataframe. Le .L'attribut de forme peut être utilisé pour voir le nombre de colonnes et de lignes dans notre DataFrame.

La valeur «90836» est le nombre total de lignes dans notre dataframe, comme nous l'avons vu ci-dessus, il y a dix colonnes dans notre dataframe, i.e., «Notes».

Exemple n ° 2: Chargez une grande quantité de données à l'aide de ChunkSize dans la fonction read_csv ()

Dans cet exemple, nous téléchargerons un autre ensemble de données sur Internet. La même fonction read_csv () sera utilisée pour charger le fichier. Mais cette fois, nous spécifierons un paramètre «ChunkSize» à l'intérieur de la fonction. Avant d'utiliser notre fonction read_csv (), nous importerons les bibliothèques Pandas et Pprint.

Voyons le nombre total de colonnes et de lignes dans notre fichier de jeu de données sans utiliser un paramètre ChunkSize.

Nous avons lu l'ensemble de données fourni dans l'exemple précédent et avons présenté ses détails. Les lignes et les colonnes renvoyées par l'attribut «Shape» sont respectivement de 5704247 et 5. À l'aide de l'attribut «info», nous montrons également des détails sur les lignes et les colonnes de l'ensemble de données.

Comme nous pouvons le voir, cet ensemble de données a 5704247 lignes, et le traitement des ensembles de données massifs utilise une grande partie de la RAM de l'ordinateur. Le paramètre ChunkSize dans ces circonstances peut être utilisé pour sauver nos ressources.

Un objet TextFileReader est renvoyé en utilisant la fonction ChunkSize à l'intérieur de la fonction read_csv (). Lorsque le paramètre ChunkSize est passé à la fonction read_csv (), un lecteur TextFileReader est créé. Le fichier d'origine peut être lu en morceaux à l'aide de cet objet de forme ouverte. En interne, la boucle FOR crée des itérateurs pour ces objets en appliquant la méthode iter (). Nous recevons un itérateur lorsque nous employons l'argument ChunkSize. Pour obtenir les valeurs, nous pouvons parcourir cet objet. L'ensemble de données est lu dans des morceaux de données avec les lignes spécifiées dans l'exemple précédent car l'argument ChunkSize a fourni une valeur. Le paramètre ChunkSize a été spécifié à 1000000 pour notre ensemble de données, résultant en six itérateurs.

Exemple # 3: Un autre exemple de paramètre ChunkSize

Comme indiqué précédemment, ChunkSize est le paramètre utilisé dans Python fréquemment pour lire les fichiers volumineux ou les ensembles de données. ChunkSize divise les données en temps réel tout en lisant dans des sections plus petites appelées morceaux, ce qui augmente l'efficacité globale du programme; Si nous lisons un .Fichier CSV sans ce paramètre.

Les pandas sont fréquemment utilisés pour stocker une grande quantité de données; Ils permettent une lisibilité facile et un accès aux données en peu de temps. Le fichier donné (notes.CSV) a des données de 1048575 patients dans les 1048575 et 4 colonnes. Lorsque ce fichier est lu par un programme sans aucun paramètre spécifique, il faudra beaucoup de temps pour traiter autant d'informations, ce qui rend le programme moins efficace. Lorsque nous rencontrons ce type de grandes données, nous utilisons des paramètres comme ChunkSize. Le paramètre ChunkSize utilise des itérateurs pour itérer sur un conteneur spécifique, comme la liste, et peut être couplé à différentes boucles.

Dans l'exemple précédent, la structure de données Pandas est utilisée pour lire et stocker les informations, et ChunkSize est également utilisé, ce qui itère sur un objet pour obtenir les valeurs. Il lit notre fichier donné dans les sous-sections de données (morceaux). Plus précisément pour l'ensemble de données donné, quatre itérateurs ont été spécifiés pour le chunksize de 250000. La valeur renvoyée après la lecture de l'objet n'est pas le dataframe mais un analyseur de pandas, je.e., pandas.Io.analyseurs.TextFileReader. Ceux-ci sont responsables de la transversale sur l'objet et des valeurs entraînant la fin. La chose à noter ici est que le numéro de colonne est le même pour chaque itérateur, ce qui indique que le paramètre «ChunkSize» utilise uniquement le nombre de lignes, pas la colonne, pendant la création de l'itérateur.

Conclusion

Dans ce didacticiel, nous avons vu que la mémoire de leur machine locale ne peut pas s'adapter à la taille des ensembles de données que les données des données gèrent généralement. Par conséquent, lors de la lecture d'énormes ensembles de données, nous utilisons l'argument ChunkSize pour décomposer l'ensemble de données en morceaux de données. Maintenant, après avoir lu ce tutoriel, vous pourrez peut-être utiliser l'argument ChunkSize vous-même. Nous avons mis en œuvre quelques exemples pour vous apprendre à diviser votre ensemble de données avec le .Extension de fichier CSV en petits morceaux.