美文网首页数据分析
产品推广策略数据分析 - 游戏为例

产品推广策略数据分析 - 游戏为例

作者: 羋学僧 | 来源:发表于2018-12-25 18:57 被阅读0次

项目:产品推广策略数据分析 - 游戏为例


本案例基于搜索引擎数据,针对热门游戏《旅行青蛙》的推广策略进行分析研究

lvxingqingwa.jpg

背景介绍

基于搜索引擎的产品推广策略

  • SEO:搜索引擎优化
    • 内容
    • 外链
  • SEM:搜索引擎营销

搜索引擎优化的意义

搜索引擎作为传统互联网的主要数据源,在信息传播过程中占有重要地位
个人发布信息被搜索引擎收录、展示,可以引来流量,以较低成本实现产品推广

搜索引擎优化途径:

在搜索引擎可以检索到的各种公开社区发布文章,为自己的产品引流。
如:论坛社区、问答、贴吧、博客、视频、自媒体等等

游戏产品的搜索引擎推广策略

  • 排名分析
    • 选择什么渠道?(在哪儿发软文)
    • 选择相关内容搜索排名靠前的网站发布信息
  • 流量监测
    • 发布信息时间?
    • 监测不同网站流量效果,调整推广渠道
  • 内容设计(标题)
    • 发布信息标题和内容的设计
    • 精心设计标题,吸引用户点击

2018年1-2月最火的游戏:旅行青蛙

  • 短时间内爆发,1月份iOS中国区下载总榜第一名

  • 以旅行青蛙游戏为例,研究它在搜索引擎平台的推广过程

qushi.png

游戏介绍

  • 游戏情况
    • 《旅行青蛙》是由游戏公司HIT-POINT开发的休闲小游戏,一款放置类型手游
  • 游戏内容
    • 玩家通过收集三叶草去商城买东西,青蛙带着这些东西出门旅行,旅行途中拍照片邮寄回来
  • 社会反响
    • 这款游戏顺应了广大青年的佛系情感述求。成为社交圈刷屏的现象级游戏,产生了巨大的社会影响

推广策略研究

流行的引爆取决于三类人的先后贡献
                
                --- 《引爆点》

任何一场潮流到来时,总有几个关键的人物,他们独有的社会关系和其他特点,如激情和个人魅力,能够快速将信息在一定范围散布开来。

具体来说。流行的引爆取决于三类人的先后贡献,如果在引爆潮流的不同时期,找准人群中的个别关键人物,利用他们来传播信息,就能点燃潮流

流行引爆的三个不同时期:

  • 前期:内行(专业人士,产生信息)

    • 某一领域有丰富知识的权威人士
    • 在前期实现原始信息的产生
    • 内行专业且乐于讨论分享,但没有很好的说服力
    • ----专业社区,专业圈子,如某软件或游戏等产品论坛
  • 中期:联系员(桥梁,从专业小圈子介绍传播到大众圈)

    • 什么人都认识的交际人才
    • 其人际和社会关系可同时涉及几种不同领域
    • 联系员能够将信息从某固定小圈子散布到其他更大的领域
    • ----行业社区、行业圈子,如互联网社区、帝吧、虎扑、知乎,原创自媒体
  • 后期:推销员(口耳相传,扩散,引爆)

    • 对信息领域未必了解,但具有说服力
    • 决定了信息传播的“最后一公里”
    • 推销员使信息病毒式扩散,实现最终引爆
    • ----大众社区,大众圈子,如各种自媒体、微博、微信朋友圈,腾讯网易新浪搜狐等传统媒体、报纸电视广播等

举例:中文互联网流行词或梗的流行全过程

如:“六学”

直播 -> 微博,公众号,抖音,知乎、B站 -> 网易搜狐新浪腾讯,电视节目 -> 春晚

数据获取

具体实施:

根据百度指数热门程度直观分析,
抓取百度新闻 旅行青蛙 (按内容查询)关键字的文字标题和相关信息,
时间从 2018-1-15左右到2018-2-18日左右
    目前是:新闻页码11-36,每页20条,一共27页

数据获取完成,详见附录

数据规整

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# plt.style.use('seaborn')
plt.rcParams['font.family'] = ['Arial Unicode MS', 'Microsoft Yahei', 'SimHei', 'sans-serif'] 

读入百度指数数据

baidu = pd.read_csv(
    'data/baidu_index.csv',
    parse_dates=['百度指数'],
    index_col='Unnamed: 0',  # 将某列设为行索引
)
baidu.head()
image.png
baidu.info()
<class 'pandas.core.frame.DataFrame'>
Index: 35 entries, 2018-01-15 to 2018-02-18
Data columns (total 1 columns):
百度指数    35 non-null object
dtypes: object(1)
memory usage: 560.0+ bytes

读入爬虫抓取新闻数据

content = pd.read_csv(
    'data/content.csv',
#     parse_dates={'s': ['date','time']},  # 将两列合并解析为时间格式,自定义列名,为配合百度指数时间,这里不合并
    parse_dates=['date'],
    
).set_index('date').sort_index()  # 将date2设为行索引,并排序

content.head()
image.png
# 只保留2列做分析
content = content[['source', 'title']]
content.head()
image.png
content.tail()
image.png
baidu.info()
<class 'pandas.core.frame.DataFrame'>
Index: 35 entries, 2018-01-15 to 2018-02-18
Data columns (total 1 columns):
百度指数    35 non-null object
dtypes: object(1)
memory usage: 560.0+ bytes

百度指数列错误,改为整型

bindex = baidu['百度指数'].astype(np.int)
bindex.head()
2018-01-15     5408
2018-01-16    10007
2018-01-17    17817
2018-01-18    39514
2018-01-19    82117
Name: 百度指数, dtype: int32
bindex.describe()
count        35.000000
mean     224537.942857
std      252476.209422
min        5408.000000
25%       46004.500000
50%      120038.000000
75%      310564.500000
max      858690.000000
Name: 百度指数, dtype: float64
content.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 503 entries, 2017-09-07 to 2018-02-23
Data columns (total 2 columns):
source    503 non-null object
title     503 non-null object
dtypes: object(2)
memory usage: 11.8+ KB
content.describe()
image.png

