欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > Python数据分析_广告投放及评论挖掘

Python数据分析_广告投放及评论挖掘

2025/9/26 16:07:11 来源:https://blog.csdn.net/m0_63845988/article/details/145927416  浏览:    关键词:Python数据分析_广告投放及评论挖掘

Python数据分析_广告投放及评论挖掘

【模块一:广告投放分析案例】

【理解】广告投放分析需求

  • 目标:理解广告投放分析需求

  • 实施

    • 背景:XXX广告公司,广告运营公司负责为客户提供全方位的广告服务,以实现客户的营销目标。

      • 广告策划与投放:为客户制定广告策略,并负责在各种媒体平台上进行广告投放。

      • 数据分析与优化:通过分析广告效果数据,优化广告投放策略,提高广告ROI投资回报率。
        在这里插入图片描述

      • 跨平台推广:负责将广告内容在不同的媒体平台上进行推广,包括社交媒体、搜索引擎、应用程序等。

        在这里插入图片描述

      • 品牌营销:协助客户进行品牌宣传与推广,提升品牌知名度和美誉度。

        在这里插入图片描述

    • 需求

      • 1、通过Pandas对近一年(2023年)的品牌投放数据进行分析,汇总每个品牌在这一年的搜索人数、点击人数、支付人数
      • 2、对需求1的结果按照搜索人数进行降序排序,并计算每个品牌点击转化率及支付转化率
        • 点击转化率 = 点击人数 / 品牌搜索人数
        • 支付转化率 = 支付人数 / 点击人数
      • 3、对需求2的结果取出Top15,然后基于Top15分析各个公司的转化情况,辅助制定不同品牌后续的推广策略
    • 目标

      在这里插入图片描述

  • 小结:理解广告投放分析需求

【理解】广告投放数据探索

  • 目标:理解广告投放数据探索

  • 实施

    • 原始数据:现有近两年【2022&2023】每个月的品牌推广的数据结果

      在这里插入图片描述

    • 数据内容:每份数据中记录了每个品牌在当前年的当前月的品牌搜索人数、点击人数、支付人数信息

      在这里插入图片描述

    • 分析思路

      • 需求1:对品牌进行分组,对搜索人数、点击人数、支付人数按月进行上卷得到2023年的结果

        • step1:读取数据

        • step2:数据清洗,需要构造一列:年, 并将2023年的数据筛选出来

        • step3:数据分析:按照维度对指标进行上卷聚合:原子指标

      • 需求2:对需求1的结果按照搜索人数降序排序,基于搜索人数、点击人数、支付人数实现漏斗分析

        • 排序:df.sort_values(by=搜索人数, asc=False)
        • 搜索-点击转化率 = 点击人数 / 品牌搜索人数
        • 点击-支付转化率 = 支付人数 / 点击人数
        • 复合指标:基于多个原子指标进行复合计算

        在这里插入图片描述

      • 需求3:对需求2的结果筛选出前15名,使用绘图工具进行绘图,查看不同品牌在不同转化率下分布情况

  • 小结:理解广告投放数据探索

【实现】广告投放数据分析

在这里插入图片描述

  • step3:构建需求1
# 计算每个品牌的搜索人数、点击人数、支付人数,并按照搜索人数降序排序
result_df = final.groupby('品牌',as_index=False)[['品牌搜索人数','点击人数','支付人数']].sum()
result_df

在这里插入图片描述

  • step4:构建需求2
# 计算点击转化率与支付转化率
result_df_sort = result_df.sort_values('品牌搜索人数',ascending = False)
result_df_sort['搜索-点击转化率'] = result_df_sort['点击人数']/result_df_sort['品牌搜索人数']
result_df_sort['点击-支付转化率'] = result_df_sort['支付人数']/result_df_sort['点击人数']
result_df_sort.head(10)

在这里插入图片描述

  • 小结:实现广告投放数据分析

