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
我错过了什么?
答案 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()