一、概述
本文主要使用Python对亚马逊智能产品评论数据集进行数据清洗,通过对不同产品的评分进行变换后得到产品的好评数、中评数、差评数以及对应的比率等,通过上述这些指标,找到好评率最高的产品、并尝试通过词云图对差评率最高的产品进行原因分析,了解用户对产品的功能、设计等方面是否满意,对于不满足用户需求的产品,平台可以进行完善,提高产品的用户满意度等;
二、提出问题评论数最高和最低的商品
平均评分最高和最低的商品
好评率和差评率最高及最低的商品
商品的评价数是否与发布时间的长短成正相关
使用词云简单分析差评率最高的商品的原因
商品有无追评的平均评分如何
数据来源:亚马逊智能产品评论https://www.kaggle.com/datafiniti/consumer-reviews-of-amazon-products#1429_1.csvwww.kaggle.com
字段含义id-用户编号
name-产品名称
asins-产品编号
brand-品牌
categories-产品类别
keys-类别关键字
manufacturer-制造商
date-评论时间
dateAdded-追评时间
dateSeen-评论可见时间
doRecommend-评论是否被推荐
numHelpful-帮助性分子数
rating-评分
sourceURLs-评论链接
text-评论文字内容
title-评论标题
username-用户名
三、分析内容
3.1 数据清洗
由于数据集中:reviews.date、reviews.dateAdded的格式为2017-01-13T00:00:00.000Z,需要将评论的格式转换为日期时间格式,考虑到后续分析中只需使用日期,所以上述三个字段均只保留日期
data['reviews.date'] = data['reviews.date'].str.split('T').str[0]
data['reviews.dateAdded'] = data['reviews.dateAdded'].str.split('T').str[0]
pd.to_datetime(data['reviews.date'])
pd.to_datetime(data['reviews.dateAdded'])
3.2 缺失值处理
data.isnull().sum()
name、reviews.didPurchase、reviews.id的缺失值处理name:产品名称缺失,考虑到可以用asins来区分产品,所以将该字段删除;
reviews.didPurchase、reviews.id:这两个字段只有一条数据,所以将其删除;
data = data.drop(['reviews.didPurchase', 'reviews.id', 'name'], axis=1)
reviews.dateAdded的缺失值处理reviews.dateAdded:数据缺失应该是用户没有追加评论造成的,所以使用No来填补缺失值;
data['reviews.dateAdded'] = data['reviews.dateAdded'].fillna('No')
asins、reviews.doRecommend、reviews.numhelpful、reviews.rating、reviews.text、reviews.title、reviews.username,数据集中这些字段有缺失的数据则直接删除;
data = data.dropna(axis=0, how='any',
subset=['reviews.date', 'reviews.title', 'reviews.text',
"reviews.username", 'reviews.doRecommend',
'reviews.numHelpful'])
3.3 分析内容
各商品的评论数、占总评论数的比例商品评论数最多的商品类别是B018Y229OU,一共有10963条评论,占总评论数的32.19%;
评论数最低的商品为B018Y23P7K,只有一条评论,占比不到0.01%;
各商品的评论数、平均评分平均评价最高的商品为B018T075DC和B018Y23P7K,对应的平均评分均为5分,但是评价数分别只有7条、1条;
平均评价最低的商品为B018Y229OU和B00TSUGXKE,对应的平均评分为4.45和4.42,平均得分均低于4.5分,对应的评论数分别为10963条、372条;
评价数超过100条的商品中,平均评价最高的商品是B00OQVZDJM,平均评价为4.77;
商品B018Y229OU的评论数最多,那么它的评论分布是怎么样的呢?5分的评价数最多,占比为59.22%,4分的评价占比为31.44%,二者之和超过了总数的90%;
低分评价相对于高分评价,数量较少,占比接近3%;
商品的好评率及差评率(定义好评为reviews.rating>=4,差评为reviews.rating<=2)商品好评率最高的商品是B018T075DC、B00IOYAM4I、B018Y23P7K、B018Y22C2Y、B00REQKWGA、B018Y22BI4,好评率为100%,这些商品均收获了100%的好评,美中不足的是这些商品的总评论数较少,大部分在10条左右,均不足百条;
而在总评论数超过百条的商品中,好评率最高的商品是B00OQVZDJM,好评率为97.29%
差评率最高的商品为B01AHB9C1E,差评率为7.14%,差评数为1条,但是总评论数仅为14条;
而在总评论数大于100的商品中,差评率前三的商品为B01BH83OOM、B00TSUGXKE、B018Y23MNM ,差评率分别为3.79%、3.76、3.38%,对于这些差评率较高的商品,卖家需要针对性地找出用户给出差评的原因,做出针对性的改善
针对某个差评率较高的商品,以商品B01BH83OOM为例,尝试分析评分为2分以下的评论内容,找到用户给差评的原因(此处分析较为主观,具体原因还要对用户的评论进行分析)
从词云图中,我们看到tap、use、connect、Bluetooth、returned、 terrible等词出现的频率较高,猜测有以下原因:该商品属于触屏类商品,触屏灵敏度不高;
use、connect、bluetooth、phone等词则可能是该产品的蓝牙与手机的连接不顺畅,经常连接不上,使用困难;
terrible、returned则是产品质量有问题导致退货较多;
商品的评价数跟商品发布时间是否存在线性关系,是否存在商品发布时间越长,商品的评论数越多的可能性?
将商品按发布时间进行排序后,其评论数量图商品的评论数与时间之间的关系并不明显,即商品的评论数跟商品发布时间的长短没有关系;
有无追评的商品的评价是否一致?比如,我在购买了某种产品后,使用了一段时间,发现产品质量很好,用户想把它推荐给更多的人,于是追加了评论;
又或者我使用了一段时间后,发现产品的质量跟用户的预期存在偏差,所以我去追加评论;
data[data['reviews.dateAdded'] != 'No']['reviews.rating'].mean() #有追评的商品
data[data['reviews.dateAdded'] == 'No']['reviews.rating'].mean() #没有追评的商品从结果来看,没有追评的商品的平均评分为4.63,而有追评的商品的平均评分为4.57,可以看到又没追评的商品的评分略高于有追评的商品,至于是否存在没有追评的商品的评分比有追评的商品的评价更高,则需要进一步分析用户追评的内容;
四、结论和建议以用户的评论数作为衡量商品是否受欢迎的指标,那么最受欢迎的商品就是B018Y229OU;
商品的上市时间不会影响商品的评论数量;
综合评价最高的商品为B018T075DC和B018Y23P7K,对应的平均评分均为5分,但是评价数分别只有7条、1条;而在评价数超过100条的商品中,平均评价最高和最低的商品分别是B00OQVZDJM,B00TSUGXKE,平均评分分别为4.77、4.42分;
好评率最高的商品为B018T075DC、B00IOYAM4I、B018Y23P7K、B018Y22C2Y、B00REQKWGA、B018Y22BI4,好评率为100%;差评率差评率最高的商品为B01AHB9C1E,差评率为7.14%,差评数为1条,总评论数为14条;
评论数超过100的商品中,好评率最高的商品是B00OQVZDJM,好评率为97.29%;差评率前三的商品为B01BH83OOM、B00TSUGXKE、B018Y23MNM ,差评率分别为3.79%、3.76、3.38%,对于这些差评率较高的商品,卖家需要针对性地找出用户给出差评的原因,做出针对性的改善;
没有追评的商品的平均评分略高于有追评的商品评分,是否存在没有追评的商品评分比有追评的商品评分更高,则需要对用户追评的内容做进一步的分析。