"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment gérer efficacement les grands fichiers CSV dans Python 2.7?

Comment gérer efficacement les grands fichiers CSV dans Python 2.7?

Publié le 2025-03-05
Parcourir:611

How to Effectively Handle Large CSV Files in Python 2.7?

Lire les grands fichiers .csv dans python

Problème: Reading Massive .csv Fichiers (jusqu'à 1 million de lignes, 200 colonnes) dans Python 2.7 relève des erreurs de mémoire. Cependant, cette méthode devient peu pratique pour les fichiers volumineux, car il consomme une mémoire excessive.

Solution:

1. Processez les lignes telles qu'elles sont produites:

Évitez de charger le fichier entier en mémoire. Au lieu de cela, traitez les lignes telles qu'elles sont générées à l'aide d'une fonction de générateur.

def getStuff (nom de fichier, critère): avec ouvert (nom de fichier, "RB") comme CSVFile: DataReader = CSV.Reader (CSVFile) rendement suivant (DataReader) # rendement la ligne d'en-tête Pour Row dans DataReader: Si Row [3] == Critère: Row Row

def getstuff(filename, criterion):
    with open(filename, "rb") as csvfile:
        datareader = csv.reader(csvfile)
        yield next(datareader)  # yield the header row
        for row in datareader:
            if row[3] == criterion:
                yield row
2. Utilisez des fonctions de générateur pour filtrer:

Filtrez les données tout en itérant dans le fichier à l'aide des fonctions du générateur. Cette approche permet de faire correspondre plusieurs lignes consécutives répondant à un critère spécifique.

def getStuff (nom de fichier, critère): avec ouvert (nom de fichier, "RB") comme CSVFile: DataReader = CSV.Reader (CSVFile) rendement suivant (DataReader) # rendement la ligne d'en-tête Rendement de Take Whik ( lambda r: r [3] == critère, Drop-the (Lambda r: r [3]! = Criterion, dataReader)) return

def getstuff(filename, criterion):
    with open(filename, "rb") as csvfile:
        datareader = csv.reader(csvfile)
        yield next(datareader)  # yield the header row
        for row in datareader:
            if row[3] == criterion:
                yield row
3. Optimiser la consommation de mémoire:

Refactor getData () pour utiliser également une fonction de générateur, en veillant à ce qu'une seule ligne soit maintenue en mémoire à tout moment.

def getData (nom de fichier, critères): pour les critères de critères: pour Row in GetStuff (nom de fichier, critère): Row Row

def getstuff(filename, criterion):
    with open(filename, "rb") as csvfile:
        datareader = csv.reader(csvfile)
        yield next(datareader)  # yield the header row
        for row in datareader:
            if row[3] == criterion:
                yield row
Conseils supplémentaires pour la vitesse:

    Utilisez CSV.Reader avec un paramètre de taille de morceau:
  • Lire les fichiers dans des chunks plus petits pour réduire le moteur de la mémoire. dans une base de données pour un traitement plus rapide et plus efficace.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3