新闻数据正常

合并百度指数和百度新闻两表

bindex.head()
2018-01-15     5408
2018-01-16    10007
2018-01-17    17817
2018-01-18    39514
2018-01-19    82117
Name: 百度指数, dtype: int32
content.head()
image.png
content2 = content.join(bindex).dropna()
content2.head()
image.png
content2.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 485 entries, 2018-01-17 to 2018-02-18
Data columns (total 3 columns):
source    485 non-null object
title     485 non-null object
百度指数      485 non-null float64
dtypes: float64(1), object(2)
memory usage: 15.2+ KB
content2.shape
(485, 3)

由于新闻数据时间范围比指数数据大,所以合并后数据应该有缺失值,将百度指数列没有的日期行删除

content3 = content2.drop('百度指数', axis=1)
content3['baidu_index'] = content2['百度指数'].astype(np.int)
content3.head()
image.png
content3.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 485 entries, 2018-01-17 to 2018-02-18
Data columns (total 3 columns):
source         485 non-null object
title          485 non-null object
baidu_index    485 non-null int32
dtypes: int32(1), object(2)
memory usage: 23.3+ KB

保存数据

content3.to_csv('data/content3.csv') 

数据规整完成


读取数据

content3 = pd.read_csv(
    'data/content3.csv',
    parse_dates=['Unnamed: 0'],
    
).set_index('Unnamed: 0')  # 将Unnamed: 0设为行索引

content3.index.name = 'date'
content3.head()
image.png
content3.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 485 entries, 2018-01-17 to 2018-02-18
Data columns (total 3 columns):
source         485 non-null object
title          485 non-null object
baidu_index    485 non-null int64
dtypes: int64(1), object(2)
memory usage: 15.2+ KB

数据分析


指标计算:渠道分析(新闻源)

自定义指标

source列为搜索引擎推广渠道,我们按照理论将其分为:

* 前期:内行
* 中期:联系员
* 后期:推销员

三类

然后统计不同渠道的新闻数量

content3.head()
image.png

查询所有新闻源和他们发布的文章数

category = content3.groupby('source').size().sort_values(ascending=False)
category

category[category >= 8]  # 只需要文章数大于等于8的新闻源
source
蚕豆网        72
九游网        61
太平洋电脑网     43
闽南网        32
站长之家       27
爪游控        19
Techweb    17
手机游戏网      15
新浪新闻       13
站长网        13
尚之潮        12
新浪         10
凤凰网         9
dtype: int64

手动整理的三个时期典型网站

  • 前期:蚕豆网,九游网,爪游控,手机游戏网,
  • 中期:站长之家,Techweb,站长网,
  • 后期:太平洋电脑网,闽南网,新浪新闻,尚之潮,新浪,凤凰网

增加新列:三类时期

content3.loc[content3['source'].isin(['蚕豆网','九游网','爪游控','手机游戏网'])]
content3.loc[content3['source'].isin(['蚕豆网','九游网','爪游控','手机游戏网']), 'period'] = 1

content3.loc[content3['source'].isin(['站长之家','Techweb','站长网']), 'period'] = 2
content3.loc[content3['source'].isin(['太平洋电脑网','闽南网','新浪新闻','尚之潮','新浪','凤凰网']), 'period'] = 3

content3.head()
image.png
content3.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 485 entries, 2018-01-17 to 2018-02-18
Data columns (total 4 columns):
source         485 non-null object
title          485 non-null object
baidu_index    485 non-null int64
period         343 non-null float64
dtypes: float64(1), int64(1), object(2)
memory usage: 28.9+ KB
# 去除缺失值行
content4 = content3.dropna().drop('period', axis=1)
content4['period'] = content3.dropna()['period'].astype(np.int)  # 列改为整型
content4.head()
image.png
content4.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 343 entries, 2018-01-17 to 2018-02-18
Data columns (total 4 columns):
source         343 non-null object
title          343 non-null object
baidu_index    343 non-null int64
period         343 non-null int32
dtypes: int32(1), int64(1), object(2)
memory usage: 22.1+ KB

指标:通过交叉表计算每种类别下的网站新闻量排名

best = pd.crosstab(content4.source, content4.period)
best
image.png

前期新闻源发帖量排名

best[1].sort_values(ascending=False)

# 去掉发帖量为0的数据
b1 = best[1][best[1] > 0].sort_values(ascending=False)
b1
source
蚕豆网      72
九游网      61
爪游控      19
手机游戏网    15
Name: 1, dtype: int64
b1.plot.bar()
<matplotlib.axes._subplots.AxesSubplot at 0x9be1ac8>
output_52_1.png

中期新闻源发帖量排名

b2 = best[2][best[2] > 0].sort_values(ascending=False)
b2
source
站长之家       27
Techweb    17
站长网        13
Name: 2, dtype: int64
b2.plot.bar()
<matplotlib.axes._subplots.AxesSubplot at 0x9dd7128>
output_55_1.png

后期新闻源发帖量排名

b3 = best[3][best[3] > 0].sort_values(ascending=False)
b3
source
太平洋电脑网    43
闽南网       32
新浪新闻      13
尚之潮       12
新浪        10
凤凰网        9
Name: 3, dtype: int64
b3.plot.bar()
<matplotlib.axes._subplots.AxesSubplot at 0x9e37518>
output_58_1.png

查询每天的百度指数