【实现】广告投放分析报表

  • 目标:实现广告投放分析报表

  • 实施

    from matplotlib import pyplot as plt
    plt.rcParams['font.sans-serif'] = ['SimHei'] #筛选出TOP15的品牌
    draw_data = result_df_sort.head(15)#设置画布大小
    plt.figure(figsize=(16,9))#筛选对应的x,y值和标签名
    x = draw_data['搜索-点击转化率'].to_list()
    y = draw_data['点击-支付转化率'].to_list()
    z = draw_data['品牌搜索人数']
    text = draw_data['品牌'].to_list()#绘制气泡图
    plt.scatter(x, y, s=z / 300, c=x, cmap="Reds", alpha = 0.7, edgecolors = "green", linewidth = 1)#为每个值打上对应品牌名
    for i,txt in enumerate(text):plt.text(x=x[i], y=y[i], s=txt, size=18, horizontalalignment='center', verticalalignment='center')# 添加黑色虚线水平辅助线
    plt.axhline(y=0.12 ,color='black', linestyle='--',alpha = 0.5)# 添加黑色虚线垂直辅助线
    plt.axvline(x=0.465,color='black', linestyle='--',alpha = 0.5)plt.xlabel("搜索-点击转化率")
    plt.ylabel("点击-支付转化率")
    plt.title("TOP15品牌搜索分布",size = 15)
    plt.show()
    

在这里插入图片描述

  • 搜索-点击转化率高,代表搜索结果的精准度高,搜索后展示页面的吸引力大等
  • 点击-支付转化率高,更可能受产品详情页面、活动力度等影响

在这里插入图片描述

  • 小结:实现广告投放分析报表

【模块二:评论挖掘分析案例】

【理解】评论挖掘分析需求

  • 目标:理解评论挖掘分析需求

  • 实施

    • 背景:XXX电商公司【主营乐器】,希望能够通过用户商品的评价数据进行分析,可以帮助其提高运营效率、增强市场竞争力,并更好地满足用户需求。

    在这里插入图片描述
    在这里插入图片描述

    • 了解用户喜好与行为:通过评价数据分析,可以深入了解用户对产品和服务的喜好、购买习惯以及使用体验,从而调整经营策略和产品设计。

      在这里插入图片描述

    • 改进产品和服务:通过分析评价数据,电商公司可以获得产品的优点和不足之处,有针对性地改进产品质量,并提供更好的售后服务,以满足客户需求。

      在这里插入图片描述

    • 建立声誉和信任:积极回应用户评价,解决用户问题并改进产品能够增强品牌声誉,树立信誉良好的形象,促进用户忠诚度。

      在这里插入图片描述

    • 指导营销策略:分析评价数据可以帮助电商公司了解产品或服务的优势,从而指导市场营销策略的制定,精准推广产品。

      在这里插入图片描述

    • 需求

      • 非文本分析需求:统计用户评价基础指标
        • 1、统计每个商品的评价数、好评数、中评数、差评数
        • 维度:商品
        • 指标:评价数、好评数、中评数、差评数
        • 2、统计每个商品在每个月的评价数、好评数、中评数、差评数
        • 维度:商品、月份
        • 指标:评价数、好评数、中评数、差评数
      • 文本分析需求:对评价内容进行分析
        • 3、统计所有商品的评价中好评的关键词及差评的关键词,并将核心关键词提取展示出来,用于提供AI模型训练
        • 转化:统计每个评价词语出现次数
        • 难点:从每句评价中,将出现每个词取出 => 分词器
    • 目标一:非文本内容分析

      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    • 目标二:文本内容分析

    在这里插入图片描述
    在这里插入图片描述

  • 小结:理解评论挖掘分析需求

