我正在尝试对社交网络的大量数据进行情绪分析。代码的一部分在处理小数据时效果很好。在
小于20mb的输入大小在计算上没有问题。但是如果大小超过20mb,我会得到内存错误。在
环境:Windows10,Anaconda3.x更新版本包。在
代码:
def captionsenti(F_name):
print ("reading from csv file")
F1_name="caption_senti.csv"
df=pd.read_csv(path+F_name+".csv")
filename=path+F_name+"_"+F1_name
df1=df['tweetText'] # reading caption from data5 file
df1=df1.fillna("h") # filling NaN values
df2=pd.DataFrame()
sid = SentimentIntensityAnalyzer()
print ("calculating sentiment")
for sentence in df1:
#print(sentence)
ss = sid.polarity_scores(sentence) # calculating sentiments
#print ss
df2=df2.append(pd.DataFrame({'tweetText':sentence ,'positive':ss['pos'],'negative':ss['neg'],'neutral':ss['neu'],
'compound':ss['compound']},index=[0]))
df2=df2.join(df.set_index('tweetText'), on='tweetText') # joining two data frames
df2=df2.drop_duplicates(subset=None, keep='first', inplace=False)
df2=df2.dropna(how='any')
df2=df2[['userID','tweetSource','tweetText','positive','neutral','negative','compound','latitude','longitude']]
#print df2
print ("Storing in csv file")
df2.to_csv(filename,encoding='utf-8',header=True,index=True,chunksize=100)
为了避免内存错误,我需要包括哪些额外的内容 提前谢谢你的帮助。在
一些可能有助于您的一般提示:
1。只加载需要内存的列:
pd.read_csv
提供usecols参数来指定要读取的列2。删除未使用的变量
如果不再需要变量,请使用
del variable_name
删除它3。使用内存分析器
配置内存memory_profiler。引用文档中的示例内存日志,可以得到如下所示的内存配置文件:
^{pr2}$你不需要额外的东西,你需要的更少。为什么你一次把所有的tweet都载入内存?如果你一次只处理一条tweet,你可以用比低端智能手机更少的内存处理数兆字节的数据。在
或者类似的事情。我不想关上你的文件句柄,但你应该。你可以做各种各样的调整和调整,但关键是:当你一次分析一条tweet时,没有理由破坏你的记忆。在
相关问题 更多 >
编程相关推荐