
一般存在下面三种岗位:
数据指标的定义:对当前业务有参考价值的可统计数据
常用的数据指标
用户数据 谁
行为数据 干了什么
业务数据 产生了什么结果
用户数据
存量 DAU、MAU
增量 新增用户
健康程度 留存率
从哪儿来 渠道来源
搜索引擎推广 SEO
Rom 推广
app 商店(自然流量 也可以推广)
手机厂商预装
其它产品挂下载链接
扫码
行为数据
次数、频率 PV UV 访问深度
关键路径走了多远 转化率
行为做了多久 时长
质量 弹出率(跳出率)
业务数据
总量 GMV 访问时长
人均 ARPU AverageRevenuePerUser 每用户平均收入 人均访问时长
ARPPU Average Revenue Per Paying User 每付费用户平均收益
人数 付费人数 播放人数
健康程度 付费率 付费频次 观看率
被消费对象 SKU 被消费内容
最终目的出发 梳理业务模块 -> 判断业务模块类型->根据业务模块类型选择
数据指标:
如何梳理业务模块
业务模块:

根据业务模块选择数据指标

计数阶段:
可以使用 goaccess 这款工具简单的来统计
通过脚本与代码统计日志
通过 BI 工具进行基本的分析
通过 awk 工具去搞,外加 uniq 去重,wc 去统计
awk '{print $1}' access.log|sort|uniq|wc -l
使用awk 计算pv(总点击量,直接wc -l access.log就是计算总点击量) ,uv(人访问量,上面的代码就是统计每ip访问量)
解决的问题
流量依赖性业务,如电商,或者一锤子买卖
优势
能将流量入口分析得较为细致
解决的问题
哪些资源被消费
被消费的情况如何
内容表现质量如何
解决的问题
以内容为核心资源的,如媒体、视频网站
优势
能从内容的视角描述其表现
解决的问题
用户来了干什么?
用户还会不会再来?
用户在哪流失了?
用户都是啥样的?
Mixpanel 工具
Inspectlet 工具 —通过录制屏幕的行为 还原用户的行为
解决的问题
流程是否顺畅?
规模/频次如何?
异常原因何在?
这里可以看下神策数据的,能进入这家公司挺好的。
如何进行对比分析:
事出反常必有妖,不论增减,只要用户不正常上升下降都需要对比
对比分析比什么:
例子:
公司做了微博大 V 推广,想看情况
基本思路:
数据怎么样
有 XX 人启动过
APP 关键功能使用率 XXX%
日活和留存是
思路流程:
APP 启动 按设备 iPhone 美图手机比较多 符合产品定位
APP 启动 按来源 用户因 PUSH 下发进入 APP 比较多
APP 启动 按城市等级查看 发现一线城市用户比较多
运营能力有限只有北上广深有推送,因此打开几率大
APP 启动 按新老用户查看 日活量整体变化不大,老用户占比下降,新用户占比上升,留不住用户。
多维分析就是将一个事件分解成多个小的事件,然后逐层去分析讨论
运作原理
通过一连串向后影响的用户行为来观察目标
适用场景
适用: 有明确的业务流程和业务目标
不太适用:没有明确的流程,跳转关系复杂
漏斗分析就是归结原因,比如我要分析这个软件为什么没人用,第一层宣传是否到位,宣传到位了,再分析安装是否到位,注册是否到位,等等有一系列的时间顺序下去的流程。和多维分析需要区分开
验证产品长期价值可以看月留存,将某一时间段的用户 ID 与另一交叉去重。
随着产品不断的优化,月留存是不断增长的
看日留存会数据量特别多,观察重点不知道放在哪里,而一个月我们产品一个迭代,发一个新版本
一般的计算方式 看大盘可能不准,产品 运营 技术 市场每个环节可能都会对留存造成影响,比如搞活动,引入了一个低质量的渠道,造成留存大跌,因为低质量渠道进来的都是垃圾用户,因此需要看精准留存
精准留存
过滤进行过指定行为的用户 ID,再计算
将用户分为不同的群体后,观察之前留存的区别
数据分析基础阶段
数据分析指标:

跳过率就是跳出率
GMV:总的访问时长
ARPU:每用户平均访问时长
ARPPU:每付费用户平均访问时长
SKU:品类的数量
四个模块:

转化率就是详情页转化率,就是点击那个详情页占比总点进list页面的比率(就是商品更吸引人)。
分析工具:

数据分析方法:
还是注意多维分析和漏斗分析的区别

用户画像:通过对用户各类特征进行标识给用户贴上各类标签,通过这些标签将用户分为不同的群体,以便对不同的群体分别进行产品/运营动作用途。
基础属性
社会关系
行为特征
业务相关—比如是健身类的产品,就会有下面的业务指标
找出事件发生的「主要原因」
因为所有的行为都是漏斗过程,路径挖掘分析法的运作原理:逐级展开某一事件的前一级(后一级)事件,观察其流向。
上面我们聊了路径挖掘分析法,大家可能会说,我们有了路径挖掘模型之后,单个用户的行为序列还有什么意义呢,其实单个用户的行为序列能让我们回归具体的业务场景,发现隐藏在统计数据下被统计数据抹平了细节的更真实的业务场景。其实,路径挖掘分析法有它的局限性,它只是把一群人放到这个路径里进行分析,它反应的是一群人的趋势,但是对于单个用户来讲,趋势肯定是不一样的,所以这时我们就需要运用到行为序列分析法(追求个性化)。行为序列分析法的运作原理:将单个用户的所有行为以时间线的形式进行排列。
这边只列出常使用的,并不进行具体介绍。
前三个数据分析师要学,后面的不仅仅数据分析师需要,人工智能也需要相关的了解
略
略
略
首先下载的话就需要管理员,管理员权限打开cmd,然后:
pip install jupyter
如果没有的话,就需要自己去配置环境变量:把那个jupyter所在的python的scrip啥的路径添加到环境变量下
安装完毕后输入jupyter notebook 启动(在git bash中启动可以得到中文jupyter)
基本上的操作都是傻瓜式操作,这边就不特殊介绍,不过需要关注的是,我们要到项目文件下,或者你的测试文件夹下打开对应的git bash,然后输入jupyter notebook,然后创建jupyter,需要我们提前选择好想要打开的文件夹,或者说,提前准备好的位置。

直接创建ipynb文件运行即可,但是需要注意的是,如果pycharm不兼容,就需要手动配置服务器地址,现在对应资源路径运行jupyter notebook,然后复制对应的网址,粘贴进去


参考教程:链接
pip install matplotlib
#折线图的绘制
x = range(1,8) # x轴的位置
y = [17, 17, 18, 15, 11, 11, 13]
# 传入x和y, 通过plot画折线图
plt.plot(x,y)
plt.show()

x = range(1,8) # x轴的位置
y = [17, 17, 18, 15, 11, 11, 13]
# 传入x和y, 通过plot画折线图
plt.plot(x,y,color='red',alpha=0.5,linestyle='-',linewidth=3)
plt.show()
# '''基础属性设置
# color='red' : 折线的颜色alpha=0.5 : 折线的透明度(0-1) linestyle='--' : 折线的样式linewidth=3 : 折线的宽度—粗细
# '''
# '''线的样式
# - 实线(solid)
# -- 短线(dashed)
# -. 短点相间线(dashdot)
# : 虚点线(dotted)
# '''

# 折点样式选择
x = range(1,8) # x轴的位置
y = [17, 17, 18, 15, 11, 11, 13]
# 传入x和y, 通过plot画折线图
plt.plot(x, y, marker='>')
plt.show()

# 保存图形
import random
x = range(2,26,2) # x轴的位置
y = [random.randint(15, 30) for i in x]
# 设置图片的大小
'''
figsize:指定figure的宽和高,单位为英寸; dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80,1英寸等于2.5cm,A4纸是 21*30cm的纸张
'''
# 设置画布对象,figsize中对应的单位是英寸,dpi是每英寸有多少像素点
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y) # 传入x和y, 通过plot画图
#plt.show()
# 保存(注意: 要放在绘制的下面,并且plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。)
# plt.savefig('./t1.png')
# 图片的格式也可以保存为svg这种矢量图格式,这种矢量图放在网页中放大后不会有锯齿#
plt.savefig('./t1.svg')