baidu_index = content4.groupby(content4.index)['baidu_index'].max()
baidu_index
date
2018-01-17     17817
2018-01-18     39514
2018-01-19     82117
2018-01-20    140768
2018-01-21    298637
2018-01-22    406072
2018-01-23    677541
2018-01-24    858690
2018-01-25    839792
2018-01-26    744390
2018-01-27    653541
2018-01-28    496701
2018-01-29    390412
2018-01-30    322492
2018-01-31    256334
2018-02-01    212914
2018-02-02    180933
2018-02-03    157411
2018-02-04    140104
2018-02-05    120038
2018-02-06    125914
2018-02-07    105679
2018-02-08     88426
2018-02-09     75185
2018-02-10     66567
2018-02-12     54812
2018-02-13     49241
2018-02-18     34388
Name: baidu_index, dtype: int64
baidu_index.shape  # 数据规整以后,35天指数变成28天
(28,)

按时间行索引分组聚合求每个分类下 每天的新闻数

三个时期,每个时期 每天 发布新闻的个数

content4.head()

period1 = content4[content4['period'] == 1]  # 前期的所有数据
period1
period1Count = period1.groupby(period1.index).size()  # 前期,每天 发布的新闻数量
period1Count

period2 = content4[content4['period'] == 2]  # 中期的所有数据
period2
period2Count = period2.groupby(period2.index).size()  # 中期,每天 发布的新闻数量
period2Count

period3 = content4[content4['period'] == 3]  # 后期的所有数据
period3
period3Count = period3.groupby(period3.index).size()  # 后期,每天 发布的新闻数量
period3Count
date
2018-01-17     2
2018-01-18     1
2018-01-19     3
2018-01-20     5
2018-01-21     8
2018-01-22     6
2018-01-23     6
2018-01-24    16
2018-01-25    12
2018-01-26     9
2018-01-27     7
2018-01-28     5
2018-01-29     4
2018-01-30     8
2018-01-31    16
2018-02-01     3
2018-02-02     1
2018-02-05     1
2018-02-06     1
2018-02-07     2
2018-02-08     1
2018-02-09     1
2018-02-10     1
dtype: int64

数据可视化

三种类别的推广渠道 随时间发展 对百度指数热度的贡献趋势

  • 可视化:搜索引擎推广渠道VS百度指数,比较对照
  • 取三类网站新闻数量随时间变化画三条折线图,背景叠加百度指数柱状图
  • 主要看不同类别折线的峰值出现时间(先后代表三类过程)
baidu_index.index
DatetimeIndex(['2018-01-17', '2018-01-18', '2018-01-19', '2018-01-20',
               '2018-01-21', '2018-01-22', '2018-01-23', '2018-01-24',
               '2018-01-25', '2018-01-26', '2018-01-27', '2018-01-28',
               '2018-01-29', '2018-01-30', '2018-01-31', '2018-02-01',
               '2018-02-02', '2018-02-03', '2018-02-04', '2018-02-05',
               '2018-02-06', '2018-02-07', '2018-02-08', '2018-02-09',
               '2018-02-10', '2018-02-12', '2018-02-13', '2018-02-18'],
              dtype='datetime64[ns]', name='date', freq=None)
plt.figure(figsize=(18, 10))

plt.bar(baidu_index.index, baidu_index/30000, alpha=0.2, label='百度指数')

period1Count.plot(label='前期:内行')
period2Count.plot(label='中期:联系员')
period3Count.plot(label='后期:推销员')

# 标识三个时期的典型特征
plt.scatter(['2018-01-20', '2018-01-25', '2018-01-30'], [5, 12, 13], s=6000, alpha=0.2, color='r')

plt.xticks(baidu_index.index)
plt.legend()
plt.grid(linewidth=0.2, alpha=0.3)

plt.show()
output_66_0.png

结论:

  • 呈现明显的前、中、后期发展趋势
  • 数据验证偏差:
    • 可能因为新闻源分类错误,
    • 更大的原因:数据搜集不完整,如缺乏其他重要渠道数据(APP市场、微博、微信朋友圈等)

流量监测

指标:交叉表实现:各个分类下的网站,每天发帖量

# 每个分类下的所有新闻源
period1.head()
period2.head()
period3.head()
image.png
period1Cross = pd.crosstab(period1.index, period1.source)
period1Cross

period2Cross = pd.crosstab(period2.index, period2.source)
period2Cross

period3Cross = pd.crosstab(period3.index, period3.source)
period3Cross
image.png
image.png

下面分别分析三个时期的渠道情况

前期各网站发帖数量趋势

内行:

  • 前期渠道:游戏网站(专业社区类)
  • 作用:信息源,提供原始信息
  • 游戏网站内部,行家们进行信息的碰撞、交互和传递,形成原始信息
period1Cross.plot(figsize=(18, 10))
plt.scatter(['2018-01-22'], [12], s=6000, alpha=0.2, color='r')
plt.bar(baidu_index.index, baidu_index/60000, alpha=0.2, label='百度指数')
<BarContainer object of 28 artists>
output_72_1.png

中期各网站发帖数量趋势

联系员:

  • 中期渠道:一些通用和专业结合的社区
  • 作用:粘合剂:连接内行与推销员
  • 借助百度搜索的独特优势,将信息从内行传递给推销员
period2Cross.plot(figsize=(18, 10))
plt.scatter(['2018-01-24'], [5], s=6000, alpha=0.2, color='r')
plt.bar(baidu_index.index, baidu_index/140000, alpha=0.2, label='百度指数')
<BarContainer object of 28 artists>
output_74_1.png

后期各网站发帖数量趋势

推销员:

  • 后期渠道:大众新闻网站、自媒体,包括新闻、视频、社交媒体等
  • 作用:完成最后接力,实现引爆
  • 标记引爆点,使信息病毒式传播
period3Cross.plot(figsize=(18, 10))
plt.scatter(['2018-01-31'], [14], s=6000, alpha=0.2, color='r')
plt.bar(baidu_index.index, baidu_index/40000, alpha=0.2, label='百度指数')
<BarContainer object of 28 artists>
output_76_1.png

内容设计

指标和可视化

