Python亚马逊音乐产品评论分析

1、字段理解:

reviewerID - 评论用户ID
asin - 产品编号
reviewerName - 用户昵称
helpful - 评论的帮助性评级
reviewText - 评论内容
overall - 产品评分
summary - 评论摘要
unixReviewTime - 评论日期
review time - 评论时间
基于该数据集对以下问题进行研究:
1、哪年购买乐器的用户反馈较为积极?这几款乐器的评分如何?
2、评论数最多的乐器(乐器评论数从高到低的排序)?
3、综合所有用户的评论,用户评价的主要词汇有哪些?
主要以柱状图、饼状图和云集图呈现。

具体代码如下:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from datetime import datetime
import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"

# 数据处理
review_data = pd.read_csv(r'F:\Musical_instruments_reviews.csv')        # 导入数据
review_data.head()          # 观察数据前5行
review_data.info()          # 有无缺失项
review_data['reviewTime'] = pd.to_datetime(review_data['reviewTime'], format='%m %d, %Y')
review_data.info()
#
review_data.drop(review_data[review_data['reviewerName'].isna()].index, inplace=True)
review_data.info()
review_data[review_data['reviewText'].isna()].info()


# 第二问:哪年购买乐器的用户反馈较为积极?
review_data['Year'] = review_data['reviewTime'].map(lambda x: x.year)       # 使用map函数提取时间的年份,并统计评论数
sns.set(font='SimHei')            # 设置sns中文标签显示fig =
fig = plt.figure(figsize=(10, 6))
sns.countplot(x='Year', data=review_data, palette='viridis')
plt.title('2004 - 2014年亚马逊音乐产品评论数')
plt.grid(False)
plt.savefig(r'2_1.png')      # 保存图片
plt.show()

# 第二问:这几款乐器的评分如何?
fig = plt.figure(figsize=(9, 5))
sns.countplot(x='overall', data=review_data, palette='viridis')
plt.title('2004 - 2014年亚马逊音乐产品评分情况')
plt.grid(False)
plt.savefig(r'2_2.png')       # 保存图片
plt.show()

# 第三问:评论数量最多的乐器(乐器评论数从高到低的排序)
# 评论最多前10的音乐产品
fig = plt.figure(figsize=(9, 5))
raw_data1 = review_data['asin'].value_counts()[0: 10]
sns.barplot(x=raw_data1.index, y=raw_data1, palette='viridis')
plt.title('2004 - 2014年亚马逊音乐产品评论热度-top10')
plt.xticks(rotation=90)
plt.savefig(r'3_1.png')
plt.grid(False)
plt.show()

df = pd.DataFrame(raw_data1)
# 计算并显示占比
df['Percentage'] = df['count'] / df['count'].sum() * 100
# 占比饼图
fig = plt.figure(figsize=(9, 5))
plt.pie(x=df['Percentage'], labels=raw_data1.index, autopct='%1.1f%%')
plt.title('2004 - 2014年亚马逊音乐产品评论热度[占比图]-top10')
plt.grid(False)
plt.savefig(r'3_2.png')
plt.show()


# 第四问:综合所有用户的评论,用户评价的主要词汇有哪些?
# 5分好评
Key_words = review_data[review_data['overall'] == 5]['summary'].values
word_list = []
for word in Key_words:
    for i in word.split():
        if i:
            word_list.append(i)
fig = plt.figure(figsize=(9, 5))
words_df = pd.DataFrame(word_list, columns=['评论热词'])
hot_words = words_df['评论热词'].value_counts()[0: 10]
sns.barplot(x=hot_words.index, y=hot_words, palette='viridis')
plt.title('5分好评关键词-top10')
plt.xticks(rotation=90)
plt.grid(False)
plt.savefig('4_5分好评条形图.png')
plt.show()

# 5分好评的关键词云图
from wordcloud import WordCloud
from PIL import Image
from wordcloud import ImageColorGenerator
words = ','.join(word_list)
plt.figure(figsize=(10, 10))
wc = WordCloud(
    font_path='C:/Windows/Fonts/SimHei.ttf',
    background_color='white',
    width=800,
    height=400,
).generate(words)
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.savefig(r'4_5分好评关键词云集.png')
plt.show()


# 差评(2分以内)
bad_key_words = review_data[review_data['overall'] < 3]['summary'].values
bad_words_list=[]
for word in bad_key_words:
    for i in word.split():
        if i:
            bad_words_list.append(i)
fig = plt.figure(figsize=(9, 5))
words_df = pd.DataFrame(bad_words_list, columns=['评论热词'])
hot_words = words_df['评论热词'].value_counts()[-10:]
sns.barplot(x=hot_words.index, y=hot_words, palette='viridis')
plt.title('差评关键词-top10')
plt.xticks(rotation=90)
plt.grid(False)
plt.savefig('4_差评条形图.png')
plt.show()
# 差评云集
bad_words = ','.join(bad_words_list)
plt.figure(figsize=(10, 10))
wc = WordCloud(
    font_path='C:/Windows/Fonts/SimHei.ttf',
    background_color='white',
    width=800,
    height=400,
).generate(bad_words)
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.savefig('4_差评云集.png')
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值