J'ajoute le texte contenu dans la deuxième colonne d'un certain nombre de fichiers csv dans une liste pour effectuer ultérieurement une analyse des sentiments sur chaque élément de la liste. Mon code fonctionne pleinement pour les gros fichiers csv pour le moment, mais l'analyse de sentiment que j'effectue sur les éléments de la liste prend trop de temps, c'est pourquoi je veux lire uniquement les 200 premières lignes par fichier csv. Le code se présente comme suit:

import nltk, string, lumpy 
import math
import glob
from collections import defaultdict
columns = defaultdict(list)
from nltk.corpus import stopwords
import math
import sentiment_mod as s
import glob

lijst = glob.glob('21cf/*.csv')

tweets1 = []
for item in lijst:
    stopwords_set = set(stopwords.words("english"))
    with open(item, encoding = 'latin-1') as d:
        reader1=csv.reader(d)
        next(reader1)
        for row in reader1:
            tweets1.extend([row[2]])
        words_cleaned = [" ".join([words for words in sentence.split() if 'http' not in words and not words.startswith('@')]) for sentence in tweets1]
        words_filtered = [e.lower() for e in words_cleaned]
        words_without_stopwords = [word for word in words_filtered if not word in stopwords_set]
    tweets1 = words_without_stopwords
    tweets1 = list(filter(None, tweets1))

Comment puis-je m'assurer de ne lire que les 200 premières lignes par fichier csv avec le lecteur csv?

1
Nienke Luirink 23 mai 2018 à 16:55

4 réponses

Meilleure réponse

Le moyen le plus court et le plus idiomatique consiste probablement à utiliser itertools.islice:

import itertools
...
        for row in itertools.islice(reader1, 200):
            ...
8
Thomas 23 mai 2018 à 13:59

Vous pouvez simplement ajouter un compte et interrompre lorsqu'il atteint 200, ou ajouter une boucle avec un range de 200.

Définissez une variable juste avant le début de votre boucle for pour row s:

count = 0

Puis à l'intérieur de votre boucle:

count = count + 1
if count == 200: 
    break
2
Gabriel Tapizquent 23 mai 2018 à 14:01

Pandas est un module populaire pour manipuler des données, comme les CSV. En utilisant des pandas, c'est ainsi que vous pourriez limiter le nombre de lignes.

import pandas as pd
# If you only want to read the first 200 (non-header) rows:
pd.read_csv(..., nrows=200)
0
Preston Badeer 21 août 2019 à 15:30

L'utilisation de readlines () devrait suffire il.

with open(item, encoding = 'latin-1').readlines()[0: 199] as d:
    reader1=csv.reader(d)
1
Charles 23 mai 2018 à 14:05