各时期新闻标题设计:关键字查看和可视化

分词,计算词频,绘制词云

import jieba
import jieba.analyse

合并三种类别来源的title为字符串

period1Title = ' '.join(period1['title'])
period1Title

period2Title = ' '.join(period2['title'])
period2Title

period3Title = ' '.join(period3['title'])
period3Title
  '旅行青蛙怎么玩?青蛙旅行攻略图文教程(附翻译) 旅行青蛙怎么玩?青蛙旅行攻略图文教程(附翻译) 旅行青蛙可以设置成中文吗?旅行青蛙中文翻译 旅行青蛙攻略中文翻译 旅行青蛙攻中文图文攻略 青蛙旅行四叶草怎么获得?青蛙旅行四叶草什么时候收割? 旅行青蛙称号效果是什么 旅行青蛙称号怎么更改 旅行青蛙怎么设置中文语言方法介绍 旅行青蛙图文翻译分享 旅行青蛙包裹在哪里 旅行青蛙包裹怎么添加物品 旅行青蛙无法连接到网络 无法连接到网络解决方法 旅行青蛙朋友出现时间 蜗牛乌龟蜜蜂出现时间 旅行青蛙怎么玩?在旅行青蛙游戏里要做什么? 旅行青蛙怎么给小青蛙改名字 在哪里改名 旅行青蛙小青蛙是什么时候回来 小青蛙回家时间 旅行青蛙小青蛙多久出门一次?要什么时候才会出门 旅行青蛙青蛙可以带回来什么 青蛙带回道具一览 正在阅读:旅行青蛙攻略详情 青蛙游戏新手玩法攻略 旅行青蛙版下载 旅行青蛙中文版在哪下 正在阅读:旅行青蛙相似游戏推荐 类似旅行青蛙游戏有哪些旅行青蛙... 正在阅读:旅行青蛙攻略 旅行青蛙游戏怎么准备背包 佛系的你在养佛系的蛙?《旅行青蛙》让女玩家抢着 “当妈” 旅行青蛙存档没了怎么办?旅行青蛙存档消失可以恢复吗? 旅行青蛙iOS汉化版下载 旅行青蛙中文版下载地址 旅行青蛙为什么火?养青蛙的游戏叫什么名字?'

分词

# 1:应用自定义词典

with open('jieba/custom.txt', 'r', encoding='utf-8') as f:
    b = f.read()
b = b.split('\n')
b

jieba.load_userdict(b)  # 应用自定义词典
Building prefix dict from the default dictionary ...
Loading model from cache D:\Personal\Temp\jieba.cache
Loading model cost 1.302 seconds.
Prefix dict has been built succesfully.
# 2:分词
period1F = jieba.lcut(period1Title)
period1F

period2F = jieba.lcut(period2Title)
period2F

