如何利用python实现TURF分析?

news2025/1/18 10:44:47

1.TRUF分析简介

TURF分析(Total Unduplicated Reach and Frequency)是累计净到达率和频次分析的简称。最初被应用于媒介研究领域。典型应用场景是,在既定条件下,例如预算等资源限制或就当前实施的媒体组合投放计划,哪些渠道组合能让广告投放达到最高的到达率。

  • T 总计
  • U 不重复,删除重复的样本
  • R 到达率,计算不重复的样本
  • F 频次,计算各样本的重要性

2.TURF分析使用范围

2.1 可以应用的场景

1、什么样的广告投放组合,可以触达最大用户人群?
2、产品应该投放到哪些渠道才能最大范围覆盖潜在消费者?
3、产品线、口味、包装的最佳组合方式是什么?
4、哪种促销活动组合能尽可能吸引最大消费群?

2.2 使用条件

1、必须是多选才有意义。
2、必须是全样本回答所有题。
3、TURF通常需要较大的样本量,推荐用配额抽样。
4、删除重复样本的前提是被访者的行为是互斥的。
5、保留的结果通常需要提前确定一一吸引最多消费者的促销组合具体包含几个促销计划。

3.python中实现TURF分析

在python中实现其实是一件比较容易的事情,但实际在处理过程中可能会遇到统计上的问题,尤其是两两组合,甚至多个组合进行统计的情况。

3.1 输入数据

输入的数据格式截图举例:
输入样例
数据的值需为0或1,不允许出现其他值;
一个用户可以多选,比如用户4会同时接触到广告1和广告3。

3.2 核心代码

核心代码主要是组合的生成,以下为对应的代码:

import itertools
cols=['广告1', '广告2', '广告3', '广告4', '广告5', '广告6']
#按照两两组合生成列表
list(itertools.combinations(cols,2))

3.3 整体代码

import itertools
import numpy as np
import pandas as pd

def TURF_tool(input_df,cols,max_cbts=10):
    '''生成TURF分析结果,input_df为标准输入的dataframe,cols为需要进行组合的列名,需要为可迭代对象;max_cbts用于控制最大的组合数量'''
    #先生成组合方式,此处生成所有组合,实际调用时通过max_cbts来控制
    combinations=[]
    for i in range(len(cols)):
        combine=list(itertools.combinations(cols,i+1))
        combinations.append(combine)
    #统计以上结果,并进行汇总
    #将对应数据选出,然后对所有列进行all处理,然后利用sum求和计算出符合条件的数量,如df.loc[:,list(combinations[1][0])].all(axis=1).sum()
    # df.loc[:,list(combinations[1][0])]
    combine_list=[]
    for i in range(max_cbts):
        print("正在计算第{}种组合\n".format(i+1))
        temp=combinations[i]
        temp_length= len(combinations[i])
        for j in range(temp_length):
            statis_dict={}
            #提取组合方式,为可迭代对象
            combine_cols=combinations[i][j]
            # 按照组合形式,进行统计结果
            #计算到达数
            count_combine=input_df.loc[:,combine_cols].any(axis=1).sum()
            #计算频数,即累计数量
            acuum_combine=input_df.loc[:,combine_cols].sum().sum()
            statis_dict['组合']=combine_cols
            statis_dict['组合数']= i+1
            statis_dict['到达数']=count_combine
            statis_dict['频数']=acuum_combine
            combine_list.append(statis_dict)
    combine_result=pd.DataFrame(combine_list)
    #得出总数
#     combine_result['总数']=input_df.loc[:,cols].any(axis=1).sum()
    combine_result['总数']=len(input_df)
    #计算到达率
    combine_result['到达率']=combine_result['到达数']/combine_result['总数']
    #计算频率
    combine_result['频率']=combine_result['频数']/combine_result['频数'].max()
    #进行排序
    combine_result=combine_result.sort_values('到达率',ascending=False)
    return combine_result

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/443316.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【三十天精通Vue 3】第十二天 Vue 3 过滤器详解

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3 文章目录 引言一、Vue 3 过滤器概述1.1 过滤器的简介1.2 过滤器的作用1.3 过…

