②查看数据集是否有缺失,缺失值的处理,很短的文本也可以删除
这里使用numpy和pandas
(4条消息) pandas检查行、列是否有缺失值_berry2q的博客-CSDN博客_pandas检查缺失值https://blog.csdn.net/gqyann/article/details/104919020由于在①中我们已经将csv全都读入了,因此其实不需要df = df.pd.DataFrame(links)
主要只用:
df.isnull().any()
df.isnull().sum()
df.isnull().any(axis=1)
df.isnull().sum(axis=1)
主要查看ratings文件中有多少comment是空值
pd_ratings[pd.isnull(pd_ratings.comment)].shape[0]
pd_ratings['comment'].isnull().sum()
这两条都是可以的
发现总共4107409条中有315064条是comment为空,可以删掉这些行
(4条消息) Python pandas 删除指定行/列数据_永远在减肥永远110的的小潘的博客-CSDN博客_pandas删除某一行https://blog.csdn.net/p1306252/article/details/114890550df = pd.DataFrame(pd_ratings)
ratings_1 = df.dropna(subset=['comment'], axis = 0)
ratings_1.to_csv('ratings_1.csv', index = None)
新建一个ratings_1.csv来保存只去掉comment为空的数据
再新建一个只要有空值的行就都删除的ratings_clean.csv
ratings_clean = df.dropna()
ratings_clean.to_csv('ratings_clean.csv', index = None)
ratings_clean.shape[0]
然后再删除很短的文本
在这一部分中,直接drop不是很好用,这里需要的是将str_len输出到新的一列,再将过短的评论index保存一个indexName,然后再drop的时候输入这个index列表。
③5级评论,编码为好评(1)与差评(0)
初步想法是,将rating、rating_env、rating_flavor、rating_service这四个联合到一起,四个都是4-5分的算是all好评,四个都是1-2的算all差评,单独再输出一列好评为1差评为0
分割线
重新改了策略,计算的是加权平均值,给不同的评分不同的权重来置好评和差评标识
#3分以上为好评
def boolrating(score):
if (score >=3.0):
brating = 1
else:
brating = 0
return brating
elements = [ratings_clean['rating'], ratings_clean['rating_env'], ratings_clean['rating_flavor'], ratings_clean['rating_service']]
w1 = [0.4, 0.2, 0.2, 0.2]
ratings_clean['rating_avg'] = np.average(elements, axis=0, weights=w1)
avgs=[]
for avg in ratings_clean['rating_avg']:
avgs.append(boolrating(avg))
ratings_clean['rating_avg'] = pd.DataFrame(avgs)
ratings_clean.to_csv('ratings_clean.csv', mode = 'w',header=True, index=False)
这一部分就做好啦
分词去停用词直接调用jieba
接下来遇到了词云可视化的问题
直接pip install wordcloud出现一大片红色error,查了一下,
(5条消息) Python—wordcloud(pip安装失败问题解决)_鸽子董的博客-CSDN博客_wordcloud安装失败https://blog.csdn.net/DCclient/article/details/89818315要在 https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud
这个网站下载与自己的python版本相对应的编译后安装包,在这里要仔细看cp,如果不确定自己的版本python -V查看一下,我是3.9.12,所以选了这个进行下载,然后
这样就好啦,还有就是别忘了pip install matplotlib,如果之前没有安装的话。
-------------------------------------------
很多天来不及写博客了,到时候会把源码放上来
pandas dataframe真的很牛
有什么需求先看看loc可不可以,千万不要自己for
自己for完6小时,一条loc一眨眼