计算csv中的单词出现次数并确定行外观

时间:2017-07-27 00:55:33

标签: python python-3.x csv word-count

我在一列中有一个csv文件,如下所示。符号和数字仅用于显示文件不仅包含文本。我有两个目标:

  1. 计算单词的出现次数;
  2. 确定单词出现的行数。
  3. Stuff
    I like apples. Sally likes apples.
    Jim has 4 berries.  !@#
    John has 2 apples.
    

    理想情况下,代码应该返回如下内容: {apples:3} {行数:2}

    我已经编写了一些代码来尝试计算出现次数,但它没有正常运行(假设是因为标点符号)。另外,我不知道如何确定单词出现的行数;这可以像计算每行中唯一出现次数一样简单,但我不确定如何继续。这是我到目前为止的代码,在Python 3.6.1中完成:

    import csv
    my_reader = csv.reader(open('file.csv', encoding = 'utf-8'))
    ctr = 0
    for record in my_reader:
        if record[0] == 'apples':
            ctr += 1
    print(ctr)
    

    代码只返回0作为答案。帮助

3 个答案:

答案 0 :(得分:0)

您正在比较row == 'apple,您需要的是if 'apple' in row。要计算出现的事件,您可以使用str.count(),例如:

import csv
my_reader = csv.reader(open('file.csv', encoding = 'utf-8'))
ctr = 0
rows = 0
for record in my_reader:
    if 'apples' in record[0]:
        rows += 1
        ctr += record[0].count('apples')

print('apples: {}, rows: {}'.format(ctr, rows))

通过这种方式,您将检查row是否包含apples,然后将rows增加1,并将ctr的{​​{1}}增加apples row 1}}。

答案 1 :(得分:0)

import collections
import csv

occurrences = collections.defaultdict(lambda: collections.Counter())
with open('path/to/file') as infile:
    for r,row in enumerate(csv.reader(infile)):
        r = (r,)
        for word in (w for col in row for w in col.split()):
            occurrences[word].update(r)

for word,occs in occurrences.items():
    print("{} appears {} times on {} rows".format(word, sum(occs.values()), len(occs)))

答案 2 :(得分:0)

我不知道你为什么使用csv阅读器,因为你没有使用任何csv文件。

这是一个代码,可以使用更少的代码完成您所需的工作。

df[df.c2.rank(pct=True).gt(.8)]

  c1  c2
5  f  98
9  j  99

以下是运行的代码: https://repl.it/JkVn/1