# 设置刻度
x = range(2,26,2) # x轴的位置
y = [random.randint(15, 30) for i in x]
plt.figure(figsize=(20,8),dpi=80)
# # 设置x轴的刻度
# plt.xticks(range(1,25))
# # 设置y轴的刻度
# plt.yticks(range(min(y),max(y)+1))
# 构造x轴刻度标签
x_ticks_label = ["{}:00".format(i) for i in x] #rotation = 45 让字旋转45度
plt.xticks(x,x_ticks_label,rotation = 45)
# 设置y轴的刻度标签
y_ticks_label = ["{}℃".format(i) for i in range(min(y),max(y)+1)]
plt.yticks(range(min(y),max(y)+1),y_ticks_label)
plt.plot(x,y)
plt.show()

import random
x = range(0,120)
y = [random.randint(10,30) for i in range(120)]
plt.figure(figsize=(20,8),dpi=80)
#rotation将字体旋转45度
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname='C:\Windows\Fonts\STSONG.TTF',size=18)
plt.xlabel('时间',rotation=45,fontproperties = my_font)
plt.ylabel("次数",fontproperties=my_font)
# 设置标题
plt.title('每分钟跳动次数',color='red',fontproperties = my_font)
plt.plot(x,y)

# 一图多线
# 假设大家在30岁的时候,根据自己的实际情况,统计出来你和你同事各自从11岁到30岁每年交的男/女朋友的数量如列表y1和
# y2,请在一个图中绘制出该数据的折线图,从而分析每年交朋友的数量走势。
y1 = [1, 0, 1, 1, 2, 4, 3, 4, 4, 5, 6, 5, 4, 3, 3, 1, 1, 1, 1, 1]
y2 = [1, 0, 3, 1, 2, 2, 3, 4, 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1]
x = range( 11, 31 ) # # 设置图形
plt.figure( figsize=(20, 8), dpi=80 )
'''
添加图例:label 对线的解释,然后用plt.legend添加到图片上;
添加颜色: color='red'
线条风格: linestyle='-'; - 实线 、 -- 虚线,破折线、 -. 点划线、 : 点虚线,虚线、 '' 留空或空格线条粗细: linewidth = 5
透明度: alpha=0.5
'''
plt.plot( x, y1, color='red', label='自己' )
plt.plot( x, y2, color='blue', label='同事' )
# 设置x轴刻度
xtick_labels = ['{}岁'.format( i ) for i in x]
my_font = font_manager.FontProperties( fname='C:\Windows\Fonts\STSONG.TTF', size=18 )
plt.xticks( x, xtick_labels, fontproperties=my_font, rotation=45 )
# 绘制网格(网格也是可以设置线的样式)
# alpha=0.4 设置透明度
plt.grid( alpha=0.4 )
# 添加图例(注意:只有在这里需要添加prop参数是显示中文,其他的都用fontproperties) # 设置位置loc : upper left、 lower left、 center left、 upper center
plt.legend( prop=my_font, loc='upper left' )
# 展示
plt.show()

建议使用第二种:
第一种:
import numpy as np
x = np.arange(1, 100) #划分子图
fig,axes=plt.subplots(2,2)
ax1=axes[0,0]
ax2=axes[0,1]
ax3=axes[1,0]
ax4=axes[1,1]
fig=plt.figure(figsize=(20,10),dpi=80) #作图1
ax1.plot(x, x) # 作 图 2
ax2.plot(x, -x) #作图3
ax3.plot(x, x**2)
# ax3.grid(color='r', linestyle='--', linewidth=1,alpha=0.3) #作图4
ax4.plot(x, np.log(x))
plt.show()

第二种:
x = np.arange(1,100)
#新建figure对象
fig=plt.figure(figsize=(20,10),dpi=80) #新建子图1
ax1=fig.add_subplot(2,2,1) ## 2,2是分割成2 * 2 然后画在第一张图上
ax1.plot(x, x)
#新建子图2
ax3=fig.add_subplot(2,2,2)
ax3.plot(x, x**2)
ax3.grid(color='r', linestyle='--', linewidth=1,alpha=0.3)
# 新 建 子 图 3
ax4=fig.add_subplot(2,2,3)
ax4.plot(x, np.log(x))
# 新 建 子 图 4
ax2=fig.add_subplot(2,2,4)
ax2.plot(x, -x)
plt.show()

