50岁学python合适吗_广告分析(1)

因为原分析是用jupyter notebook做的,不知道怎么直接搬运到简书上来,因此暂时采用截图方式,后续若有好的方式再改进。

背景:广告投放数据分析,由于组内接入号码卡的投放业务,因此需要尽早找出能够上量的定向,产生少数能跑起量的广告,以便给人工运营减少工作量;提高起量效率。

同时,该广告分析过程其实并不仅限于广告分析,其他的分析思路其实差别不会特别大。

import pandas as pd

import numpy as np

import matplotlib as plt

df=pd.read_excel("../excel_output/telecom_data/广告数据.xlsx")

df

496d660d316e

image.png

df.columns

#看一眼表头分别都有什么

#注:除了部分列例如id、花费、曝光等,这当中的大多数列,都是从一个整合列抽取出来的,例如{"brand": {"brand_img": "53664323", "brand_name": "中国移动"}, "description": "5GB特惠流量包赶紧办理", "image": "54689487", "title": "5GB大流量包,移动过分了"}

#因此列里面我已经提前处理了空值,各位可以根据自己的业务去判断空值的填充,提示用fillna喔~

#1、广告投放的业务中有些因素确实是不存在的,为了方便整理数据,因此我填充为“空”,因为填充为0会有意义,代表我选取了这个选项,以此区分开,或者可以填充为None或者Null

#2、填充为0,填充为0就代表着这个数据是不存在的,所以可以直接填充空值为0

#3、填充为上值、下值或平均值,当你观察了数据后发现数据按照一定规律,那么可以填充为这个格子上面的值,或者上下值的平均值等等,遵从数据的规律

496d660d316e

image.png

df.describe()

496d660d316e

image.png

#观察上述数据,重点观察数据的分布,即四分位的数值比较,看分布广不广,受极值点的影响大不大,分析时需不需要去掉极值点

#看我的这份数据 排除id的字段 这是数据库自增或者是广点通返回的id

#花费cost、曝光量impression、点击量click、填单intonum的分布都非常散,也就是说拔尖的几个广告才能上量,而其他的广告一般都直接沉寂下去了

#这是几个账号一起的数据,如果账号投放的产品类型不一样,那么可以分不同的产品类型分别查看 我这个都是号卡的

product=np.unique(df['api_sdk'])#这里有11个账号

product

496d660d316e

image.png

for i in product:

print(df[df['api_sdk']==i])#取出每部分的数据,分别做分析就好啦,我这里需要合起来计算,就不分开了

#这一步可以选取自己需要的列,不是每列都需要的,这里我包括id都比较需要,所以只删掉一列汇总列

df=df.drop('adcreative_elements',axis=1)

#let's see.

pd.set_option('display.max_columns', None)

df.sort_values('cost',ascending=False)[:10]

496d660d316e

image.png

#关于广告的分析 要么直接去复制极值的这条广告的所有因素,然后将这条广告的某一因素进行突变,看是不是能出现另外一个奇迹

#或者看看达到标准的数据中,有什么规律

#可以看出在几千条数据中,花费上万的广告就一条,那么怎么去复制呢?我第一个想法是拉长时间节点,看有没有出现多一点的数据达到上万的量级

#或者降低你的及格线,很有可能你的账号的质量就是不好,很可能真的达不到这个及格线,那么我放到上千的花费呢?总能多几条

#ps:每个媒体的广告投放排名算法都不相同,但是你在投放的时候可以找到一些“经验”,即你会发现已经跑起来的账户会更加容易跑起来啦;

#预算设置大一点消耗得快一点;账户“养"起来会更容易投放些等等,虽然不能完整地找到媒体的排名公式,但是可以依据他们放出的这些方向和自己的经验

#去找出能起量的原因,也有一点”玄学“,即同样的广告、同样的账户就是有一个跑的起来一个跑不起来

#第一种 极值点 我们的做法是突变其中的因素 也是运营常用的手法 复制广告计划再测试新的计划 这个比较简单 因为通常上量的广告真的不多

#只要控制变量法测试即可 这里不展开讲了

#第二种 除去极值外的众多广告 例如花费多、但是也还是有填单的广告表现如何?去寻找有潜力的广告。

df[(df['cost']>=30)|(df['intonum']>0)].reset_index(drop=True)

