如何解决是什么引起问题:csv,pandas或nltk?
我有一个奇怪的问题,导致NLTK搭配输出错误。简而言之,当我将在python envi中创建的pandas对象(PyCharm或Jupyter)传递给函数时,会得到正确的结果。当我将该对象保存到csv并将其上传到pandas对象时,函数将返回单个字母和/或数字而不是完整单词。通过熊猫上传csv一定是错的,但我不知道这是怎么回事...
这是代码。
应用的功能:
def counts(x):
trigram_measures = nltk.collocations.BigramAssocMeasures()
finder = BigramCollocationFinder.from_documents(x)
finder.nbest(trigram_measures.pmi,100)
s = pd.Series(x)
ngram_list = [pair for row in s for pair in ngrams(row,3)]
c = Counter(ngram_list).most_common(3)
return pd.DataFrame([(x.name,) + element for element in c],columns=['group','Ngram','Frequency'])
这里是对象:
d = {'words' : pd.Series((['coffee','maker','brewing','properly','2','420','420'],['galley','work','table','stuck'],['cloth',['stuck','coffee'])),'group' : pd.Series([1,2,1,2])}
df_cleaned = pd.DataFrame(d)
然后我从上面应用函数+一些额外的函数:
output = df_cleaned.groupby('group',as_index=False).words.apply(counts).reset_index(drop=True)
结果正确:
但是当保存熊猫对象并上传结果时,是这样的:
以下是用于保存和上传的代码:
df.to_csv('test_file.csv',index=False,sep=',')
df = pd.read_csv('path/test_file.csv',',usecols=['group','words'])
我在上载的熊猫对象中找到了引号,因此在应用此功能之前已将其删除。”
df = df.replace({'\'': ''},regex=True)
output = df_cleaned.groupby('group',as_index=False).words.apply(counts).reset_index(drop=True)
现在它返回错误的结果。
有什么建议我应该走哪条路?
解决方法
我转载了您在以下步骤中描述的内容。我没有看到任何错误
import pandas as pd
d = {'words' : pd.Series((['coffee','maker','brewing','properly','2','420','420'],['galley','work','table','stuck'],['cloth',['stuck','coffee'])),'group' : pd.Series([1,2,1,2])}
df_cleaned = pd.DataFrame(d)
df_cleaned
您正在使用的功能是
import nltk
from nltk.util import ngrams
from nltk.collocations import *
from collections import Counter
def counts(x):
trigram_measures = nltk.collocations.BigramAssocMeasures()
finder = BigramCollocationFinder.from_documents(x)
finder.nbest(trigram_measures.pmi,100)
s = pd.Series(x)
ngram_list = [pair for row in s for pair in ngrams(row,3)]
c = Counter(ngram_list).most_common(3)
return pd.DataFrame([(x.name,) + element for element in c],columns=['group','Ngram','Frequency'])
然后您将counts
应用于数据
output = df_cleaned.groupby('group',as_index=False).words.apply(counts).reset_index(drop=True)
并将结果保存到文件
output.to_csv('test_file.csv',index=False,sep=',')
df = pd.read_csv('test_file.csv',')
我没看到任何问题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。