period3F = jieba.lcut(period3Title)
period3F
['旅行青蛙',
 '怎么',
 '玩',
 '?',
 '青蛙',
 '旅行',
 '攻略',
 '图文',
 '教程',
 '(',
 '附',
 '翻译',
 ')',
 ' ',
 '旅行青蛙',
 '怎么',
 '玩',
 '?',
 '青蛙',
 '旅行',
 '攻略',
 '图文',
 '教程',
 '(',
 '附',
 '翻译',
 ')',
 ' ',
 '旅行青蛙',
 '可以',
 '设置',
 '成',
 '中文',
 '吗',
 '?',
 '旅行青蛙',
 '中文翻译',
 ' ',
 '旅行青蛙',
 '攻略',
 '中文翻译',
 ' ',
 '旅行青蛙',
 '攻',
 '中文',
 '图文',
 '攻略',
 ' ',
 '青蛙',
 '旅行',
 '四叶草',
 '怎么',
 '获得',
 '?',
 '青蛙',
 '旅行',
 '四叶草',
 '什么',
 '时候',
 '收割',
 '?',
 ' ',
 '旅行青蛙',
 '称号',
 '效果',
 '是',
 '什么',
 ' ',
 '旅行青蛙',
 '称号',
 '怎么',
 '更改',
 ' ',
 '旅行青蛙',
 '怎么',
 '设置',
 '中文',
 '语言',
 '方法',
 '介绍',
 ' ',
 '旅行青蛙',
 '图文',
 '翻译',
 '分享',
 ' ',
 '旅行青蛙',
 '包裹',
 '在',
 '哪里',
 ' ',
 '旅行青蛙',
 '包裹',
 '怎么',
 '添加',
 '物品',
 ' ',
 '旅行青蛙',
 '无法',
 '连接',
 '到',
 '网络',
 ' ',
 '无法',
 '连接',
 '到',
 '网络',
 '解决',
 '方法',
 ' ',
 '旅行青蛙',
 '朋友',
 '出现',
 '时间',
 ' ',
 '蜗牛',
 '乌龟',
 '蜜蜂',
 '出现',
 '时间',
 ' ',
 '旅行青蛙',
 '怎么',
 '玩',
 '?',
 '在',
 '旅行青蛙',
 '游戏',
 '里',
 '要',
 '做',
 '什么',
 '?',
 ' ',
 '旅行青蛙',
 '怎么',
 '给',
 '小',
 '青蛙',
 '改名字',
 ' ',
 '在',
 '哪里',
 '改名',
 ' ',
 '旅行青蛙',
 '小',
 '青蛙',
 '是',
 '什么',
 '时候',
 '回来',
 ' ',
 '小',
 '青蛙',
 '回家',
 '时间',
 ' ',
 '旅行青蛙',
 '小',
 '青蛙',
 '多久',
 '出门',
 '一次',
 '?',
 '要',
 '什么',
 '时候',
 '才',
 '会',
 '出门',
 ' ',
 '旅行青蛙',
 '青蛙',
 '可以',
 '带',
 '回来',
 '什么',
 ' ',
 '青蛙',
 '带回',
 '道具',
 '一览',
 ' ',
 '正在',
 '阅读',
 ':',
 '旅行青蛙',
 '攻略',
 '详情',
 ' ',
 '青蛙',
 '游戏',
 '新手',
 '玩法',
 '攻略',
 ' ',
 '旅行青蛙',
 '版',
 '下载',
 ' ',
 '旅行青蛙',
 '中文版',
 '在',
 '哪下',
 ' ',
 '正在',
 '阅读',
 ':',
 '旅行青蛙',
 '相似',
 '游戏',
 '推荐',
 ' ',
 '类似',
 '旅行青蛙',
 '游戏',
 '有',
 '哪些',
 '旅行青蛙',
 '...',
 ' ',
 '正在',
 '阅读',
 ':',
 '旅行青蛙',
 '攻略',
 ' ',
 '旅行青蛙',
 '游戏',
 '怎么',
 '准备',
 '背包',
 ' ',
 '佛系',
 '的',
 '你',
 '在',
 '养佛系',
 '的',
 '蛙',
 '?',
 '《',
 '旅行青蛙',
 '》',
 '让',
 '女',
 '玩家',
 '抢',
 '着',
 ' ',
 '“',
 '当妈',
 '”',
 ' ',
 '旅行青蛙',
 '存档',
 '没',
 '了',
 '怎么办',
 '?',
 '旅行青蛙',
 '存档',
 '消失',
 '可以',
 '恢复',
 '吗',
 '?',
 ' ',
 '旅行青蛙',
 'iOS',
 '汉化版',
 '下载',
 ' ',
 '旅行青蛙',
 '中文版',
 '下载',
 '地址',
 ' ',
 '旅行青蛙',
 '为什么',
 '火',
 '?',
 '养',
 '青蛙',
 '的',
 '游戏',
 '叫',
 '什么',
 '名字',
 '?',
 ' ',
 '微信',
 '朋友圈',
 '晒养',
 '蛙',
 '游戏',
 '背后',
 ' ',
 '为什么',
 '旅行青蛙',
 '最近',
 '这么',
 '红',
 ' ',
 '旅行青蛙',
 '多久',
 '回来',
 '?',
 '旅行青蛙',
 '如何',
 '让',
 '青蛙',
 '早点',
 '回家',
 '?',
 ' ',
 '刷屏',
 '的',
 '旅行青蛙',
 '魔性',
 '在',
 '哪里',
 '?',
 '主角',
 '又',
 '为何',
 '是',
 '只',
 '蛙',
 '?',
 ' ',
 'ios',
 '版',
 '旅行青蛙',
 '在',
 '哪里',
 '有',
 ' ',
 '苹果',
 '手机',
 '怎么',
 '在',
 '商店',
 '搜索',
 '下载',
 '旅行青蛙',
 ' ',
 '正在',
 '阅读',
 ':',
 '旅行青蛙',
 '照片',
 '真实',
 '场景',
 '对照',
 ':',
 '青蛙',
 '旅行',
 '照片',
 '原型',
 '图',
 ' ',
 '旅行青蛙',
 ':',
 '植物',
 '知多少',
 ' ',
 '正在',
 '阅读',
 ':',
 '旅行青蛙',
 '照片',
 '真实',
 '场景',
 '对照',
 ':',
 '青蛙',
 '旅行',
 '照片',
 '原型',
 '图',
 ' ',
 '旅行青蛙',
 '蜗牛',
 '蜜蜂',
 '乌龟',
 '爱',
 '吃',
 '什么',
 ' ',
 '旅行青蛙',
 '蜗牛',
 '怎么',
 '喂',
 ' ',
 '旅行青蛙',
 '为什么',
 '是',
 '佛系',
 '游戏',
 ' ',
 '性冷淡',
 '风',
 '简直',
 '是',
 '一股',
 '清流',
 ' ',
 '旅行青蛙',
 '道具',
 '作用',
 ' ',
 '旅行青蛙',
 '道',
 '道具',
 '攻略',
 '(',
 '附',
 '作用',
 '介绍',
 ')',
 ' ',
 '旅行青蛙',
 '游戏',
 '都',
 '是',
 '哪些',
 '人',
 '在',
 '玩',
 ' ',
 '玩',
 '旅行青蛙',
 '人',
 '多少',
 '有点',
 '“',
 '病',
 '”',
 '?',
 ' ',
 '和',
 '旅行青蛙',
 '类似',
 '的',
 '游戏',
 '有',
 '哪些',
 ' ',
 '这',
 '几款',
 '也',
 '都',
 '很',
 '可爱',
 ' ',
 '旅行青蛙',
 '更改',
 '手机',
 '时间',
 '有用吗',
 ' ',
 '怎么',
 '修改',
 '调',
 '青蛙',
 '旅行',
 '时间',
 '攻略',
 ' ',
 '为什么',
 '大家',
 '都',
 '爱玩',
 '养',
 '青蛙',
 ' ',
 '旅行青蛙',
 '火爆',
 '背后',
 '原因',
 '有',
 '什么',
 '背景',
 '呢',
 ' ',
 '玩',
 '旅行青蛙',
 '的',
 '人',
 '注意',
 ' ',
 '这样',
 '操作',
 '或致',
 '手机',
 '变',
 '“',
 '板砖',
 '”',
 ' ',
 '孤独',
 '的',
 '“',
 '旅行青蛙',
 '”',
 ' ',
 '其实',
 '并',
 '不是',
 '你',
 '想要',
 '的',
 '样子',
 ' ',
 '《',
 '旅行青蛙',
 '》',
 '为什么',
 '能',
 '这么',
 '火',
 '?',
 ' ',
 '山寨',
 '旅行青蛙',
 'AppStore',
 '下载',
 '第一',
 ' ',
 '只会',
 '跳',
 '一',
 '跳',
 '还',
 '收费',
 ' ',
 '刷',
 '爆',
 '朋友圈',
 '的',
 '佛系',
 '游戏',
 '《',
 '旅行青蛙',
 '》',
 '为什么',
 '这么',
 '火',
 '?',
 ' ',
 '渣',
 '蛙',
 '是',
 '什么',
 '意思',
 ' ',
 '旅行青蛙',
 '归来',
 '时',
 '为何',
 '戴着',
 '别人',
 '的',
 '围巾',
 ' ',
 '人民日报',
 '官微评',
 '旅行青蛙',
 ':',
 '蛙',
 '儿子',
 '不',
 '正是',
 '每个',
 '游子',
 '?',
 ' ',
 '旅行青蛙',
 '的',
 '青蛙',
 '会',
 '死',
 '吗',
 '揭晓',
 ' ',
 '撞死',
 '照片',
 '系',
 '网友',
 '恶搞',
 ' ',
 '揭秘',
 '旅行青蛙',
 '的',
 '真相',
 ' ',
 '结局',
 '让',
 '人',
 '猝不及防',
 ' ',
 '旅行青蛙',
 '为什么',
 '这么',
 '火',
 ' ',
 '妹子',
 '们',
 '的',
 '男朋友',
 '也',
 '开启',
 '了',
 '养蛙',
 '模式',
 ' ',
 '旅行青蛙',
 '照片',
 '明信片',
 '大全',
 ' ',
 '旅行青蛙',
 '写真',
 '照片',
 '汇总',
 '一览',
 ' ',
 '中国',
 '消防',
 ':',
 '“',
 '旅行青蛙',
 '”',
 '家',
 '很',
 '危险',
 ' ',
 '灭火器',
 '都',
 '没有',
 ' ',
 '“',
 '旅行青蛙',
 '”',
 '刷屏',
 '透露',
 '二次元',
 '游戏',
 '市场前景',
 '可',
 '期',
 ' ',
 '"',
 '旅行青蛙',
 '"',
 '出',
 '中文版',
 '了',
 '?',
 '网友',
 ':',
 '别闹',
 '这是',
 '青蛙',
 '版',
 '"',
 '跳',
 '一',
 '跳',
 '"',
 '!',
 ' ',
 '旅行青蛙',
 '手游',
 '为什么',
 '这么',
 '火',
 ' ',
 '苹果',
 'APP',
 ' ',
 'Store',
 '下载量',
 '排名榜',
 '第一',
 ' ',
 '旅行青蛙',
 '为什么',
 '不',
 '回家',
 ' ',
 '不',
 '回家',
 '怎么',
 '解决办法',
 ' ',
 '类似',
 '旅行青蛙',
 '的',
 '游戏',
 '有',
 '哪些',
 ' ',
 '类似',
 '青蛙',
 '旅行',
 '好玩',
 '手游',
 '推荐',
 ' ',
 '旅行青蛙',
 '瞬间',
 '爆红',
 ' ',
 '这',
 '背后',
 '的',
 '逻辑',
 '究竟',
 '是',
 '啥',
 '?',
 ' ',
 '网红',
 '游戏',
 '“',
 '旅行青蛙',
 '”',
 '外挂',
 '藏',
 '风险',
 ' ',
 '下载',
 '山寨',
 'APP',
 '小心',
 '被',
 '扣款',
 ' ',
 '旅行青蛙',
 '东北地区',
 '怎么',
 '去',
 ' ',
 '旅行青蛙',
 '东北',
 '去法',
 '位置',
 '坐标',
 ' ',
 '旅行青蛙',
 '时间',
 '怎么',
 '调',
 ' ',
 '怎么',
 '跳过',
 '等待时间',
 '穿越',
 '到',
 '未来',
 ' ',
 '旅行青蛙',
 '道具',
 '都',
 '有',
 '什么',
 '用',
 ' ',
 '旅行青蛙',
 '碗',
 '和',
 '灯',
 '作用',
 '介绍',
 ' ',
 '旅行青蛙',
 '会',
 '死',
 '是',
 '真的',
 '吗',
 ' ',
 '肢解',
 '车祸',
 '图片',
 '全是',
 '博',
 '眼球',
 ' ',
 '旅行青蛙',
 '被车',
 '压死',
 '是',
 '真的',
 '吗',
 ' ',
 '网友',
 '恶意',
 'P',
 '图',
 '造谣',
 '遭吐槽',
 ' ',
 '旅行青蛙',
 '火',
 '了',
 '它',
 '究竟',
 '击中',
 '了',
 '人们',
 '内心',
 '的',
 '哪些',
 '情愫',
 '?',
 ' ',
 '日本',
 '“',
 '旅行青蛙',
 '”',
 '登',
 '中国',
 '手机游戏',
 '排行榜',
 '首位',
 ' ',
 '俩',
 '月',
 '800',
 '万',
 '下载量',
 ' ',
 '旅行青蛙',
 '小',
 '青蛙',
 '呱呱',
 '写',
 '的',
 '日记',
 '可以',
 '看',
 '吗',
 ' ',
 '小',
 '青蛙',
 '日记',
 '一览',
 ' ',
 '旅行青蛙',
 '青蛙',
 '会',
 '死',
 '吗',
 ' ',
 '青蛙',
 '没有',
 '保护',
 '符会',
 '怎么样',
 ' ',
 '和',
 '旅行青蛙',
 '一个',
 '公司',
 '的',
 '游戏',
 '有',
 '哪些',
 ' ',
 '这',
 '款',
 '人气',
 '不输蛙',
 '儿子',
 ' ',
 '旅行青蛙',
 '走红',
 '这',
 '张图',
 '你',
 '可能',
 '没见',
 '过',
 ' ',
 '防火',
 '防爆',
 '救生',
 '看',
 '它',
 ' ',
 '旅行青蛙',
 '会',
 '饿死',
 '吗',
 ' ',
 '养',
 '青蛙',
 '一直',
 '不',
 '回来',
 '怎么办',
 '需要',
 '什么',
 '道具',
 ' ',
 '“',
 '旅行青蛙',
 '”',
 '是',
 '一场',
 '说走就走',
 '的',
 '旅行',
 '吗',
 '?',
 ' ',
 '《',
 '旅行青蛙',
 '》',
 '负责人',
 ':',
 '很',
 '惊讶',
 '游戏',
 '会',
 '在',
 '中国',
 '走红',
 ' ',
 '佛性',
 '游戏',
 '《',
 '旅行青蛙',
 '》',
 '为什么',
 '这么',
 '火',
 ' ',
 '旅行青蛙',
 '是',
 '哪个',
 '国家',
 '人',
 '制作',
 '的',
 ' ',
 '旅行青蛙',
 '是',
 '什么',
 ' ',
 '旅行青蛙',
 '商店',
 '13',
 '种',
 '道具',
 '用途',
 '属性',
 '介绍',
 ' ',
 '山寨',
 '版',
 '“',
 '旅行青蛙',
 '”',
 '被',
 '下架',
 ' ',
 '数千',
 '评论',
 '斥其',
 '“',
 '丢人',
 '”',
 ' ',
 '山寨',
 '版',
 '旅行青蛙',
 '遭下',
 '架',
 ' ',
 '一天',
 '收',
 '数千',
 '评论',
 '斥其',
 '丢人',
 ' ',
 '旅行青蛙',
 '桌面壁纸',
 '高清',
 '大图',
 ' ',
 '游戏',
 '《',
 '旅行青蛙',
 '》',
 ...]