496d660d316e

image.png

#接下来每个因素看一遍透视表 需要的话直接画图也可以

#let's do it

col=['cost', 'intonum', 'ad_id', 'impression', 'click']

col_rename={'impression': sum, 'click': sum, 'intonum': sum, 'cost': sum,'ad_id': 'count'}

#透视表动作基本差不多,封装起来简便一点

def pivot(column,data):

data = pd.pivot_table(data, index=[ column],

values=col,

aggfunc=col_rename)

data = data.replace([np.inf, -np.inf], "")

return data

def dataAddCol(data):#增加ctr cpc cpa几列

# data=self.data

data['CTR']= (data['click'] / data['impression']).apply(lambda x: format(x, '.2%')).replace([np.inf, -np.inf,np.nan,-np.nan], 0)

data['CVR'] = (data['intonum'] / data['click']).apply(lambda x: format(x, '.2%')).replace([np.inf, -np.inf,np.nan,-np.nan],0)

data['CPC'] = (data['cost'] / data['click']).apply(lambda x: round(x, 2)).replace([np.inf, -np.inf,np.nan,-np.nan], 0)

data['CPA'] = (data['cost'] / data['intonum']).apply(lambda x: round(x, 2)).replace([np.inf, -np.inf,np.nan,-np.nan], 0)

data['平均每计划曝光'] = (data['impression'] / data['ad_id']).apply(lambda x: round(x, 0)).replace([np.inf, -np.inf,np.nan,-np.nan], 0)

data=data.rename(columns={'cost':'花费','impression':'曝光量','click':'点击量','intonum':'填单', 'ad_id':'广告数'})

data = data.loc[:, ['花费', '曝光量', '点击量', '填单', 'CTR', 'CVR', 'CPC', 'CPA', '广告数', '平均每计划曝光']]

# data = data.sort_values(by=['填单'], ascending=False)

return data

#1st step 年龄

age_data = pivot('age_range',df)

age_data = dataAddCol(age_data)

age_data

496d660d316e

image.png

#1、产品分析的年龄大范围

#对产品进行简单的产品分析,如号码卡的目标用户是偏年轻化的,锁定人群最好就60岁以下,并且可以恰当地加入低龄的用户。

#如果是信用卡的新户,那么就必须大于18岁,且多数大学生申请信用卡是不通过的,所以最好是大于22岁的年龄设定

#2、聚焦部分年龄段

#可以看出投放的最多的还是18-50岁、14-47岁和无定向,因为流量卡很多时候都小年轻在买,所以最好不把年龄限定得很严苛,

#如果把条件设置的过严苛可能会导致流量骤降,就是你也找不到人看你的广告了,在投放广告可以体会到这一个现象

#3、年龄的分层测试,聚焦部分年龄段,得出基础年龄定向

#不同年龄段的着重点不同,年龄定向还配合着其他的定向,因此很多时候会个别年龄段的效果更好,这个就需要进行A/B test去进行测试分析,最后收窄定向

#该分析过程适用于大多数的广告启动过程,从大致的定向->聚焦部分年龄段->年龄分层测试->收窄定向

site_set = pivot('site_set',df)

site_set = dataAddCol(site_set)

site_set.sort_values("CPA")

#多广告位投放实际并不知道广告实际展示在哪个广告位上,因此不作拆分

#对CPA进行了排序,单一个广告位或者自动推荐的花费都很少,并且平均每计划曝光都较低 从而可以看出效果较好的是腾讯视频、腾讯新闻的两个广告位

#多广告位一起投放的曝光较大,可以作为一个流量补充

#此处省略对其他因素的透视表分析,对其他因素全部做一遍透视分析,对影响账户的量级、CPA的因素有简单了解

#例如这个分析最后得出的第一阶段的广告收敛结果是:

#投放的年龄放开限制,可选14-60岁,也可以选无年龄定向;优质广告位是腾讯视频,那么意味着要多准备视频广告素材;

#广告的出价范围在15-25元之间;广告策略选优先曝光或者优先转化;计费方式选择按CPM收费....

#如此,就得到本阶段的优化广告建议

总结:

1、熟悉数据,查看列名,数据的表示意义,数据的分布

2、关于数据的意义以及数据的空值处理、异常值的处理

3、透视分析,得出第一阶段的建议

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值