删除无点击数据offer数据分析使用
梳理思路:
1、 获取 7month 和 8month fullreport 报表中 所有offer;输出结果:offerid, totalClickCount;
2、 分析数据7month totalClickCount=0 and 8month totalClickCount=0 的offer去除;
result.loc[(result['totalClickCount_7'] >0)| (result['totalClickCount_8'] > 0)] 获取有效的offer数据data2;
3、 获取点击系统自动跑量列表中offer数据data3,输出结果:offerid,dataSourceid;
4、 分析数据 根据data2有效offer,获取到有效的offer对应的每个dataSourceid;
result = pd.merge(data1, data2, on='offerId', how='left')
5、 计算出删除后,dataSourceid应该保留的个数及id;
6、 计算出删除offer的个数及offer_id;
操作方法:
一、 获取 7month 和 8month fullreport 报表中 所有offer;
class getFullreportOffer_8month
class getFullreportOffer_7month
class getFullreportOffer_8month:def _process(self,page):offer_lit = []totalClickCount_lit = []fromDate = "2023-08-01"toDate = "2023-08-31"url = "···?page="+str(page)+"&pageSize=100&fromDate="+ fromDate +"&toDate="+ toDate +"&fromHour=00&toHour=23&timezone=%2B00:00&affiliateIds=&sourceIds=&sorting=rejectionTotal&sortType=desc&ruleIds=&businessTypes=&accountTypes=&columns=offer_id"res = (requests.get(url=url, headers=header, verify=False).json())['result']['dataList']for result in res:offer_lit.append(result['offerId'])totalClickCount_lit.append(result['totalClickCount'])return offer_lit,totalClickCount_litdef _process_multithread(self,list_):# 多线程 下载task_list = [thread_pool_executor.submit(self._process,(page)) for page in list_]response_list = [task.result() for task in task_list]return response_listdef run(self):offer_lit_total = []totalClickCount_lit = []lit = np.arange(1,33)offer_lit = self._process_multithread(lit)for res in offer_lit:offer_lit_total.extend(res[0])totalClickCount_lit.extend(res[1])lis_dic = {'offerId': offer_lit_total,'totalClickCount8': totalClickCount_lit,}result = pd.DataFrame(lis_dic)result.to_csv(filename8,index=False)
class getFullreportOffer_7month:def _process(self,page):offer_lit = []totalClickCount_lit = []fromDate = "2023-07-01"toDate = "2023-07-31"url = "···?page="+str(page)+"&pageSize=100&fromDate="+ fromDate +"&toDate="+ toDate +"&fromHour=00&toHour=23&timezone=%2B00:00&affiliateIds=&sourceIds=&sorting=rejectionTotal&sortType=desc&ruleIds=&businessTypes=&accountTypes=&columns=offer_id"res = (requests.get(url=url, headers=header, verify=False).json())['result']['dataList']for result in res:offer_lit.append(result['offerId'])totalClickCount_lit.append(result['totalClickCount'])return offer_lit,totalClickCount_litdef _process_multithread(self,list_):# 多线程 下载task_list = [thread_pool_executor.submit(self._process,(page)) for page in list_]response_list = [task.result() for task in task_list]return response_listdef run(self):offer_lit_total = []totalClickCount_lit = []lit = np.arange(1,34)offer_lit = self._process_multithread(lit)for res in offer_lit:offer_lit_total.extend(res[0])totalClickCount_lit.extend(res[1])lis_dic = {'offerId': offer_lit_total,'totalClickCount7': totalClickCount_lit,}result = pd.DataFrame(lis_dic)result.to_csv(filename7,index=False)
二、分析数据7month totalClickCount=0 and 8month totalClickCount=0 的offer去除;
result.loc[(result['totalClickCount_7'] >0)| (result['totalClickCount_8'] > 0)] 获取有效的offer数据data2;
class dataAnalysis:def get_datas(self):data7 = pd.read_csv(filename7)data8 = pd.read_csv(filename8)result = pd.merge(data7,data8, on='offerId', how='outer')result1 = result.loc[(result['totalClickCount7'] >0)| (result['totalClickCount8'] > 0)]result1.to_csv(filename, index=False)
三、获取点击系统自动跑量列表中offer数据data3,输出结果:offerid,dataSourceid;
class get_click_offer_datasourceid:def process(self,page):offer_lit = []datanumber_lit = []url = "····?pageNum="+str(page)+"&pageSize=10"res = (requests.get(url=url, headers=header, verify=False).json())['result']['records']for result in res:value_lit = []try:if result['dataSourceId'] != "-1":# print() # 实时数据包value1 = result['dataSourceId']value_lit.append(value1)if result['dataSourceIds'] != "-1":if "," in result['dataSourceIds']:# print("存在多个数据包{}".format(result['dataSourceIds']))value2 = result['dataSourceIds'].split(',')value_lit.extend(value2)else:value3 = result['dataSourceIds']value_lit.append(value3)except:value_lit.append("NaN")offer_lit.append(result['offerId'])datanumber_lit.append(value_lit)# print("offer: {}, 数据包id:{}".format(result['offerId'],value_lit))return offer_lit,datanumber_litdef process_multithread(self,list_):# 多线程 下载task_list = [thread_pool_executor.submit(self.process,(page)) for page in list_]response_list = [task.result() for task in task_list]return response_listdef run(self):offer_lit_total = []datanumber_lit_total = []lit = np.arange(1,457)offer_lit = self.process_multithread(lit)for res in offer_lit:offer_lit_total.extend(res[0])datanumber_lit_total.extend(res[1])lis_dic = {'offerId': offer_lit_total,'dataSources': datanumber_lit_total,}result = pd.DataFrame(lis_dic)result.to_csv(filenameclick,index=False)
四、分析数据 根据data2有效offer,获取到有效的offer对应的每个dataSourceid;
result = pd.merge(data1, data2, on='offerId', how='left')
class effectiveOffer:def get_datas(self):data1 = pd.read_csv(filename)data2 = pd.read_csv(filenameclick)result = pd.merge(data1, data2, on='offerId', how='left')result.to_csv(filenameoffer, index=False)
五、计算出删除后,dataSourceid应该保留的个数及id;
class offerdatasource:def get_datasource(self):datasource_id = []data = pd.read_csv(filenameoffer)data1 = data['dataSources']data2 = data1.dropna(axis=0)for res in data2.values:lst = ast.literal_eval(res)datasource_id.extend(lst)# #ll = list(set(datasource_id))print(ll)print(len(ll))
六、计算出删除offer的个数及offer_id;
class deleteOfferid:def get_delete_offerid(self):data1 = pd.read_csv(filename) # 3547data2 = pd.read_csv(filenameclick) # 4544data1_new = data1['offerId'].valuesdata2_new = data2['offerId'].values# lis02中存在,lis01中不存在d = [y for y in data2_new if y not in data1_new]print(len(d))print(d)
相关文章:
删除无点击数据offer数据分析使用
梳理思路: 1、 获取 7month 和 8month fullreport 报表中 所有offer;输出结果:offerid, totalClickCount; 2、 分析数据7month totalClickCount0 and 8month totalClickCount0 的offer去除; result.…...

