我将多个csv文件的第二列中包含的文本添加到一个列表中,以便稍后对列表中的每个项目执行情绪分析。我的代码目前完全适用于大型csv文件,但我对列表中的项目执行的情绪分析花费的时间太长,这就是为什么我只想读取每个csv文件的前200行。代码如下:
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))
如何确保只使用csv阅读器读取每个csv文件的前200行?
答案 0 :(得分:5)
最短且最惯用的方式可能是使用itertools.islice
:
import itertools
...
for row in itertools.islice(reader1, 200):
...
答案 1 :(得分:2)
您可以添加一个计数,并在达到200时中断,或者添加一个<iframe src="link/to/file.mp3" allow="autoplay">
为200的循环。
在range
s的for循环开始之前定义一个变量:
row
然后在你的循环中:
count = 0
答案 2 :(得分:1)
使用readlines()应该这样做。
with open(item, encoding = 'latin-1').readlines()[0: 199] as d:
reader1=csv.reader(d)
答案 3 :(得分:0)
Pandas是用于处理数据(例如CSV)的流行模块。使用大熊猫可以限制行数。
import pandas as pd
# If you only want to read the first 200 (non-header) rows:
pd.read_csv(..., nrows=200)