zoukankan      html  css  js  c++  java
  • 广告投放数据分析

    1 提出问题:如何实现广告的精准投放

      实现广告的精准投放就是最大化投入产出的过程,需要知道我们的用户在哪里,在哪些渠道能够更大化用户价值,以及各个渠道用户价值的变化规律。通过对渠道方式和渠道质量的追踪,以引流和转化率为关键事件,做好渠道的优化和维护。

      本文通过研究阿里天池数据,仅从渠道,投放时间,投放人群,以点击率为数据指标进行数据分析,从而给出更好的方案和建议,实现高效率高产出。

    2 数据来源

    2.1 数据源

     Ali_Display_Ad_Click是阿里巴巴提供的一个淘宝展示广告点击率预估数据集。

      https://tianchi.aliyun.com/dataset/dataDetail?dataId=56&lang=zh-cn

     2.2 数据理解

     数据集不存在投入产出字段,命题转化为以浏览量、点击率作为数据指标,进行数据分析。

    3 分析思路

    4 导入数据

    #导入所需要的库
    %matplotlib inline
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import seaborn as sns
    # from dateutil.parser import parse
    import datetime as dt
    plt.rcParams["font.sans-serif"]='SimHei'   #解决中文乱码
    plt.rcParams['axes.unicode_minus'] = False   #解决负号无法
    
    #读取文件,加载数据
    df1 = pd.read_csv(r"E:Data analysisdata	ianchiAD datauser_profile.csv",encoding = "gbk")
    df2 = pd.read_csv(r"E:Data analysisdata	ianchiAD data
    aw_sample.csv",encoding = "gbk")
    df3 = pd.read_csv(r"E:Data analysisdata	ianchiAD dataad_feature.csv",encoding = "gbk")

      4.1 计算各个广告的点击次数

    由于数据量巨大,宕机时间长,选择部分数据分析,以下计算各个广告的点击次数。

     4.2 选择子集

    筛选广告点击凑数最多的710164作为新的数据集建表

     

     

    5 数据分析

    5.1 分析不同渠道点击率

    group1 = df.groupby("pid").agg({"clk":"sum","pid":"count"})
    rate = (group1["clk"]/group1["pid"]).apply(lambda x: format(x, '.2%'))
    group1

     

     

     由于渠道有限,仅从2个渠道源分析来看,430548_1007需要继续维护渠道,提高转化率,430548_1007需要加大渠道投入,做好引流。

    5.2 分析不同投放时间点击率

    5.2.1 每日各时间段点击率分析

    # 时间处理, 注意: unix时间戳,转北京时间(差8个钟)
    df["time"]=pd.to_datetime(df['time_stamp'],unit="s",utc=True)+dt.timedelta(hours=8)#.tz_convert("Asia/Shanghai")
    # 取日期,并新增列
    df["date"] = df["time"].dt.normalize()
    # 取hour,并新增列
    df['hour'] = [dt.datetime.strftime(x,'%H') for x in df['time']]
    # 每日各时间段点击率分析
    group2 = df.groupby("hour").agg({"pid":"count","clk":"sum"})
    xdata_1 = group2.index
    ydata_1 = group2["pid"]
    rate_1 = (group2["clk"]/group2["pid"])
    # 绘双坐标图
    fig,ax=plt.subplots()
    ax.bar(xdata_1,ydata_1)
    ax.set_ylabel('浏览量', color='b')
    ax.tick_params('y', colors='b')
    ax1 =ax.twinx()
    ax1.set_ylim([0,0.14])
    ax1.plot(xdata_1,rate_1,"r")
    ax.set_xlabel('小时')
    ax1.set_ylabel('点击率', color='r')
    ax1.tick_params('y', colors='r')
    fig.tight_layout()
    plt.show()

    a. 在浏览量达到一定数据时,每日的上午10点、下午3点的点击率出现了小高峰。

    b. 晚上由9点开始浏览量主键提升,但点击率相对于前段时间较低,说明多数用户是目的性流量走低。

    c. 深夜0-2点点击率超过12%,推测原因,可能是浏览量较低,偶然性提升,也可能是这部分人群的目的性较强,如果能获知这些人群画像,能高效的做好营销转化。

    说明,目标客户在深夜转化的可能性更高。

    5.2.2 每周各天点击率分析

    df["dayofweek"] = df["date"].dt.dayofweek
    group3 = df.groupby("dayofweek").agg({"pid":"count","clk":"sum"})
    # 绘双坐标图
    fig,ax=plt.subplots()
    ax.bar(group3.index,group3["pid"])
    ax.set_ylabel('浏览量', color='b')
    ax.tick_params('y', colors='b')
    ax1 =ax.twinx()
    ax1.set_ylim([0,0.14])
    ax1.plot(group3.index,group3["clk"]/group3["pid"],"r")
    ax.set_xlabel('星期')
    ax1.set_ylabel('点击率', color='r')
    ax1.tick_params('y', colors='r')
    fig.tight_layout()
    plt.show()

     可知,周六、日,周一点击率较高,浏览量也不低,说明这几天带来的收益是更大的。

    5.2.3 各天各时间段分析

    # 5.2.3 各天各时间段分析
    df["dayofweek"] = df["date"].dt.dayofweek
    group4 = df.groupby(["dayofweek","hour"]).agg({"pid":"count","clk":"sum"})
    group4["rate_3"] = group4["clk"]/group4["pid"]
    # 前五
    group4.sort_values(by="rate_3",ascending=False).head()

     

     5.3 分析人群特征点击率

    5.3.1 各年龄层次人群点击率分析

    # 5.3 分析人群特征点击率
    # 5.3.1 各年龄层次人群点击率分析
    group5 = df.groupby("age_level").agg({"pid":"count","clk":"sum"})
    # 绘双坐标图
    fig,ax=plt.subplots()
    ax.bar(group5.index,group5["pid"])
    ax.set_ylabel('浏览量', color='b')
    ax.tick_params('y', colors='b')
    ax1 =ax.twinx()
    ax1.set_ylim([0,0.14])
    ax1.plot(group5.index,group5["clk"]/group5["pid"],"r")
    ax.set_xlabel('年龄层')
    ax1.set_ylabel('点击率', color='r')
    ax1.tick_params('y', colors='r')
    fig.tight_layout()
    plt.show()

     a. 广告投放在1/2/5年龄层带来的点击率更高,需要从时间维度考虑,增大广告投入对这三个年龄层的效果。

    b. 对与年龄层6,可以从时间维度考虑增大样本投入后会不会有更大的点击率,从而判定是否需要更多的投入。

    c. 对比年龄层1/5和3,说明可以放弃对年龄层3的投入,最好增加时间维度和投入资源维度。

    d. 年龄层0需要投入更多的资源,观察效果后判定舍去与否。

    5.3.2 各个消费等级人群点击率分析

    # 5.3.2 各个消费等级人群点击率分析
    group6 = df.groupby("pvalue_level").agg({"pid":"count","clk":"sum"})
    # 绘双坐标图
    fig,ax=plt.subplots()
    ax.bar(group6.index,group6["pid"])
    ax.set_ylabel('浏览量', color='b')
    ax.tick_params('y', colors='b')
    ax1 =ax.twinx()
    ax1.set_ylim([0,0.14])
    ax1.plot(group6.index,group6["clk"]/group6["pid"],"r")
    ax.set_xlabel('消费等级')
    ax1.set_ylabel('点击率', color='r')
    ax1.tick_params('y', colors='r')
    fig.tight_layout()
    plt.show()

      高档人群点击率偏低仅有7.13%,原因可能是产品的客单价是109,不符合这类人群的需求。

    5.3.3 各购物深度人群点击率分析

    # 5.3.3 各购物深度人群点击率分析
    group7 = df.groupby("shopping_level").agg({"pid":"count","clk":"sum"})
    # 绘双坐标图
    fig,ax=plt.subplots()
    ax.bar(group7.index,group7["pid"])
    ax.set_ylabel('浏览量', color='b')
    ax.tick_params('y', colors='b')
    ax1 =ax.twinx()
    ax1.set_ylim([0,0.14])
    ax1.plot(group7.index,group7["clk"]/group7["pid"],"r")
    ax.set_xlabel("购物深度")
    ax1.set_ylabel('点击率', color='r')
    ax1.tick_params('y', colors='r')
    fig.tight_layout()
    plt.show()

    中、深度用户点击率略高,如果逐步转化至付费阶段,相比于浅度用户,中、深度用户后续付费根能行会更大。

    5.3.4 各职业(是否大学生)人群点击率分析

    # 5.3.4 各职业(是否大学生)人群点击率分析
    group8 = df.groupby("occupation").agg({"pid":"count","clk":"sum"})
    # 绘双坐标图
    fig,ax=plt.subplots()
    ax.bar(group8.index,group8["pid"])
    ax.set_ylabel('浏览量', color='b')
    ax.tick_params('y', colors='b')
    ax1 =ax.twinx()
    ax1.set_ylim([0,0.14])
    ax1.plot(group8.index,group8["clk"]/group8["pid"],"r")
    ax.set_xlabel("是否大学生群体(1-是,0-非)")
    ax1.set_ylabel('点击率', color='r')
    ax1.tick_params('y', colors='r')
    fig.tight_layout()
    plt.show()

    大学生的点击率略高,但总体区分度不大,说明样本用户群体对710164敏感度差异性不大,可能是价格109属于平价款的原因。

    6 结论和建议

    6.1 渠道分析

    只有2个渠道,区分度不大,从引流和转化的角度看,430548_1007需要继续维护渠道,提高转化率,430548_1007需要加大渠道投入,做好引流。

    6.2 投放时间分析

    加大对深夜0-2点时间段广告投放,周六、日和周一,投放效果更好。

    6.3 人群分析

    (1)加大对年龄层1/2/5年龄层投放效果,建议减少对高档人群的投放,加大对中深度用户投放,加大对城市等级2/4投放,广告对职业不敏感,建议取消这部分投入

    (2)多维度下其他特征,可以结合时间维度,多做测试,然后取舍。

  • 相关阅读:
    MySQL数据库的安装与配置
    java中的反射机制
    详谈设计模式之单列模式
    servlet内部转发与重定向
    servlet基础语句总结
    Servlet映射的俩种方法以及优缺点
    eclipse和idea的快捷键比较及idea如何调节eclipse的快捷键
    servlet
    JDK下载与安装教程
    正则表达式查询
  • 原文地址:https://www.cnblogs.com/liuyuanq/p/11678610.html
Copyright © 2011-2022 走看看