【Apollo学习笔记】——规划模块TASK之SPEED_BOUNDS_PRIORI_DECIDER
文章目录 前言SPEED_BOUNDS_PRIORI_DECIDER功能简介SPEED_BOUNDS_PRIORI_DECIDER相关配置SPEED_BOUNDS_PRIORI_DECIDER流程将障碍物映射到ST图中ComputeSTBoundary(PathDecision* path_decision)ComputeSTBoundary(Obstacle* obstacle)GetOverlapBoundaryPointsComputeSTBounda…...

物理机ping不通windows server 2012
刚才尝试各种方法,在物理机上就是ping不能wmware中的windows server 2012 . 折腾了几个小时,原来是icmp 被windows server 2012 禁用了 现在使用使用以下协议就能启用Icmp协议。 netsh firewall set icmpsetting 8然后,就能正常ping 通虚…...
誉天HCIE-Datacom丨为什么选择誉天数通HCIE课程学习
大家好,我是誉天HCIE-Datacom的一名学员,在2022年觉得自己技术水平不够,想要提升自己,经朋友介绍在誉天报的名。 听朋友说誉天的阮Sir的课讲的非常好,我在B站上看了几节阮老师的课确实比之前在听得其他机构的课程讲的要…...

Python文本终端GUI框架详解
今天笔者带大家,梳理几个常见的基于文本终端的 UI 框架,一睹为快! Curses 首先出场的是 Curses。 Curses 是一个能提供基于文本终端窗口功能的动态库,它可以: 使用整个屏幕 创建和管理一个窗口 使用 8 种不同的彩色 为程序提供…...

01_lwip_raw_udp_test
1.打开UDP的调试功能 (1)设置宏定义 (2)打开UDP的调试功能 (3)修改内容,串口助手打印的日志信息自动换行 2.电脑端连接 UDP发送一帧数据 3.电路板上发送一帧数据...

