Maison  >  Article  >  développement back-end  >  Comment lire et traiter efficacement des fichiers CSV volumineux en Python ?

Comment lire et traiter efficacement des fichiers CSV volumineux en Python ?

DDD
DDDoriginal
2024-11-09 11:58:02535parcourir

How to Effectively Read and Process Large CSV Files in Python?

Lecture efficace de gros fichiers CSV

La lecture et le traitement de gros fichiers CSV en Python peuvent être difficiles en raison des limitations de mémoire. Ce problème devient encore plus important avec les fichiers contenant des millions de lignes et des centaines de colonnes.

Problèmes de mémoire et optimisation

Votre code actuel tente de lire et de stocker les données du Fichier CSV dans une liste. Cependant, cette approche est inefficace pour les fichiers volumineux car elle charge l'intégralité de l'ensemble de données en mémoire.

Pour résoudre ce problème de mémoire, traitez les données au fur et à mesure que vous les lisez. Utilisez une fonction génératrice qui génère une ligne à la fois, comme illustré ci-dessous :

import csv

def getstuff(filename, criterion):
    with open(filename, "rb") as csvfile:
        datareader = csv.reader(csvfile)
        yield next(datareader)  # yield the header row
        count = 0
        for row in datareader:
            if row[3] == criterion:
                yield row
                count += 1
            elif count:
                # stop when exceeding the adjacent rows of criteria
                return

Ce code mis à jour génère des lignes qui correspondent au critère spécifié, ligne par ligne. Il élimine le besoin de conserver l'intégralité de l'ensemble de données en mémoire.

Améliorations des performances

Au-delà de l'optimisation de la mémoire, il existe des techniques supplémentaires pour améliorer les performances :

  • Utilisez un analyseur de streaming : Pensez à utiliser une bibliothèque CSV prenant en charge le streaming, ce qui vous permet de traiter les données de manière incrémentielle sans les charger en mémoire.
  • Paralléliser le traitement : Si votre système le prend en charge, explorez le traitement parallèle en répartissant la charge de travail sur plusieurs cœurs ou processeurs.
  • Cache les données fréquemment consultées : Si possible, mettez en cache la partie de l'ensemble de données consultée à plusieurs reprises pour minimisez le besoin de le relire.
  • Optimisez votre code : Examinez votre code pour détecter toute opération inutile ou inefficace susceptible de ralentir le traitement.

Par en utilisant ces stratégies, vous pouvez améliorer considérablement l'efficacité de votre code Python pour gérer les gros fichiers CSV.

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