WEB通用漏洞水平垂直越权详解业务逻辑访问控制脆弱验证

目录 一、知识点概述 <分类> <原理简述> 二、水平越权示例——检测数据比对弱 <越权演示> <如何防护> 三、垂直越权示例——权限操作无验证 <越权演示> <漏洞成因> 四、访问控制示例——代码未引用验证 <越权演示> 五、脆…

如何才能写出一个符合预期的正则?

如何才能写出一个符合预期的正则&#xff1f; 正则表达式入门示例讲解1、java里正则表达式replaceAll连续的字符正则测试题主问题讲解 2、开发者遇到金额的校验正则描述正则测试 3、java正则表达式匹配字符串正则描述正则测试 4、关于#正则表达式#的问题&#xff0c;如何解决&a…

0基础自学软件测试 用这个方法 99%的人都成功了

对于大多数0基础的小白而言&#xff0c;刚开始学软件测试&#xff0c;肯定会遇到各种各样的难题&#xff0c;有时候问题多了&#xff0c;扛不住了&#xff0c;导致最后无法坚持&#xff0c;或者学的很杂&#xff0c;学而不精。 那么有哪些比较有效的方法和技巧&#xff0c;可以…

系统分析师之数据库系统(七)

目录 一、数据库概念 1.1 数据库管理系统DBMS 1.2 数据库系统DBS 二、数据库设计 2.1 数据库设计过程 2.2 E-R模型 2.3 关系代数 2.4 规范化理论 2.4.1 价值与用途 2.4.2 函数依赖 2.4.3 键 2.4.4 范式 2.4.5 无损分解 三、并发控制 3.1 基本概念 3.2 问题示例…

SCA技术进阶系列(二):代码同源检测技术在供应链安全治理中的应用

一、直击痛点&#xff1a;为什么需要同源检测 随着“数字中国”建设的不断提速&#xff0c;企业在数字化转型的创新实践中不断加大对开源技术的应用&#xff0c;引入开源组件完成应用需求开发已经成为了大多数研发工程师开发软件代码的主要手段。随之而来的一个痛点问题是&…

开启数字化之旅:VR全景视频带你进入真实而神奇的世界

引言&#xff1a;随着科技的不断发展&#xff0c;虚拟现实技术正在成为越来越多人所追捧和体验的技术。而VR全景视频作为虚拟现实技术的一种重要应用&#xff0c;也得到了越来越多人的关注。那么&#xff0c;VR全景视频到底是什么&#xff1f;它的优势和特点是什么&#xff1f;…

OpenGL入门教程之 变化颜色的三角形

一、 知识点 &#xff08;1&#xff09;着色器 着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说&#xff0c;着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序&#xff0c;因为它们之间不能相互通…

153. 寻找旋转排序数组中的最小值

已知一个长度为 n 的数组&#xff0c;预先按照升序排列&#xff0c;经由 1 到 n 次 旋转 后&#xff0c;得到输入数组。例如&#xff0c;原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到&#xff1a; 若旋转 4 次&#xff0c;则可以得到 [4,5,6,7,0,1,2] 若旋转 7 次&#xff0…

【刷题】搜索——BFS:字串变换【双向广搜模板】

双向广搜是BFS的一种优化方式&#xff0c;就是起点和终点同时往中间搜索。 假设每搜一步&#xff0c;都会有6种新的状态进入队列&#xff0c;搜索10步才能得到答案&#xff0c;总状态数是 1 6 6 2 6 3 . . . 6 9 166^26^3...6^9 166263...69。 但是假如已知终点的状态&am…

Crash分析gpu非法访问地址问题

Crash分析gpu非法访问地址问题 1. 问题描述 在我司产品monkey老化过程中&#xff0c;极低概率出现gpu驱动访问非法地址导致kernel panic问题&#xff0c;在kernel panic后&#xff0c;主动触发ramdump机制&#xff0c;抓到相关的ramdump文件&#xff0c;利用crash工具进行离线…

