[TOC]
第五章
课时27 基本统计
- 计数、求和、均值、方差etc
参考excel透视表中对应的一些计算方法
describe()
# size,sum,mean,var,std
data.score.describe()
data.score.size
data.score.max()
data.score.min()
data.score.sum()
data.score.mean()
data.score.var()
data.score.std()
# 稍微复杂的案例
#累计求和
data.score.cumsum()
#最大值和最小值所在位置
data.score.argmin()
data.score.argmax()
data.score.quantile(
0.3,
interpolation="nearest"
)
课时28 分组分析
分析对象的聚类分群,对比差异性
- 数值分组
- 区域分组等
# groupby(by=[分组列1,分组列2,...)[统计列1,统计列2...].agg({统计列别名1:统计函数1,统计列别名2:统计函数2})
aggResult = data.groupby(
by=['class']
)['score'].agg({
'总分': numpy.sum,
'人数': numpy.size,
'平均值': numpy.mean
})
课时29 分布分析
- 等距或者不等距,研究各组分布规律
- 收入,年龄,消费
#cut
#groupby
课时30 交叉分析
- 多个分组变量形成交叉表,进行对比分析
- 定量、定量
- 定量、定性
- 定性、定性
# pivot_table(values, index,columns, aggfunc, fill_value)
# 数据透视表
# fill_value为NA数据的填充值
ptResult = data.pivot_table(
values=['年龄'],
index=['年龄分层'],
columns=['性别'],
aggfunc=[numpy.size]
)
课时31 结构分析
- 组成部分的占比,分析内部特征
定性分组
- 性别、地区,市场占有率
- 股权
# axis
# 0:按列运算,1:按行运算
这里axis和前面3.3课时的时候的axis又会遇到纠结
drop(1,axis=0)是按行删除,但是apply(min,axis=0)是按列计算,如何统一?自己的思考:看结果,如果值与dataframe的列数一致axis = 0,如果值与dataframe的行数一致axis=1.那么axis=0的结果是删除了第2(1+1,0起点)行,也就是删除的内容与列数一致。所以是列操作,稍微有点儿绕,求大神指点
外运算
内运算
pandas默认按列计算--矩阵、向量
ptResult.div(ptResult.sum(axis=1), axis=0)
ptResult.div(ptResult.sum(axis=0), axis=1)
课时32 相关分析
随机变量的相互依存关系
- 线性
- 非线性
常见的线性关系为主要研究对象。
Pearson相关系数r来刻画线性相关程度:
- [0,0.3) 低度相关
- [0.3,0.8) 中度相关
- [0.8,1] 高度相关
广告投放和销售额;身高与体重
DataFrame.corr()
Series.corr(other)
$\rho=\frac{Cov(X,Y)}{\delta_{x}\delta_{y}}$
去除量纲后的“协方差”就是相关系数
课时33 RFM分析
定义
- 客户活跃度、交易金额来进行客户价值分群
- Recency(最近一次交易), Frequency(交易总次数), Monetray(交易总额)
- 3个维度,形成8个客群分类
- 经验公式:RFM评分=100*R_S+10*F_S+1*M_S
基本假设
- R:最近有过交易行为的客户,再次发生交易的可能性要高于最近没有交易行为的客户
- F:交易频率较高的客户比交易频率低的客户,更有可能再次发生交易行为
- M:过去所有交易总金额较多的客户,比交易总金额较少的客户,更有消费积极性
bins = aggData.MonetaryAgg.quantile(
q=[0, 0.2, 0.4, 0.6, 0.8, 1],
interpolation='nearest'
)
bins[0] = 0
labels = [1, 2, 3, 4, 5]
M_S = pandas.cut(
aggData.MonetaryAgg,
bins, labels=labels
)
aggData.sort(
['level', 'RFM'],
ascending=[1, 1]
)
# python3.6运行后,错误,需要更换函数为sort_values
aggData.sort_values(
['level', 'RFM'],
ascending=[1, 1]
)
课时34 矩阵分析
根据事物重要性,进行关联分析
主要在于两个变量的选择,可视化的来分析多维度的分布情况,进而分析关联性