python中的计数器没有显示所有单词

时间:2015-11-16 22:49:26

标签: python csv pandas counter

A有一个csv文件,我希望所有字数统计为该文件中包含的单词,其中包含列为word,count的单独CSV。

所以我写的python脚本如下:

#!/usr/bin/python
from collections import Counter
import pandas

wordslist = []
f = open('Sample.csv')
for word in f.read().split():
    wordslist.append(word)

Freq = Counter(wordslist)

A = Freq.items()

# for item in Freq.items(): 
#   print(item)

# print len(Freq)

pd = pandas.DataFrame(A)
pd.to_csv("WordCounter.csv", header=False, encoding='utf-8')

csv中的单词数是6672,我发现如下:

cat Sample.csv | wc -w

但是,我假设我的脚本输出csv中的行数也应该等于6672(即我输入文件Sample.csv中的总字数),因为每个单词及其计数存储在一个单词中输出文件的行。

但是,它似乎比6672低1036:

cat WordCounter.csv | wc -l

我错过了什么?

1 个答案:

答案 0 :(得分:2)

每个UNIQUE字一次存储在输出文件的一行中。您的文件中没有6672个唯一单词。如果有输出文件将是:

word0 | 1
word1 | 1
word2 | 1

实际上是:

word0 | 10
word1 | 5
word2 | 2

您可能还应该删除标点符号以获得您真正想要的内容,否则会发生这种情况:

word0  | 4
word0, | 2
word0. | 3

编辑:您还可以稍微简化一下代码:

替换

wordslist = []
f = open('Sample.csv')
for word in f.read().split():
    wordslist.append(word)

使用:

with open('Sample.csv') as f:
    wordslist = f.read().split()