ggrcs包2.9版本发布----增加了绘制单独rcs曲线(限制立方样条)的singlercs函数

目前本人写的ggrcs包新的2.8版本已经在CRAN上线&#xff0c;目前支持逻辑回归&#xff08;logistic回归&#xff09;、cox回归和多元线性回归。增加了绘制单独rcs曲线&#xff08;限制立方样条&#xff09;的singlercs函数。 需要的可以使用代码安装 install.packages("…

UE4/5多人游戏详解(五、创建多人游戏插件)

目录 创建插件&#xff1a; 功能制作&#xff1a; 基础构造&#xff1a; 代码&#xff1a; 准备&#xff1a; 代码&#xff1a; 之前4个内容&#xff0c;我简单的讲解了一个项目中如何加入多人会话。 现在我们做一个插件&#xff0c;这样就不需要每一次创建项目的时候就…

CT前瞻(二):Vant4实战之Card卡片与Cell单元格

文章目录 &#x1f4cb;前言&#x1f3af;关于 Card卡片 和 Cell单元格 组件&#x1f9e9;Cell单元格&#x1f9e9;Card卡片 &#x1f3af;实战代码&#x1f4dd;最后 &#x1f4cb;前言 最近在项目开发和学习的过程中&#xff0c;涉及到了Vant UI&#xff08;简称Vant&#x…

气传导耳机和骨传导耳机的区别是啥?气传导耳机有哪些优缺点?

本文主要讲解一下气传导耳机和骨传导耳机的区别、气传导耳机的优缺点&#xff0c;并推荐一些目前主流的气传导耳机款式&#xff0c;大家可以根据自身需求&#xff0c;选择自己感兴趣的部分观看。 气传导耳机和骨传导耳机不同点&#xff1a; 气传导耳机和骨传导耳机最大且最根…

HTML+CSS+JS 学习笔记(二)———CSS

&#x1f331;博客主页&#xff1a;大寄一场. &#x1f331;系列专栏&#xff1a;前端 &#x1f331;往期回顾&#xff1a;HTMLCSSJS 学习笔记&#xff08;一&#xff09;———HTML(上) HTMLCSSJS 学习笔记&#xff08;一&#xff09;———HTML(中) HTMLCSSJS 学习笔记&#…

数字信号预处理——平滑和去噪

数字信号预处理 对信号进行去噪、平滑和去趋势处理&#xff0c;为进一步分析做好准备。从数据中去除噪声、离群值和乱真内容。增强信号以对其可视化并发现模式。更改信号的采样率&#xff0c;或者使不规则采样信号或带缺失数据信号的采样率趋于恒定。为仿真和算法测试生成脉冲…

看完这篇文章你就彻底懂啦{保姆级讲解}-----(LeetCode刷题59螺旋矩阵II) 2023.4.20

目录 前言算法题&#xff08;LeetCode刷题59螺旋矩阵II&#xff09;—&#xff08;保姆级别讲解&#xff09;分析题目&#xff1a;算法思想&#xff08;重要&#xff09;螺旋矩阵II代码&#xff1a; 结束语 前言 本文章一部分内容参考于《代码随想录》----如有侵权请联系作者删…

英码科技深元ai工作站在化工园区应用,保障安全生产

当今&#xff0c;随着工业化进程的不断推进&#xff0c;化工产业作为重要的基础产业之一&#xff0c;为社会经济发展做出了巨大贡献。然而&#xff0c;随着化工园区规模的不断扩大&#xff0c;化工园区内的安全问题和环境问题也日益突出。因此&#xff0c;如何通过科技手段提升…

网络安全文章汇总导航(持续更新)

网络安全文章汇总导航&#xff08;持续更新&#xff09; 1. 介绍1.1. 初衷1.2. 更新时段1.3.最近更新时间及内容 2. 文章列表2.1. 基础篇2.2. 工具篇2.3. 靶场安装篇2.4. 权限提升篇2.5. 漏洞复现篇2.6. 加固与排查篇2.7. APP渗透篇2.8. 其它基础篇 1. 介绍 本章主要将博客中的…