删除无点击数据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…...
告别随机色!YOLOv7检测框颜色固定与高级样式自定义全攻略(从PIL到OpenCV)
YOLOv7检测框样式深度定制:从颜色固化到多语言字体支持实战 在计算机视觉项目的实际部署中,检测框的可视化效果往往直接影响最终用户体验。YOLOv7作为当前主流的目标检测框架,其默认的随机颜色分配和有限的字体支持可能无法满足专业场景需求。…...
攻克模电难点(一):多级放大电路与差动放大电路实战解析
1. 多级放大电路的设计基础 第一次接触多级放大电路时,我被各种耦合方式绕得头晕。直到在实验室烧坏几个三极管后,才真正理解其中的门道。多级放大电路的核心思想很简单:把多个单级放大电路像搭积木一样连接起来,但实际设计时却要…...
微信聊天记录本地管理:WeChatMsg实现数据主权与记忆留存的完整方案
微信聊天记录本地管理:WeChatMsg实现数据主权与记忆留存的完整方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trend…...
UEFI开发实战指南 – 从环境搭建到国产平台适配
1. UEFI开发环境搭建全攻略 第一次接触UEFI开发时,我被各种陌生的术语搞得晕头转向。经过几个实际项目的摸爬滚打,终于摸清了门道。UEFI开发环境的搭建其实就像搭积木,只要掌握关键步骤,新手也能快速上手。 在Windows系统下搭建环…...
Qwen3.5-9B教程:Gradio队列机制+并发请求限流配置方法
Qwen3.5-9B教程:Gradio队列机制并发请求限流配置方法 1. 模型概述与环境准备 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型,具备强大的逻辑推理、代码生成和多轮对话能力。其多模态变体Qwen3.5-9B-VL支持图文输入,并能处理长达128K token…...
收藏备用!小白程序员必看:从基础到进阶,彻底吃透Prompt与提示工程
本文将从基础入门到进阶实操,全面拆解Prompt的核心知识点,涵盖概念定义、分类维度、核心要素、工作原理,以及可直接套用的实用提示工程方法。全程避开晦涩术语,用程序员易懂的表述搭配具体案例,适配刚接触大模型的小白…...
STM32C8T6+AS608指纹模块实战:从接线到代码调试的全流程避坑指南
STM32C8T6AS608指纹模块实战:从接线到代码调试的全流程避坑指南 指纹识别技术正逐渐渗透到日常生活的各个角落,从手机解锁到门禁系统,这项技术为我们提供了便捷与安全的双重保障。对于嵌入式开发者而言,将指纹识别功能整合到自己的…...
家长选择赶考状元AI学伴的五大理由:解锁学习新体验与核心好处
在AI技术蓬勃发展的今天,教育领域正经历一场深刻的变革。赶考状元AI学伴作为创新教育模式的代表,为孩子们带来了前所未有的学习新体验。越来越多的家长开始关注并选择这一系统,其背后的理由和好处值得深入探讨。本文将从行业角度,…...
GLM-4.1V-9B-Base效果展示:低光照/模糊图像中的主体鲁棒识别实例
GLM-4.1V-9B-Base效果展示:低光照/模糊图像中的主体鲁棒识别实例 1. 模型能力概览 GLM-4.1V-9B-Base是智谱开源的视觉多模态理解模型,专为复杂视觉场景设计。这个模型最令人印象深刻的能力之一,就是在低光照、模糊等恶劣图像条件下依然能准…...
挑战复杂功能,让快马AI成为你微信小程序开发的智能编程搭档
最近在开发一个微信小程序时,遇到了一个比较复杂的自定义组件需求:一个可以左右滑动切换日期、并显示对应日程的周视图日历。这个功能看似简单,但实际开发中涉及到日期计算、滑动事件处理、数据绑定等多个难点。好在发现了InsCode(快马)平台&…...
