天道酬勤,学无止境

excel对比两边数据去重

需求:筛选重复数据,A列是1000条数据,C列是100条数据,删除重复的数据,只剩900条。

首先,A列数据要分列,因为数据格式不一样,会导致后面的问题,一直下一步到完成

第二步,在B和D列加数字1,相当于索引,相同的数据长度,做匹配,下图A和C的数据取反了

第三步,数据--筛选,然后过滤掉C列数据

最后复制A列的数据,已经处理好的数据,到其他页面,验证完成

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 数据分析实践入门(一):数据预处理
    作者 | CDA数据分析师 从菜市场买来的菜,总有一些是坏掉的不太好的,所以把菜买回来之后要做一遍预处理,也就是把那些坏掉的不太好的部分扔掉。现实中大部分的数据都类似于菜市场的菜品,拿到手以后会有一些不好的数据,所以都要先做一次预处理。 常见的不规则数据主要有缺失数据、重复数据、异常数据几种,在开始正式的数据分析之前,我们需要先把这些不太规整的数据处理掉,做数据预处理。 一、缺失值处理 缺失值就是由某些原因导致部分数据是空的,对于为空的这部分数据我们一般是有两种处理方式的,一种是做删除处理,即把含有缺失值的数据删除;另一种是做填充处理,即把缺失的那部分数据用某个值代替。 1、缺失值查看 对缺失值进行处理,首先要把数据中的缺失值找出来,也就是查看数据中有哪些列有缺失值。 (1)、Excel实现 在Excel中我们选中一列没有缺失值的数据,看一下这一列数据共有多少个,然后把其他列的计数与这一列进行做对比,小于这一列数据个数的就代表该列数据有缺失值,差值就是缺失个数。 下图中非缺失值列的数据计数为5,性别这一列计数为4,这就表示性别这一列是有一个缺失值的。 如果想要看整个数据表中每列数据的缺失情况,则要挨个选中数据中每一列去判断该列是否有缺失值。 如果数据不是特别多,你想看数据中具体是哪个单元格的缺失,则可以利用定位条件(按快捷键Ctrl+G可弹出对话框)查找。在定位条件对话框中选择空值
  • 利用pandas找出全部的重复值
    需求: 公司每天都会从其他的渠道获取到一些客户资料,我们会从中去掉跟我们本身的资料库对比,剔除掉重复的值,重复的资料有的是多个,并且是不同渠道的,所以要找出全部重复值。 资料库里边有10w条数据左右,使用excel匹配运算太慢,故使用pandas处理重复值。 import pandas as pd def loadorders(): #加载导入汇总表 print("正在加载《导入汇总表.xlsx》") inputable = pd.read_excel(r"C:\Users\Administrator\Desktop\导入汇总表.xlsx") orders = inputable.drop(["客户地址","分配的客服(登陆账号)","客户编号 "],axis = 1) print("加载《导入汇总表》成功") return orders def loaddatas(): #加载电商资料 ec_datas = pd.read_excel(r"C:\Users\Administrator\Desktop\电商资料.xlsx") channel = input("请输入渠道名称(不区分大小写):") if channel.islower(): channel = channel.upper() channel_str = str(channel+"=") ec_datas["客户姓名"
  • 案例 | 极光百万级日查询量的应用选型与商业升级
    近期在 Kyligence 举办的线上直播分享中,我们邀请到了企业客户极光的李孚煜老师为大家带来 Kylin 在极光的应用以及后期从开源版 Kylin 迁移到商业版 Kyligence 的实践历程,错过现场Live 的同学可以从本文了解极光在大数据场景下的 OLAP 选型考量,以及从开源 Kylin 到企业版 Kyligence 的不停机平滑升级方案。 极光作为国内领先的开发者服务提供商主要提供两部分服务,首先是一些 SaaS 产品,主要是用于市场调查、金融风控、商业地理服务;另外就是广告业务,利用数据帮助用户做好精准营销、RTA 广告优化等业务。 Kylin 在极光业务中的应用 综合来说,Kylin 在以下常见的一些应用场景中为极光提供了 MOLAP 能力,即多维分析能力。 从业务视角来看,Kylin 主要为极光统计、认证、推送、魔链,以及iAPP前端业务做好后台的数据分析,通过这些服务能够让极光的用户快速分析用户来源,提升使用粘性;也能让用户在使用过程中通过简明的数据报表,丰富的统计维度为决策提供数据支撑。 从下游分析来看,Kylin 支撑了 CRM 系统、广告指标、以及 Portal/iPortal 三个主要版块,帮助业务人员查看各平台的统计数据,以及快速获知在广告投放中的曝光量、点击量、点击率在不同时间、渠道、投放位置等维度下的收益情况。Portal
  • excel去重函数的使用方法_excel技巧分享:不同源文件的excel去重技法汇总
    Q:我也想像那些大神一样用Excel函数来删除重复数据,你可以给我写一个公式吗? A:怎样的数据源,先截图看看。 Q:收到多个销售员发过来的客户跟进名单,由于要汇总,所以发现不同的销售员的名单有重复的客户姓名,现在需要把重复的删除。请帮我写一条函数公式,可以吗? A:excel删除重复数据,方法有很多种,不一定要用公式啊,上面的数据源用公式不是最快的方法。 Q:老师,你不会是写不来公式吧,好多人都是用函数写的公式。(⊙﹏⊙)b A:额,我真的不想给你公式,你可以用“删除重复项”命令啊! Q:算了吧,我另请人帮忙,看来你真的不会用公式。(⊙﹏⊙)b A:好尴尬的对话。我最终还是坚持我的方法,用“删除重复项”命令来秒秒钟完成。尽管下面也罗列使用函数公式来删除重复项,但我更建议根据具体数据源来确定最合适的方法。 一、菜单工具直接删除重复项 选中A列所有数据单元格区域,执行“数据——删除重复项”。 此时,Excel会提示我们发现了几个重复值,并删除。保留了多少个唯一值。 二、高级筛选功能删除重复项 高级筛选也是一个不错的方法。删除重复项是Excel2007以上版本才有的功能,在之前的低版本,我们通常会借助高级筛选来完成。 高级筛选参数设置如下,主要注意勾选“选择不重复的记录”。 三、数据透视表去重 Excel数据透视表,自身就有去重复的功能。选中A列数据,“插入——数据透视表”。
  • Hive中distinct和group by去重性能对比
    前言 操作系统:CentOS 7hadoop:2.7.7hive:2.3.0实验目的:本文主要测试在某字段各种不同值个数情况下,记录对此字段其使用DISTINCT/GROUP BY去重的查询语句执行时间,对比两者在不同场景下的去重性能实验表格: 表名记录数查询字段不同值个数DISTINCTGROUP BYtab_11000003tab_210000010000 实验过程 1)创建测试用表 drop table if exists tab_1; create table tab_1( id int, value int ) row format delimited fields terminated by '\t'; drop table if exists tab_2; create table tab_2 like tab_1; 2)加载测试数据集 测试用数据集tab_1.txt: 1 1 2 1 3 1 4 3 5 1 ... 99997 3 99998 2 99999 3 100000 2 测试用数据集tab_2.txt: 1 3715 2 7211 3 4909 4 2913 5 9839 ... 99997 2884 99998 698 99999 4839 100000 2101 分别加载数据集到对应表: load data local inpath '/tmp
  • pandas处理excel文件处理,比较繁琐,需要的可以参考一下
    import pandas as pd import numpy as np import time import re from pandas.core.frame import DataFrame import copy def new_sheet(filename): xlex = pd.ExcelFile(filename) writer = pd.ExcelWriter(filename) print('共' + str(len(xlex.sheet_names)) + '张表') print('原表读取中...') while True: try: for i in range(len(xlex.sheet_names)): all_df = pd.DataFrame(pd.read_excel(filename, xlex.sheet_names[i])) all_df.to_excel(writer, xlex.sheet_names[i], index=False) print('第' + str(i + 1) + '个表读取完毕') writer.save() writer.close() print('表格已全部读取完毕,请继续您的操作!') break except: times = 5 print('{}s后从新刷新,请关闭需要操作的excel表格'
  • 数组去重(JavaScript 为例)
    数组去重,就是在数组中查找相同的元素,保留其中一个,去除其他元素的程。 从这句话揭示了数组去重的两个关键因素: 找到重复项 去除重复项 本文告诉你在遇到去重问题时该如何思考,并以 JavaScript 为例,进行详细解释。使用 JavaScript 示例主要是因为它环境比较好找,而且直接对象 (Plain Object) 用起来很方便。 JavaScript 的环境:Node.js 或者浏览器的开发者控制台。 找到重复项 找到重复项最关键的算法是判定元素是否相同。判定相同,说起来似乎很简单 —— 用比较运算符就好了嘛!真的这么简单吗? 用 JavaScript 来举个例: const a = { v: 10 }; const b = { v: 10 }; 肉眼观察,这里的 a 和 b 相同吧?但是 JavaScript 不这么认为: console.log(a == b); // false console.log(a === b); // false 肉眼观察和程序比较使用了不同的判断方法。肉眼观察很直接的采用了字符串比对的方法,而程序压根没管是不是数据相同,只是直接判断它们是不是同一个对象的引用。我们一般会更倾向于使用符合人眼直观判断的方法,所以可能会想到使用 JSON.stringify() 把对象变成字符串来判断: console.log(JSON.stringify(a)
  • 数据分析实战——EXCEL实现复购率计算
    这是数据分析实战的第三篇(复购率计算篇),本文提供真实数据(脱敏),并梳理复购率计算思路和技巧,通过15分钟的阅读和实践,读者即可根据自己的订单数据灵活计算业务涉及到的复购率了。(实战数据在文末) 相关核心技巧:辅助列,数据透视表 ONE:什么是复购率? 对于销售尤其是快消品销售来说,不论线上还是线下,复购率这个指标都是重头戏,你说你的产品粘性很强,他说他的会员营销做的OJBK,我说我的内容营销对客户维系作用非常棒。 谁说了算? 复购率说了算! 我们先明确一下复购率的定义,官方说法(百科介绍):指消费者对该品牌产品或者服务的重复购买次数,重复购买率越多,则反应出消费者对品牌的忠诚度就越高,反之则越低。 粗读概念总是模糊的, 提炼一下,复购率就是一段时间内,购买2次及以上客户人数,占总人数的比重。 这一步提炼揭示了我们计算复购率需要确定的3个点——一是一段时间(这里就是一个月),二是统计购买2次和2次以上对客户数,三是复购人数占总客户数(去重)比重。 TWO:怎么计算复购率? 第一步:数据概览 做数据分析,拿到数据后先撸(粗略看一下)一遍数据是一个极好的习惯, 我们从三个角度(订单数量、是否存在脏数据、数据逻辑)来看,不难发现: 1、实战数据一共有61072笔订单,时间涵盖了2018年7月1日-2018年7月31日,为期一月。 2、复购率计算是针对交易成功的客户,筛选交易状态
  • leetcode题目总结
    文章目录 基础算法前缀和哈希双指针滑动窗口二分位运算mergesortquicksort排序桶排序KMP 数据结构单链表并查集树排序树栈队列图Trie树线段树 搜索bfsdfsflood fill暴力其他 贪心动态规划背包问题编辑距离类型各种子序列问题状态转移类型数字三角形线性简单dp数形dp记忆化搜索 模拟题博弈论设计题目数学推公式 基础算法 前缀和 题目名称题目简述5144矩阵区域和-中稍微变化了一下的二维前缀和。注意不要越界1310. 子数组异或查询-中异或前缀和274. H指数直接模拟是O(nlogn)。其实可以先统计一下不同引用数量的论文各有多少篇(大于n的就当成n)。然后求个后缀和,cnt[i]的含义就是有cnt[i]篇论文引用数量大于i。只要i大于s,i就–。同时s加上对应的数值(就是后缀和)303. 区域和检索 - 数组不可变裸前缀和304. 二维区域和检索 - 矩阵不可变裸二维前缀和325. 和等于 k 的最长子数组长度数字可能有负数,所以不能用双指针(双指针得要单调)。就用map记录出现过的数字,sum记录到目前为止的前缀和。如果出现过x,使得sum-x=k。也就是x=sum-k出现过,那就说明这一段之和为k,因为要最大值,所以记录第一个出现的位置就好。363. 矩形区域不超过 K 的最大数值和前缀和+二分。这道题相当于要暴力所有不同大小的矩形
  • Mongodb的索引操作
    一、Mongodb的索引操作 1. 为什么mongdb需要创建索引 加快查询速度进行数据的去重 2. mongodb创建简单的索引方法 语法:db.集合名.ensureIndex({属性:1}),1表示升序, -1表示降序 3. 创建索引前后查询速度对比 测试:插入10万条数据到数据库中 插入数据: for(i=0;i<100000;i++){db.t1.insert({name:'test'+i,age:i})} 创建索引前: db.t1.find({name:'test10000'}) db.t1.find({name:'test10000'}).explain('executionStats') # 显示查询操作的详细信息 "executionStats": { "executionSuccess": true, "nReturned": NumberInt("1"), "executionTimeMillis": NumberInt("58"), "totalKeysExamined": NumberInt("0"), "totalDocsExamined": NumberInt("100000"), "executionStages": { "stage": "COLLSCAN", "filter": { "name": { "$eq": "test10000" } }
  • 去重插入数据 mysql_mysql 数据去重
    从excel中导入了一部分数据到mysql中,有很多数据是重复的,而且没有主键,需要按照其中已经存在某一列对数据进行去重。 添加主键 由于之前的字段中没有主键,所以需要新增一个字段,并且将其作为主键。 添加一个新的字段id,对id中的值进行递增操作,然后再设置为主键。 对id字段进行递增的赋值操作如下: SET @r:=0; UPDATE table SET id=(@r:=@r+1); 然后设置为主键即可。 去重 添加玩递增的id字段后,就可以对数据根据某个字段进行去重操作,策略就是保存id最小的那条数据。 DELETE FROM `table` WHERE `去重字段名` IN ( SELECT x FROM ( SELECT `去重字段名` AS x FROM `table` GROUP BY `去重字段名` HAVING COUNT(`去重字段名`) > 1 ) tmp0 ) AND `递增主键名` NOT IN ( SELECT y FROM ( SELECT min(`递增主键名`) AS y FROM `table` GROUP BY `去重字段名` HAVING COUNT(`去重字段名`) > 1 ) tmp1 ) 来源:https://blog.csdn.net/weixin_32282271/article/details/113229378
  • pandas针对excel处理(更新)
    读取文件 import padas df = pd.read_csv("") #读取文件 pd.read_clipboard() #读取粘贴板的内容 #解决数据显示不完全的问题 pd.set_option('display.max_columns', None) pd.set_option('display.max_rows', None) #获取指定单元格的值 datefirst = config.iloc[0,1] datename = config.iloc[0,2] #新建一列two,筛选料号一列的前俩个 sheet["two"] = sheet["料号"].apply(lambda x:x[:2]) 数值处理 df["dog"] = df["dog"].replace(-1,0) #数值替换 #apply理解函数作为一个对象,可以作为参数传递给其它参数,并且能作为函数的返回值 df["price_new"] = df["price"].apply(lambda pri:pyi.lower()) #新列对老列处理 df["pricee"] = df["price"] *2 #新列 获取数据 data = df.head() #默认读取前行 df = pd.read_excel("lemon.xlsx",sheet_name=["python","student"])
  • mysql 去重 根据id_mysql 数据去重
    从excel中导入了一部分数据到mysql中,有很多数据是重复的,而且没有主键,需要按照其中已经存在某一列对数据进行去重。 添加主键 由于之前的字段中没有主键,所以需要新增一个字段,并且将其作为主键。 添加一个新的字段id,对id中的值进行递增操作,然后再设置为主键。 对id字段进行递增的赋值操作如下: SET @r:=0; UPDATE table SET id=(@r:=@r+1); 然后设置为主键即可。 去重 添加玩递增的id字段后,就可以对数据根据某个字段进行去重操作,策略就是保存id最小的那条数据。 DELETE FROM `table` WHERE `去重字段名` IN ( SELECT x FROM ( SELECT `去重字段名` AS x FROM `table` GROUP BY `去重字段名` HAVING COUNT(`去重字段名`) > 1 ) tmp0 ) AND `递增主键名` NOT IN ( SELECT y FROM ( SELECT min(`递增主键名`) AS y FROM `table` GROUP BY `去重字段名` HAVING COUNT(`去重字段名`) > 1 ) tmp1 ) 来源:https://blog.csdn.net/weixin_29420299/article/details/112813738
  • Excel 文件格式解析
    微软的Excel格式有两种:.xls和.xlsx。Excel2003及之前的版本是.xls格式,从Excel2007开始支持.xlsx格式。只使用基本功能的话两种格式看起来并没有多大差别,但是两者文件格式确实截然不同的。excel97-2003(xls格式)XLS文件最为一个文件流(FileStream),是由多个子流(SubStream)构成的,下面这张图是将各个SubStream按顺序依次展现出来,这些SubStream都是有若干个整数倍Block(1 block = 512 bytes)组成。SubStream XLS Header占1个block(512bytes)固定大小WorkBook最小占8个block(4096bytes)Summary Information占8个block(4096bytes)固定大小Document Summary Information占8个block(4096bytes)固定大小XLS Header扩展区只有.xls文件超过一定大小时,才会出现BigBolck pointer最小占1个(512bytes)RootEntry占1个block(512bytes) 其中所有单元格数据记录在WorkBook子流中,以下为WorkBook区的重要内容结构。0x0809 WorkbookHeader,即BOF,长度范围1
  • Wos/Pubmed/Scopus数据库一键去重+清洗数据 CiteSpace Vosviewer
    不知大家是否遇到过这种情况,在做英文文献计量与知识图谱时发现检索出的文献 一方面: 很多文献竟然不相关; 另一方面文献有重复 ;当然这可能是数据库自身的检索问题。 数据不相关 ,那就需要筛选。 如何筛选呢? 在数据库里直接删选,非常不方便。 数据有重复就要去重,怎么去重呢? 尽管一些图谱软自带去重功能,但是我们无法白盒操作,不清楚文献是否相关,而导入 诸如Endnote /NoteExpress等 文献管理软件, 导出来的文件各种软件又不识别! 基于两方面考虑,本团队开发了一个小程序,让大家可以直接利用excel对 Web of Science、Pubmed、Scopus数据进行清洗+ 去重! 非常简单方便! 处理后的数据可无缝适用于新老版本CiteSpace、Vosviewer、bibexcel等文献计量与知识图谱软件! 看完本文你将学会如何对Web of Science、Pubmed、Scopus数据去重+清洗了! 然后再利用CiteSpace、Ucinet、Vosviewer、gephi等文献计量与可视化软件进行可视化展示,结果更加客观、科学、权威! 用CiteSpace新老版本做了测试: 来源:https://blog.csdn.net/qq_39974284/article/details/104628745
  • redis五大数据结构和使用场景
    老规矩,先抛结论后验证 string:有点像java的hashMap,存的时候什么key,取的时候也什么key,常用于做缓存,保存用户信息、查询列表等; hash:这个有点像hashMap的value又套了个hashMap,下文有举例,一看就明白了; list:有序列表,类似Java的linkedList,可以在左边右边插入数据; set:去重集合,类似Java的hashset,可用于求交集,比如共同好友; zset:带权重的set集合,可用于做排行榜; 为了方便理解,我们基于这个dog类来做测试,有手就能学会的那种 //Dog类,属性不重要,随便写的 public class Dog { private String name; private String like; } ================分割线================ //new三只小狗 Dog dog1 = new Dog("蔡徐鸡", "唱跳"); Dog dog2 = new Dog("蔡徐公鸡", "rap"); Dog dog3 = new Dog("蔡徐老母鸡", "篮球"); ================分割线================ //我们用jedis来操作redis Jedis jedis = new Jedis(); 1、String: 说明
  • 两数之和(two sum)问题通用解法(map法和双指针)
    文章目录 1. [LeetCode01:two sum](https://leetcode.com/problems/two-sum/)题意思路1:map法代码1:思路2:双指针解法代码2小结 2. [LintCode607. Two Sum III - Data structure design](https://www.lintcode.com/problem/two-sum-iii-data-structure-design/my-submissions)题意思路代码 3. 167. [Two Sum II - Input array is sorted](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/)题意思路代码 4. LintCode587.Two Sum - Unique pairs题意思路代码 5. [LeetCode15. 3Sum](https://leetcode.com/problems/3sum/)题意思路代码6. [LintCode-382. Triangle Count](https://www.lintcode.com/problem/triangle-count/description)题意思路代码 7. [LintCode59. 3Sum Closest](https
  • JVM——(11)String Table(字符串常量池)
    文章目录往期文章前言一、String的基本特性二、String的内存分配三、String的基本操作四、字符串拼接操作五、intern()的使用六、String Table的垃圾回收七、G1的String去重操作参考资料JDK 6环境下的大小设置:JDK 7环境下的大小设置:为什么 JDK9 改变了 String 的结构一道笔试题字符串常量池怎么保证不会存储相同内容的?JDK 6环境运行下在永久代中:JDK 8环境运行下在堆中:那么为什么要调整字符串常量池的位置?结论:JDK 1.6中,将这个字符串对象尝试放入串池。Jdk1.7起,将这个字符串对象尝试放入串池。关于 new String() 的说明小结intern()使用intern()测试执行效率往期文章JVM——(1)为什么学习虚拟机JVM——(2)聊聊JVM虚拟机JVM——(3)类加载子系统JVM——(4)运行时数据区的概述与程序计数器(PC寄存器)JVM——(5)运行时数据区的虚拟机栈JVM——(6)运行时数据区的本地方法栈JVM——(7)运行时数据区的堆空间JVM——(8)运行时数据区的方法区JVM——(9)对象的实例化与访问定位JVM——(10)执行引擎JVM——(11)String Table(字符串常量池)JVM——(12)垃圾回收概述JVM——(13)垃圾回收相关算法JVM——(14)垃圾回收相关概念的概述JVM—
  • 大数据实时计算引擎 Flink 实战与性能优化
    基于 Flink 1.9 讲解的专栏,涉及入门、概念、原理、实战、性能调优、系统案例的讲解。 专栏介绍 扫码下面专栏二维码可以订阅该专栏 首发地址:http://www.54tianzhisheng.cn/2019/11/15/flink-in-action/ 专栏地址:https://gitbook.cn/gitchat/column/5dad4a20669f843a1a37cb4f 专栏亮点 全网首个使用最新版本 Flink 1.9 进行内容讲解(该版本更新很大,架构功能都有更新),领跑于目前市面上常见的 Flink 1.7 版本的教学课程。 包含大量的实战案例和代码去讲解原理,有助于读者一边学习一边敲代码,达到更快,更深刻的学习境界。目前市面上的书籍没有任何实战的内容,还只是讲解纯概念和翻译官网。 在专栏高级篇中,根据 Flink 常见的项目问题提供了排查和解决的思维方法,并通过这些问题探究了为什么会出现这类问题。 在实战和案例篇,围绕大厂公司的经典需求进行分析,包括架构设计、每个环节的操作、代码实现都有一一讲解。 为什么要学习 Flink? 随着大数据的不断发展,对数据的及时性要求越来越高,实时场景需求也变得越来越多,主要分下面几大类: 为了满足这些实时场景的需求,衍生出不少计算引擎框架。现有市面上的大数据计算引擎的对比如下图所示: 可以发现无论从 Flink 的架构设计上
  • 快应用消息推送push服务端开发
    文章目录 快应用消息推送push开发一、设备信息保存1、设备id的生成1-1生成规则1-2生成弊端1-3更为简单的方式保证唯一性 2、不合法regId的过滤3、上报更多设备信息4、程序实现逻辑4-1 程序流程图4-2 实现逻辑核心思想描述 5、线上出错问题以及解决方式5-1设备信息索引重复5-2设备信息保存并发死锁 二、消息推送1、厂商消息推送对比1-1厂商消息推送token的获取厂商对比处理的方式 1-2厂商消息推送的频率、每天推送总量厂商对比处理的方式 1-3消息推送时间的限制厂商对比处理的方式 1-4消息推送regid批次大小厂商对比处理的方式 2、java消息id的生成生成原因生成规则 3、异步多线程分厂商推送4、厂商推送程序实现(单推、群推、全推)2-1 程序流程图2-2 程序UML类基础结构缩略图2-3 实现逻辑描述 5、线上出错问题以及解决方式5-1数据库保存异常regid,导致推送异常报错5-2 vivo推送次数超出总用户限制5-3 huawei批次regids大小不能超过1005-4 vivo服务端返回报文变更,空指针报错5-5 vivo权限认证失败5-6小米三次握手连接出错5-6 oppo单推服务限流5-7 oppo非法appkey 三、消息推送结果统计1、回执与自主调用统计接口1-1厂商的统计方式分析1-2厂商的统计方式对比1-3 push选择的统计方式 2