精准营销与用户画像

 

什么是精准营销?

精准营销依托现代信息技术手段,在精准定位的基础上建立个性化的顾客沟通服务体系,最终实现可度量的、低成本的可扩张之路。精准营销相对于一般的网络营销,更加注重精准、可衡量和高投资回报。。

精准营销的优势是什么?

1、可量化。传统的营销定位具有局限性,依靠现代信息技术精确定位市场的精准营销,可量化营销的结果,所以比一般的网络营销效果更好;

2、可度量、可调控。传统的广告沟通成本高,企业想要通过低成本达到快速增长根本不可能,精准营销借助的是数据库技术、网络通讯技术及现代高度分散物流等手段,保障了与客户的长期个性化沟通,使结果可度量、可调控,成本更低; 等。。。。

 

说白了就是通过对数据的分析对客户进行打标签,对不同类型的客户做不同的有效的营销。

用一个简单的案例来了解!现在我们拿到一组某购物网站的客户消费记录表。

案例说明:

现在我们要做一个关于打折商品的营销活动,如果你是一名营销人员你想知道客户的那些信息(标签)?

 

通过结果反推:我肯定想知道客户对打折商品是否感兴趣,好了已经有一个标签了(对打折商品的兴趣度)。继续我还想知道客户价值的高低(第二个标签:价值度),我还想知道这个客户是否活跃(第三个标签:活跃度)。

好了我们现在有了这三个标签,就可以通过这三个标签去做不同的营销方案。那么,我们来探讨一下怎么通过对数据的分析来对每个客户来打上这三个标签

分析工具:python--Anaconda3--jupyter notebook

所用到的库:pandan、numpy、sklearn.preprocessing、datetime

1.打开数据文件

import pandas as pd
import numpy as np
import os


os.chdir(r'C:\Users\code\CASE1\Python')
trad_flow = pd.read_csv(r'RFM_TRAD_FLOW.csv', encoding='gbk')
trad_flow.head(10)

2.对客户购买的商品进行计数(结合第四部)

F=trad_flow.groupby(['cumid','type']).count()
F.head()
#以cumid汇总横向显示
F_trans=pd.pivot_table(F,index='cumid',columns='type',values='transID')
F_trans.head()

2.1:缺失值处理

#缺失值处理
F_trans['Special_offer']= F_trans['Special_offer'].fillna(0)
F_trans.head()

3.对标签的计算

3.1计算客户对打折商品的兴趣度(购买打折商品数量/购买总数)

#通过计算客户购买特价商品数量占总商品数量的比率,得出客户对打折商品感兴趣的程度--特价/(特价+正常)---因为赠送是不要钱的所以不考虑。
F_trans["interest"]=F_trans['Special_offer']/(F_trans['Special_offer']+F_trans['Normal'])
F_trans.head()

 

3.2.计算客户价值

#通过计算M反应客户的价值信息
M=trad_flow.groupby(['cumid','type'])[['amount']].sum()
M.head()


#通过对所有类型的商品的购买金额进行汇总得出客户价值的高低,并生成新的标签-value
M_trans=pd.pivot_table(M,index='cumid',columns='type',values='amount')
M_trans['Special_offer']= M_trans['Special_offer'].fillna(0)
M_trans['returned_goods']= M_trans['returned_goods'].fillna(0)
M_trans["value"]=M_trans['Normal']+M_trans['Special_offer']+M_trans['returned_goods']
M_trans.head()

3.3.计算客户是沉默或活跃(将时间日期转换为时间戳)

# # In[8] 定义一个从文本转化为时间的函数

    #time.strptime将时间字符串转换为struct_time时间对象,time.mktime将struct_time对象实例转换成时间戳
    # (时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。)
    #秒数越小说明距离上一次购买时间越长---沉默。反之亦然
from datetime import datetime
import time
def to_time(t):
    out_t=time.mktime(time.strptime(t, '%d%b%y:%H:%M:%S'))  ########此处修改为时间戳方便后面qcut函数分箱
    return out_t
# a="14(日)JUN(月份的简称)09(年):17(时):58(分):34(秒)"
# print(to_time(a))

#将转换时间日期的函数应用到trad_flow结构里的time列(把一整列都转换为时间戳,并生成行的标签time_new)
trad_flow["time_new"]= trad_flow.time.apply(to_time)
trad_flow.head()

#以cumid、time_new列进行分组,找出比较大的(活跃)
R=trad_flow.groupby(['cumid'])[['time_new']].max()
R.head()

时间戳--从北京时间1970年01月01日08时00分00秒至今(已秒计)

 

4.特征工程--特征二值化(将所求得的三个标签的值转换为0,1)

对兴趣度进行特征二值化

from sklearn import preprocessing
from pandas import DataFrame,Series
import pandas as pd
#特征工程--特征二值化(0,1),把以上求得的标签(是否感兴趣,是否活跃,是否有价值)进行一一二值化
#等深分箱
threshold = pd.qcut(F_trans["interest"], 2, retbins=True)[1][1]
#取出一个值,用做比较
binarizer = preprocessing.Binarizer(threshold=threshold)
# F_trans['interest'].values.reshape(-1, 1),把值转化为一列二维的数组,进过比较返回0,1
interest_q =pd.DataFrame(binarizer.transform( F_trans['interest'].values.reshape(-1, 1)))
#添加行索引,列索引
interest_q.index=F_trans.index
interest_q.columns=["interest"]
interest_q

4.1对客户价值(valve)进行特征二值化

from sklearn import preprocessing
#对特征值(valve客户价值)进行特征二值化
threshold = pd.qcut(M_trans["value"],2, retbins=True)[1][1]
binarizer = preprocessing.Binarizer(threshold=threshold)
value_q = pd.DataFrame(binarizer.transform(M_trans["value"].values.reshape(-1, 1)))
value_q.index=M_trans.index
value_q.columns=["value"]
value_q

4.2对客户是否沉默(time)进行特征二值化

#对特征值(time客户是否沉默)进行特征二值化
threshold = pd.qcut(R["time_new"], 2, retbins=True)[1][1]
binarizer = preprocessing.Binarizer(threshold=threshold)
time_new_q = pd.DataFrame(binarizer.transform(R["time_new"].values.reshape(-1, 1)))
time_new_q.index=R.index
time_new_q.columns=["time"]
time_new_q

5.合并特征值

#合并三各特征值
analysis=pd.concat([interest_q, value_q,time_new_q], axis=1)
# In[12]
#analysis['rank']=analysis.interest_q+analysis.interest_q
analysis = analysis[['interest','value','time']]
analysis.head()

10001-----1.0--1.0--1.0  (有兴趣-高价值-活跃)

转化营销人员看的懂的形式,并保存。。。

label = {
    (0,0,0):'无兴趣-低价值-沉默',
    (1,0,0):'有兴趣-低价值-沉默',
    (1,0,1):'有兴趣-低价值-活跃',
    (0,0,1):'无兴趣-低价值-活跃',
    (0,1,0):'无兴趣-高价值-沉默',
    (1,1,0):'有兴趣-高价值-沉默',
    (1,1,1):'有兴趣-高价值-活跃',
    (0,1,1):'无兴趣-高价值-活跃'
}

analysis['label'] = analysis[['interest','value','time']].apply(lambda x: label[(x[0],x[1],x[2])], axis = 1)
analysis.head()
# DataFrame.to_csv()

 

一个简单的小案例,通过数据对客户进行画像然后针对不同标签的客户进行不同的有效的营销。是否感受到了数据科学的魅力-……-。

 

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值