# 3:保存分词后的文本为文本文件,绘制词云用

with open('data/period1Title.txt', 'w', encoding="utf-8")as f:
    f.write(' '.join(period1F))
    
with open('data/period2Title.txt', 'w', encoding="utf-8")as f:
    f.write(' '.join(period2F))
    
with open('data/period3Title.txt', 'w', encoding="utf-8")as f:
    f.write(' '.join(period3F))
# 4:去停用词

def stopw(period):
    # 载入停用词文件
    stopword = []
    with open('jieba/stopword.txt', 'r', encoding='utf-8') as f:
        for line in f.readlines():
            l = line.strip()
            if l == '\\n':
                l = '\n'
            if l == '\\u3000':
                l = '\u3000'

            stopword.append(l)

    stopword


    # 去停用词,第一步,求差集
    x = np.array(period)  # 将分好的词列表转为数组
    y = np.array(stopword)  # 将停用词转为数组

    z = x[~np.in1d(x, y)]  # x的元素是否包含于y
    z

    # 使用列表生成式实现
    k = [i for i in z if len(i) > 1]
    k
    
    return k

# 计算词频并排序
x1 = pd.DataFrame(stopw(period1F))  # 转为df格式
period1C = pd.DataFrame(x1.groupby(0).size().sort_values(ascending=False))