学习ts(十一)本地存储与发布订阅模式
localStorage实现过期时间 目录 准备 安装 npm i rollup typescript rollup-plugin-typescript2// tsconfig.json"module": "ESNext","moduleResolution": "node", "strict": false, // rollup.config.js import …...
MySQL对NULL值处理
在使用数据库时,有时需要表示未知值,这时可以使用NULL值表示。引入NULL值后,会对原有的使用产生影响,这里记录下常见的场景,以做记录。 NULL含义 在MySQL中,NULL值表示一个未知值,表示不可知、…...

Vector 动态数组(迭代器)
C数据结构与算法 目录 本文前驱课程 1 C自学精简教程 目录(必读) 2 Vector<T> 动态数组(模板语法) 本文目标 1 熟悉迭代器设计模式; 2 实现数组的迭代器; 3 基于迭代器的容器遍历; 迭代器语法介绍 对迭…...
多组背包恰好装满方案数
链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 现在有一个大小n*1的收纳盒,我们手里有无数个大小为1*1和2*1的小方块,我们需要用这些方块填满收纳盒,请问我们有多少种不同的方法填满这个收纳盒 分析&…...

Oracle查询语句中做日期加减运算
在Oracle中,可以使用日期函数来实现日期的加减。 若想在日期上加上一定的天数,可以使用"INTERVAL"关键字。例如,如果要将一个日期加上3天,可以使用以下代码: SELECT SYSDATE INTERVAL 3 DAY FROM DUAL; …...
Unity贝塞尔曲线的落地应用-驱动飞行特效
前言 本文教你怎么用贝塞尔曲线驱动一个飞行特效 中间点的准备 开放一些可以给策划配置的变量 startPos flyEffect.transform.position; var right (GetAimPoistion(targetActor) - flyEffect.transform.position).x > 0?1:-1; midPos startPos new Vector3(righ…...
VTK——设置交互样式上的鼠标回调函数
函数介绍 VTKPointPickerInteractorStyle是一个自定义的交互样式类,它是VTK库中vtkInteractorStyleTrackballCamera类的子类。VTK(Visualization Toolkit)是一个开源的,跨平台的库,用于处理、渲染和视觉化科学数据。它…...

Flutter实现动画列表AnimateListView
由于业务需要,在打开列表时,列表项需要一个从右边飞入的动画效果,故封装一个专门可以执行动画的列表组件,可以自定义自己的动画,内置有水平滑动,缩放等简单动画。花里胡哨的动画效果由你自己来定制吧。 功…...

【LeetCode-中等题】236. 二叉树的最近公共祖先
文章目录 题目方法一:后序遍历 回溯 题目 方法一:后序遍历 回溯 解题的核心就是:采用后序遍历 讨论p,q是否在当前的root的两边,如在两边则返回当前节点root 如何不在两边,只要出现一个节点等于p或者q就…...

如何拼接两个视频在一起?
如何拼接两个视频在一起?在度过一个美好周末的时候,我和朋友一起拍摄了两组视频,准备将两个视频合并成一个并发布到朋友圈。这个想法非常棒,但是我在第一步就遇到了麻烦:如何将这两个视频拼接在一起?这听起…...
Programming abstractions in C阅读笔记:p130-p131
《Programming Abstractions In C》学习第52天,p130-p131,总结如下: 一、技术总结 1. pig latin game 通过pig latin game掌握字符复制,指针遍历等操作。 /** 输入:字符串,这里采用书中坐着自定义的get…...

如何在Windows本地快速搭建SFTP文件服务器,并通过端口映射实现公网远程访问
文章目录 1. 搭建SFTP服务器1.1 下载 freesshd服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端࿰…...

C#---第二十:不同类型方法的执行顺序(new / virtual / common / override)
本文介绍不同类型的方法,在代码中的执行顺序问题: 构造方法普通方法(暂用common代替)、虚方法(Virtual修饰)、New方法(new修饰)三个优先级相同overide方法(会替换virtual…...

lnmp架构-PHP
08 PHP源码编译 09 php初始化配置 nginx 的并发能力强 phpinfo函数 就是 显示php信息 10 php的功能模块 编译memcache模块 php的动态模块方式 mamcache 就是内存 直接从内存中命中 所以性能非常好 但是 这还不是最好的方式 工作流程 关键看后端的 php 什么时候处理完 mamcac…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...

解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...