【理解】评论挖掘数据探索

  • 目标:理解评论挖掘数据探索

  • 实施

    • 原始数据:基于公司后台的CRM系统导出了所有商品的评分信息,生成了评论信息的CSV文件

      在这里插入图片描述

    • 数据内容:评分、日期、产品规格类型、整体评价、内容、商品名称、用户名称

      在这里插入图片描述
      在这里插入图片描述

    • 分析思路

      • 需求

        1: 统计每个商品的评价数、好评数、中评数、差评数select product_name, count(1) as eval_cnt, sum(case when substr(stars, 0, 1) in (4,5) then 1 else 0 end) as great_eval_cnt, sum(case when substr(stars, 0, 1) = '3' then 1 else 0 end) as mid_eval_cnt, sum(case when substr(stars, 0, 1) in (1,2) then 1 else 0 end) as bad_eval_cntfrom tablegroup by product_name
        2: 统计每个商品在每个月的评价数、好评数、中评数、差评数select product_name, func(date) as y_m, count(1) as eval_cnt, sum(case when substr(stars, 0, 1) in (4,5) then 1 else 0 end) as great_eval_cnt, sum(case when substr(stars, 0, 1) = '3' then 1 else 0 end) as mid_eval_cnt, sum(case when substr(stars, 0, 1) in (1,2) then 1 else 0 end) as bad_eval_cntfrom tablegroup by product_name, func(date) as y_m
        3: 统计所有商品的评价中好评的关键词及差评的关键词,并将核心关键词提取展示出来,用于提供AI模型训练selectexplode(split(content, ' ')) as wordfrom tablecontent					words							word
        I love China			[I, love, China]				I
        I am in Shanghai		[I, am, in, Shanghai]			love||word
        I
        love
        China
        I
        am
        in
        Shanghai||word		cnt
        I			2
        love		1
        China		1
        ……-- 难点:Python中怎么分词?时态?
        
      • 准备

        1. 对数据进行转换:将评分信息中具体的分数抽取成单独的分数列
        2. 对数据进行补全:根据评分分数转换评价字段,1,2 差评 3 中评 4 5 好评
        3. 对数据进行补全:获取每个评分的年月信息
      • 分析

        1. 按照商品分组对评价数据进行聚合,统计个数,好评数、中评数、差评数
        2. 按照商品和月份分组对评价数据进行聚合,统计个数、好评数、中评数、差评数
        3. 按照好评和差评,提取所有评论,解析出评论中所有关键词,构建词云图
    • 安装依赖(免安装

      # 安装NLP的文件解析工具nltk以及图表工具pyecharts
      pip install nltk -i https://pypi.tuna.tsinghua.edu.cn/simple/
      pip install pyecharts -i https://pypi.tuna.tsinghua.edu.cn/simple/
      
    • 安装模块:将今日资料下的nltk_data文件夹放入ANACONDA_HOME/share目录下

      在这里插入图片描述

  • 小结:理解评论挖掘数据探索

【了解】NLP自然语言处理

  • 目标:理解NLP自然语言处理

  • 实施

    • 问题1:什么是NLP?

      在这里插入图片描述

      • 自然语言处理(Natural Language Processing,NLP)是人工智能和计算机科学领域中的一个分支,致力于使计算机能够理解、解释、操作语言。NLP 的目标是促使计算机能够有效地与人类语言进行交互。
      • NLP 超越了简单的语言翻译;它还涉及到文本分析、语音识别、情感分析、自动摘要、问答系统等方面。其应用范围包括自动翻译、信息检索、文档分类、智能客服、自然语言对话系统(如聊天机器人)、语音识别和合成等各个领域。
      • 在NLP 中,常见的任务包括标记词性、实体识别、句法分析、语义理解和生成自然语言。当结合机器学习和深度学习技术时,NLP 可以更准确地理解和处理大规模文本数据,并从中提取有价值的信息。
      • 总之,NLP 是涉及计算机和人类语言交互的技术领域,其应用广泛,将自然语言与计算机科学相结合,为文本处理和语义理解带来了巨大的潜力。
    • 问题2:怎么做NLP?

      在这里插入图片描述

      • 文本预处理:包括词条化(tokenization)、去除停用词(stop words removal)、词干提取(stemming)和词型还原(lemmatization)。

      • 特征提取:使用词袋模型(Bag of Words)或 TF-IDF 等方法从文本中提取特征,以便进行机器学习模型的训练。

      • 词向量嵌入:应用诸Word2Vec、GloVe等算法来将单词映射到一个连续的向量空间中,以便更好地表达语义和上下文关联。

      • 模型选择:选择合适的机器学习模型或深度学习模型来处理特定 NLP 任务,例如文本分类、情感分析、命名实体识别等等。

      • 模型训练与调优:在大规模数据集上训练所选的模型,并进行参数调优以获得最佳性能。

      • 应用领域:将已经训练好的模型应用到具体的 NLP 任务中,如机器翻译、文本摘要、信息检索、问答系统等。

      • 评估与迭代:对模型的性能进行评估,如果需要,可以进一步迭代改进模型和流程。

      • 在实现 NLP 时,还有许多具体的工具和库可供选择,比如 NLTK(Natural Language Toolkit)、SpaCy、Gensim 和 TensorFlow 等计算机语言和深度学习框架,它们都提供了强大的功能来帮助实现 NLP 相关的任务。

    • 问题3:常见的NLP处理有哪些?

      • 语言分词-Tokenizer

        • 根据语义,从句子中提取所有核心词语
        • 需要去除一些符号,语气词等
        • 英文:按照空格切分即可
        • 常见:NLTK(英文)、jieba(中文)

        在这里插入图片描述

      • 词干提取 – Stemming

        • 词干提取是去除单词的前后缀得到词根的过程。

        • 大家常见的前后词缀有「名词的复数」、「进行式」、「过去分词」…

      • 词形还原 – Lemmatisation

        • 词形还原是基于词典,将单词的复杂形态转变成最基础的形态。

          • 词形还原不是简单地将前后缀去掉,而是会根据词典将单词进行转换。比如「drove」会转换为「drive」。

        • 停用词:获取原始单词之后还需要去掉停用词和一些助词,虚词,连词

          • 停用词(stop word):可以手动指定那些单词经过处理之后不会保留在分词结果中 stop word
          • 一般我们只关心名词,动词和形容词
  • 小结:了解NLP自然语言处理

【实现】评论挖掘数据清洗:评分处理

  • 目标:实现评论挖掘数据清洗评分处理

  • 实施

    • step1:导入依赖

      # 导入 Pandas
      import pandas as pd# 导入正则库
      import re# 导入数据库
      import math# 导入时间库
      import datetime# 导入 Matplotlib
      import matplotlib.pyplot as plt# 导入 Seaborn
      import seaborn as sns
      plt.style.use('fivethirtyeight')		# Seaborn 中的 fivethirtyeight 风格来呈现数据可视化图表# 导入PyEcharts
      # PyEcharts中用于配置图表的选项对象。它提供对图表外观、数据、标题等各个方面进行详细配置的功能。
      import pyecharts.options as opts
      # PyEcharts中用于创建词云图的类或模块。词云图是一种以词频来展示文本数据的可视化方式。
      from pyecharts.charts import WordCloud# 这个命令的作用是将 Matplotlib 绘制的图表嵌入到 Notebook 中的单元格中,使得图表可以直接显示在 Notebook 中而不需要额外的窗口。PyCharm中不需要,可以注释掉。
      # %matplotlib inline# 导入 Warning,忽略不必要的warnings
      import warnings
      warnings.filterwarnings('ignore')# 导入 nltk:自然语言文本处理的包
      import nltk
      # 是 NLTK 中用于执行词型还原(lemmatization)的类。词型还原是将单词转换为它们的基本形式的过程,而不仅仅是简单地截断词尾或前缀。这有助于将相关的词形归并到同一个标准形式。
      from nltk.stem.wordnet import WordNetLemmatizer
      # 是一个英语词汇数据库,也是 NLTK 库中的一个模块,提供了从文本中提取含义和关系的结构化信息。它具有同义词集合、层次结构以及与单词相关的语义信息等内容。
      from nltk.corpus import wordnet as wn
      # 是 Python 标准库中的一个类,位于 collections 模块中,而在 NLTK 中也可以使用。它提供了对可哈希对象进行计数的支持,对于统计词汇、频率分布等非常有用。通过 Counter 可以轻松地统计词汇、字符或其他有效的哈希对象的出现次数,为进一步的分析提供数据支持。
      from collections import Counter
      
    • step2:加载数据

      # 加载用户评论数据
      reviews = pd.read_csv('../data/02.evl_data/reviews.csv')
      reviews
      

      在这里插入图片描述

    • step3:数据清洗:删除空评论的数据

      # 删除缺失值, 我们要做评论文本分析, 如果评论缺失把对应数据删除
      reviews_df = reviews.dropna(subset=['short_d','content'])
      reviews_df
      

      在这里插入图片描述

    • step3:数据清洗:从stars 中 抽取评分

      # 定义一个函数 get_stars,传递一个参数 evl_stars , 截取 第1位 并转换为 float类型 返回 
      def get_stars(evl_stars):return float(evl_stars[:1])# 构建 stars_num 列,值为 df_reviews 对 stars 列调用 get_stars 函数
      reviews_df['stars_num'] = reviews_df['stars'].apply(get_stars)
      reviews_df
      

在这里插入图片描述

  • step3:数据清洗:转换成好评、中评、差评

    # 依据评星的数量 划分 好中差评 1,2 差评 3 中评 4 5 好评
    # 使用 cut 函数 对 star_num 列的值进行划分
    # bins:前开后闭区间
    reviews_df['reviews_cate'] = pd.cut(reviews_df['stars_num'], bins=[0,2,3,5], labels=['差评','中评','好评'])
    reviews_df
    

在这里插入图片描述

     # 处理之后查看结果reviews_df['reviews_cate'].value_counts()

在这里插入图片描述

  • 小结:实现评论挖掘数据清洗评分处理

【实现】评论挖掘数据清洗:时间处理

  • 目标:实现评论挖掘数据清洗时间处理

  • 实施

    • step3:数据清洗:获取日期年月

      # 测试处理时间逻辑
      test_str = 'Reviewed in the United States on June 24, 2020'
      print("原始数据:", test_str)
      test_str_date = test_str.split('on ')[1]
      print("日期数据:", test_str_date)
      year_str = test_str_date.split(', ')[1]
      month_str = test_str_date.split(',')[0].split(' ')[0]
      day_str = test_str_date.split(',')[0].split(' ')[1]
      print("年、月、日:", year_str, month_str, day_str)
      

      在这里插入图片描述

      
      # 获取评论中的日期信息,转换成日期时间格式
      def get_date(x):'''处理评论日期  Reviewed in the United States on June 24, 2020先用 'on ' 去拆分, 把日期文本拆分成两部分再用', '拆分, 把后面的部分拆分成 ['月 日','年']最后把前面的'月 日' 用空格拆分成 月 日'''x = x.split('on ')[1]  # 把数据拆分成两部分 ['Reviewed in the United States on ','June 24, 2020']x = x.split(', ')y = x[1]x = x[0].split(' ')m, d = x[0], x[1]if m == 'January' or m == 'Jan':on_date = y + '-01-' + delif m == 'February' or m == 'Feb':on_date = y + '-02-' + delif m == 'March' or m == 'Mar':on_date = y + '-03-' + delif m == 'April' or m == 'Apr':on_date = y + '-04-' + delif m == 'May':on_date = y + '-05-' + delif m == 'June' or m == 'Jun':on_date = y + '-06-' + delif m == 'July' or m == 'Jul':on_date = y + '-07-' + delif m == 'August' or m == 'Aug':on_date = y + '-08-' + delif m == 'September' or m == 'Sep':on_date = y + '-09-' + delif m == 'October' or m == 'Oct':on_date = y + '-10-' + delif m == 'November' or m == 'Nov':on_date = y + '-11-' + delif m == 'December' or m == 'Dec':on_date = y + '-12-' + dreturn on_date# # 对评论时间列应用get_date 函数,获取date_d时间
      reviews_df['date_d']=reviews_df['date'].apply(get_date)
      reviews_df.head(5)
      

      在这里插入图片描述

      # 从 date_d 中提取年月,zfill(2),保持2位,不够使用0填充
      reviews_df['year_month'] = reviews_df['date_d'].dt.year.astype(str) +\reviews_df['date_d'].dt.month.astype(str).str.zfill(2)# 查看数据
      reviews_df.head()
      

      在这里插入图片描述

  • 小结:实现评论挖掘数据清洗时间处理

【实现】评论非文本分析报表

  • 目标:实现评论非文本分析报表

  • 实施

    • 需求1:统计每个商品的评论数

      # 统计每个商品的评论数
      reviews_df['product_name'].value_counts().plot(kind='bar')
      

    在这里插入图片描述

    • 需求1:统计每个商品的好评数、中评数、差评数

      # 不同产品  everjoys ranch kala donner 
      # 构建结构化多绘图网格,不同子集上绘制同一图的多个实例, --> FacetGrid()
      # FacetGrid 参数说明 data 绘图用到的数据 col每一个小图 利用哪一列来截取数据  col_wrap 小图有几列  sharex是否共享x轴  sharey 是否共享Y轴  height图片高度 aspect 宽高比例
      g = sns.FacetGrid(data = df_reviews,col = 'product_name',col_wrap = 2,sharex=False,sharey=False,height = 5, aspect= 1.2)
      # g.map 绘制分面图中的小图,利用 sns.countplot 绘图  , 从reviews_df 利用 product_name分组  每组画 reviews_cate 不同类别的数量order 指定柱子的顺序
      g.map(sns.countplot,'reviews_cate',order=['好评','差评','中评'])
      

在这里插入图片描述

  • 需求2:统计每个商品每个月的评论数

    # 统计不同产品(‘product_name’)不同年月(‘year_month’)的评论数量
    df_content = reviews_df.groupby(['product_name','year_month'])[['content']].count().reset_index()
    df_content
    

    在这里插入图片描述

    g=sns.FacetGrid(data=df_content,col='product_name',col_wrap=2,sharey=False,sharex=False,height=4,aspect =2)
    # 第一个参数传入的是 要调用哪个API 绘图,  后面几个参数传的是 调用 (plt.plot 的时候需要用到哪些参数, 具体的数据传入列名就行了
    g.map(plt.plot,"year_month",'content',marker='1')#marker='1' 折线图每一个点会一条短线来表示
    

    在这里插入图片描述

  • 需求2:统计每个商品每个月的好评数、中评数、差评数

    # 统计每个商品每个月的好评数、中评数、差评数
    df_content = reviews_df.groupby(['product_name','year_month','reviews_cate'])[['content']].count().reset_index()
    df_content
    

    在这里插入图片描述

    g = sns.FacetGrid(data=df_content,col='product_name',col_wrap=2,sharey=True,sharex=False,height = 4,aspect=2,hue ='reviews_cate')
    g.map(plt.plot,'year_month','content',marker='1')
    g.add_legend()
    

    在这里插入图片描述

  • 小结:实现评论非文本分析报表

【实现】评论文本挖掘数据分析

  • 目标:实现评论挖掘数据分析

  • 实施

    • 流程

      • step1:对数据进行去空的操作
      • step2:筛选出所有好评的数据和差评的数据
      • step3:对所有数据进行分词,拆分评论中出现的每个词
    • 实现

      # 现有数据
      reviews_df
      

      在这里插入图片描述

      # 去重
      df_data = reviews_df.drop_duplicates(subset=['product_name','type','content','name','date_d'])
      df_data
      

      在这里插入图片描述

      # 抽取一句评价
      df_data['content'][0]
      

      在这里插入图片描述

      # positive 积极的, 这里表示好评    
      sample_positive = df_data[(df_data['product_name']=='everjoys-Soprano')&(df_data['reviews_cate']=='好评')]
      sample_positive
      

在这里插入图片描述

   # negative  负面的消极的 这里表示差评sample_negative = df_data[(df_data['product_name']=='everjoys-Soprano')&(df_data['reviews_cate']=='差评')]sample_negative

在这里插入图片描述

    # 准备一个英文文本处理的pipeline  分词 → 词性还原 → 过滤停用词def get_lemma(word):# 进行时 过去式的动词 还原成原来的形式lemma = wn.morphy(word)# 如果不是动词, 会返回Noneif lemma is None:# 返回None 就把原来的单词返回去return wordelse:return lemma# 标点符号也作为停用词punctuation = [",", ":", ";", ".", "!", "'", '"', "’", "?", "/", "-", "+", "&", "(", ")",'I','It','My','The']stop_words_list = nltk.corpus.stopwords.words('english')+punctuation# 准备文本处理的pipelinedef prepare_text(txt):# 分词tockens = nltk.word_tokenize(txt) # 这里返回的是经过了分词之后的单词列表# 词性还原tokens =[get_lemma(token) for token in tockens] # 遍历了tockens 这个列表, 没个单词都调用了get_lemma 返回的结果再拼成列表# 过滤停用词tokens = [ i for i in tokens if i not in stop_words_list]return tokens
   # 对评论列的series apply使用自定义函数, 返回一个series 转换成列表 clean_text_positive = sample_positive['content'].apply(prepare_text).to_list()clean_text_positive

在这里插入图片描述

   clean_text_negative = sample_negative['content'].apply(prepare_text).to_list()clean_text_negative

在这里插入图片描述

  • 小结:实现评论挖掘数据分析

【实现】评论文本挖掘分析报表

  • 目标:实现评论挖掘分析报表

  • 实施

    • 流程

      • step4:统计每个词在每个句子中出现的次数
      • step5:获取每个词在整体中出现的总次数
      • step6:取出好评和差评中出现频率最高的前100个词
      • step7:构建词云图
    • 实现

      • 测试

        # 传入一个列表, 统计列表中元素出现的次数, 返回的是 [('元素',次数)]
        # most_common 出现次数最多的
        Counter(clean_text_positive[0]).most_common(2)
        

      在这里插入图片描述

      • step1:定义一个函数统计每个次在整体评论中出现的次数

        def get_words(clean_text):
        # 创建一个列表 用来保存所有评论的单词words_all = []# 取出 好评 或者 差评中的每条评论for words in clean_text:# 取出每条评论中的每个词for word in words:# 将评论中的单词放入列表中words_all.append(word)# 统计每个单词出现了多少次words_all_count = Counter(words_all)# 返回最终结果return words_all_count# 对好评调用get_words 获取四个指标
        words_all_positive=get_words(clean_text_positive)# 对差评调用get_words 获取四个指标
        words_all_negative=get_words(clean_text_negative)
        
      • step2:取出好评和差评中出现频率最高的前100个词

        # 取出前100个频率最高的单词
        positive_words_wordcloud=words_all_positive.most_common(100)
        positive_words_wordcloud
        

        在这里插入图片描述

        # 取出前100个频率最高的单词
        negative_words_wordcloud=words_all_negative.most_common(100)
        negative_words_wordcloud
        

        在这里插入图片描述

      • step3:基于Pyecharts构建词云图

        (WordCloud().add(series_name="好评词云",data_pair=positive_words_wordcloud,  #传入绘制词云图的数据word_size_range=[16, 80])  #word_size_range 字号大小取值范围.set_global_opts(title_opts=opts.TitleOpts(title="好评词云", title_textstyle_opts=opts.TextStyleOpts(font_size=23) # 设置标题字号),tooltip_opts=opts.TooltipOpts(is_show=True),  # 设置为True 鼠标滑过文字会弹出提示框).render()
        )
        

        在这里插入图片描述

        (WordCloud().add(series_name="差评词云", data_pair=negative_words_wordcloud, word_size_range=[16, 80]).set_global_opts(title_opts=opts.TitleOpts(title="差评词云", title_textstyle_opts=opts.TextStyleOpts(font_size=23)),tooltip_opts=opts.TooltipOpts(is_show=True),).render_notebook()
        )
        

        在这里插入图片描述

  • 小结:实现评论挖掘分析报表

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词