x2 = pd.DataFrame(stopw(period2F))  # 转为df格式
period2C = pd.DataFrame(x2.groupby(0).size().sort_values(ascending=False))

x3 = pd.DataFrame(stopw(period3F))  # 转为df格式
period3C = pd.DataFrame(x3.groupby(0).size().sort_values(ascending=False))
period3C
0
0
旅行青蛙 153
青蛙 40
游戏 26
攻略 13
旅行 11
道具 10
阅读 9
方法 8
称号 7
照片 7
时间 7
下载 6
类似 6
介绍 6
中国 6
蜗牛 6
儿子 6
回家 6
一览 5
真的 4
山寨 4
图文 4
广告 4
回来 4
佛系 4
蜜蜂 3
手机 3
多久 3
网络 3
解决 3
... ...
朋友 1
测试 1
没见 1
汉化版 1
水印 1
气候 1
正确 1
模式 1
植物 1
桌面壁纸 1
样子 1
板砖 1
条件 1
未来 1
有用吗 1
操作方法 1
最长 1
晒养 1
早点 1
日本 1
无关 1
旅途 1
教学 1
救生 1
改名字 1
改名 1
改变命运 1
收费 1
收割 1
1000 1

306 rows × 1 columns

# 5: 保存结果
period1C.to_csv('data/keyword1.csv')
period2C.to_csv('data/keyword2.csv')
period3C.to_csv('data/keyword3.csv')

词云绘制

比表格高频词更直观

from wordcloud import WordCloud
from PIL import Image
# 载入文本数据
with open('data/period1Title.txt', 'r', encoding='utf-8') as f:
    period1Title = f.read()
period1Title

with open('data/period2Title.txt', 'r', encoding='utf-8') as f:
    period2Title = f.read()
period2Title

with open('data/period3Title.txt', 'r', encoding='utf-8') as f:
    period3Title = f.read()
period3Title
  '旅行青蛙 怎么 玩 ? 青蛙 旅行 攻略 图文 教程 ( 附 翻译 )   旅行青蛙 怎么 玩 ? 青蛙 旅行 攻略 图文 教程 ( 附 翻译 )   旅行青蛙 可以 设置 成 中文 吗 ? 旅行青蛙 中文翻译   旅行青蛙 攻略 中文翻译   旅行青蛙 攻 中文 图文 攻略   青蛙 旅行 四叶草 怎么 获得 ? 青蛙 旅行 四叶草 什么 时候 收割 ?   旅行青蛙 称号 效果 是 什么   旅行青蛙 称号 怎么 更改   旅行青蛙 怎么 设置 中文 语言 方法 介绍   旅行青蛙 图文 翻译 分享   旅行青蛙 包裹 在 哪里   旅行青蛙 包裹 怎么 添加 物品   旅行青蛙 无法 连接 到 网络   无法 连接 到 网络 解决 方法   旅行青蛙 朋友 出现 时间   蜗牛 乌龟 蜜蜂 出现 时间   旅行青蛙 怎么 玩 ? 在 旅行青蛙 游戏 里 要 做 什么 ?   旅行青蛙 怎么 给 小 青蛙 改名字   在 哪里 改名   旅行青蛙 小 青蛙 是 什么 时候 回来   小 青蛙 回家 时间   旅行青蛙 小 青蛙 多久 出门 一次 ? 要 什么 时候 才 会 出门   旅行青蛙 青蛙 可以 带 回来 什么   青蛙 带回 道具 一览   正在 阅读 : 旅行青蛙 攻略 详情   青蛙 游戏 新手 玩法 攻略   旅行青蛙 版 下载   旅行青蛙 中文版 在 哪下   正在 阅读 : 旅行青蛙 相似 游戏 推荐   类似 旅行青蛙 游戏 有 哪些 旅行青蛙 ...   正在 阅读 : 旅行青蛙 攻略   旅行青蛙 游戏 怎么 准备 背包   佛系 的 你 在 养佛系 的 蛙 ? 《 旅行青蛙 》 让 女 玩家 抢 着   “ 当妈 ”   '