# 散点图
y = [11, 17, 16, 11, 12, 11, 12, 6, 6, 7, 8, 9, 12, 15, 14, 17, 18, 21, 16, 17, 20, 14, 15, 15, 15, 19, 21, 22, 22, 22,
23]
x = range( 1, 32 )
# 设置图形大小
plt.figure( figsize=(20, 8), dpi=80 )
# 使用scatter绘制散点图
plt.scatter( x, y, label='3月份' )
# 调整x轴的刻度
my_font = font_manager.FontProperties( fname='C:\Windows\Fonts\STSONG.TTF', size=10 )
_xticks_labels = ['3月{}日'.format(i) for i in x]
plt.xticks( x[::3], _xticks_labels[::3], fontproperties=my_font,rotation=45)
plt.xlabel( ' 日 期 ', fontproperties=my_font )
plt.ylabel( '温度', fontproperties=my_font )
# 图 例
plt.legend( prop=my_font )
plt.show()

#条形图
my_font = font_manager.FontProperties(fname='C:\Windows\Fonts\STSONG.TTF',size=16)
a = ['流浪地球','疯狂的外星人','飞驰人生','大黄蜂','熊出没·原始时代','新喜剧之王']
b = [38.13,19.85,14.89,11.36,6.47,5.93]
plt.figure(figsize=(20,8),dpi=80)
# 绘制条形图的方法
'''
width=0.3 条形的宽度
'''
rects = plt.bar(range(len(a)),b,width=0.3,color='r')
plt.xticks(range(len(a)),a,fontproperties=my_font,rotation=45)
# 在条形图上加标注(水平居中)
for rect in rects:
height = rect.get_height()
plt.text(rect.get_x() + rect.get_width() / 2, height+0.3, str(height),ha="center")
plt.show()

'''
现有250部电影的时长,希望统计出这些电影时长的分布状态(比如时长为100分钟到120分钟电影的数量,出现的频率)等信息,你应该如何呈现这些数据?
'''
# 1)准备数据
time = [131, 98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114,
119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115, 99,
136, 126, 134, 95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117, 86, 95, 144,
105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123, 86, 101, 99, 136,123,
117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116,
108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125,
138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140, 83, 110, 102,123,
107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109,
106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144, 83, 123,
111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109,
141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103,
130, 141, 117, 106, 114, 121, 114, 133, 137, 92,121, 112, 146, 97, 137, 105, 98,
117, 112, 81, 97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111,
101, 110,105, 129, 137, 112, 120, 113, 133, 112, 83, 94, 146, 133, 101,131, 116,
111, 84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]
from matplotlib import font_manager
from matplotlib import pyplot as plt
my_font = font_manager.FontProperties(fname='C:\Windows\Fonts\STSONG.TTF',size=18) # 2)创建画布
plt.figure(figsize=(20, 8), dpi=100) # 3)绘制直方图
# 设置组距
distance = 1
# 计算组数
group_num = int((max(time) - min(time)) / distance) # 最大值减去最小值除以组距就得到组数
plt.hist(time, bins=group_num) #bins是组数
# 修改x轴刻度显示
plt.xticks(range(min(time), max(time))[::2])
# 添加网格显示
plt.grid(linestyle="--", alpha=0.5)
#添 加 x, y 轴 描 述 信 息
plt.xlabel("电影时长大小",fontproperties=my_font)
plt.ylabel("电影的数据量",fontproperties=my_font)
# 4)显示图像
plt.show()

import matplotlib.pyplot as plt
import matplotlib
label_list = ["第一部分", "第二部分", "第三部分"] # 各部分标签
size = [55, 35, 10] # 各部分大小
color = ["red", "green", "blue"] # 各部分颜色
explode = [0, 0.05, 0] # 各部分突出值
"""
绘 制 饼 图
explode: 设 置 各 部 分 突 出
label: 设 置 各 部 分 标 签
labeldistance:设置标签文本距圆心位置,1.1表示1.1倍半径
autopct: 设 置 圆 里 面 文 本
shadow:设置是否有阴影
startangle:起始角度,默认从0开始逆时针转
pctdistance:设置圆内文本距圆心距离返回值
l_text:圆内部文本,
matplotlib.text.Text object
p_text:圆外部文本"""
matplotlib.rcParams['font.sans-serif']=['SimHei'] #为了显示汉字
patches, l_text, p_text = plt.pie(size,explode=explode, colors=color, labels=label_list,
labeldistance=1.1, autopct="%1.1f%%", shadow=True, startangle=90, pctdistance=0.6)
plt.axis("equal") # 设置横轴和纵轴大小相等,这样饼才是圆的
plt.legend()
plt.show()

见31 数据分析(中):链接
见32 数据分析(下): 链接