# 读入停用词文件为列表
with open('jieba/stopword.txt', 'r', encoding='utf-8') as f:
#     print(f.read())
    s = f.read()
stopword = s.split('\n')

# stopword
# 词云绘制时去停用词
# 读取背景图
alice_mask = np.array(Image.open("jieba/timg.jpg"))

分词,提取高频词,绘制词云

前期标题设计

前期特点:攻略、问题相关,铺垫,技术型文章,比较硬

period1C[:20]
0
0
旅行青蛙 214
青蛙 62
下载 35
攻略 26
方法 22
中文版 21
游戏 21
汉化版 19
旅行 19
蜗牛 18
介绍 17
中文 14
回家 12
食物 12
喜欢 12
一览 12
出门 11
翻译 11
乌龟 11
地址 10
wordcloud = WordCloud(
    background_color='white',# 设置背景颜色
    max_words=30, # 设置最大现显示词数
    font_path="jieba/arial unicode ms.ttf",  # 字体,不设置则汉字乱码
    stopwords = stopword,  # 去停用词
    mask=alice_mask,  # 设置背景图片
).generate(period1Title)
wordcloud

plt.figure(figsize=(18, 10), dpi=300)
plt.imshow(wordcloud, interpolation='bilinear') # 绘制数据内的图片,双线性插值绘图
plt.axis("off") # 去掉坐标轴
(-0.5, 499.5, 493.5, -0.5)
output_95_1.png

中期标题设计

中期特点:内容相关,造势

period2C[:20]
0
0
旅行青蛙 74
攻略 20
青蛙 18
游戏 15
玩法 9
一览 9
图文 8
详细 7
中文 6
汇总 6
方法 5
翻译 5
回家 4
大全 4
汉化版 4
称号 4
时间 4
旅行 4
日语 3
道具 3
wordcloud = WordCloud(
    background_color='white',# 设置背景颜色
    max_words=30, # 设置最大现显示词数
    font_path="jieba/arial unicode ms.ttf",  # 字体,不设置则汉字乱码
    stopwords = stopword,  # 去停用词
    mask=alice_mask,  # 设置背景图片
).generate(period2Title)
wordcloud

plt.figure(figsize=(18, 10), dpi=300)
plt.imshow(wordcloud, interpolation='bilinear') # 绘制数据内的图片,双线性插值绘图
plt.axis("off") # 去掉坐标轴
(-0.5, 499.5, 493.5, -0.5)
output_98_1.png

后期标题设计

后期特点:标签相关,提供话题,如佛系、儿子、爆红等

period3C[:20]
0
0
旅行青蛙 153
青蛙 40
游戏 26
攻略 13
旅行 11
道具 10
阅读 9
方法 8
称号 7
照片 7
时间 7
下载 6
类似 6
介绍 6
中国 6
蜗牛 6
儿子 6
回家 6
一览 5
真的 4
wordcloud = WordCloud(
    background_color='white',# 设置背景颜色
    max_words=30, # 设置最大现显示词数
    font_path="jieba/arial unicode ms.ttf",  # 字体,不设置则汉字乱码
    stopwords = stopword,  # 去停用词
    mask=alice_mask,  # 设置背景图片
).generate(period3Title)
wordcloud

plt.figure(figsize=(18, 10), dpi=300)
plt.imshow(wordcloud, interpolation='bilinear') # 绘制数据内的图片,双线性插值绘图
plt.axis("off") # 去掉坐标轴
(-0.5, 499.5, 493.5, -0.5)
output_101_1.png

总结建议

游戏类产品搜索引擎推广建议

  • 渠道选取
    • 游戏专业社区
    • 互联网类社区
    • 通用社区,自媒体
  • 时间点选取
    • 前期
    • 中期
    • 后期
  • 标题设计
    • “攻略”铺垫
    • “内容”造势
    • “标签”话题

时间点选取详细:

  • 内行
    • 前期铺垫
    • 在专业网站上发布游戏评测、软文等,提供下载、攻略、汇总、大全等
    • 吸引内行注意,激励其积极讨论
  • 联系员
    • 中期造势
    • 在IT、互联网类专业社区等搜索引擎检索信息源集中投放广告、发布软文
    • 使非内行开始接触游戏信息
  • 推销员
    • 后期话题
    • 制造话题,蹭热度,创造新鲜有趣、与众不同的游戏标签,在各大通用社区(新浪、网易、朋友圈、微博热搜)等火力全开
    • 利用黏性话题踢好临门最后一脚

进阶完善内容

  • 新闻源分类:根据分析结果重新分类新闻源
  • 内容关键字:不使用词频,使用TF-IDF算法
  • 绘制词云时,将一些无用高频词,例如 旅行青蛙,去停用词
  • 可能的话,抓取其他新闻源数据,微博、公众号等等

相关文章

网友评论

    本文标题:产品推广策略数据分析 - 游戏为例

    本文链接:https://www.haomeiwen.com/subject/xloflqtx.html