精华内容
下载资源
问答
  • 接上篇,这篇就剩最后用Pandas对Dataframe里面的数据去重,这里也两种方法,可以直接看官方文档(但是掌柜觉得其实就是一种方法,因为第一种只是显示哪些重复。。。): 使用duplicated方法,它会返回一个布尔...
    • Pandas去重DataFrame
      接上篇,这篇就剩最后的用Pandas对DataFrame里面的数据去重,这里也有两种方法,可以直接看官方文档(但是掌柜觉得其实就是一种方法,因为第一种只是显示哪些重复。。。)
    1. 使用duplicated方法,它会返回一个布尔向量,其长度为行数,表示行是否重复,但是并不会删除重复数据。来看实例:
    import pandas as pd
    import numpy as np
    
    df2 = pd.DataFrame({'a': ['one', 'one', 'two', 'two', 'two', 'three', 'four'],
                        'b': ['x', 'y', 'x', 'y', 'x', 'x', 'x'],'c': np.random.randn(7)})
    
    df2
    

    然后会得到这样一个表格:
    在这里插入图片描述
    现在使用duplicated方法:

    df2.duplicated('a')
    

    会得到这样的结果:
    在这里插入图片描述
    你看,他只是告诉你哪行是重复的数据(True值得就是),但是并没有删除重复数据。当然该方法里面还有一个可选的keep参数,可以设置重复数据的显示规则,具体请看官方文档,掌柜就不多做叙述,下面继续看第二种方法。

    1. 使用 drop_duplicates方法,它才是去除重复数据。还是上面的例子,我们使用这个方法:
    df2.drop_duplicates('a')
    

    就会得到去重后的数据:
    在这里插入图片描述
    是不是也很简单?😁当然他也有同样的可选参数keep来设置去除重复数据的规则,比如下面这样,保留最后重复的数据,去除前面的重复数据:
    在这里插入图片描述
    然后要去重多列只需要把含有重复数据的列写成列表的形式即可。

    PS: Pandas还可以根据索引来去重,具体操作可以看下面这个实例:
    在这里插入图片描述
    使用的是Index.duplicated方法,这里要注意的是如果只是写df3.index.duplicated()方法,返回的是类似解法一的结果,并不去重数据;要像下面这样以切片的形式来写,注意中括号里面的最前面是有个波浪线的才会去重:

    df3[~df3.index.duplicated()]
    

    在这里插入图片描述
    好了,不同工具对数据进行去重的方法掌柜已经总结完毕,希望对大家有用🧐。

    展开全文
  • ##在我们前端学习中经常要用到数组一些方法,比如数组去重,现在我们就来简单看下有哪些方法能够实现 1.Set 集合es6中新增数据类型 var arr=[1,1,22,3,3,4] newArr=[...new Set(arr)] console.log(newArr); //[1...

    ##在我们前端的学习中经常要用到数组的一些方法,比如数组去重,现在我们就来简单的看下有哪些方法能够实现
    1.Set 集合es6中新增数据类型

    var arr=[1,1,22,3,3,4]
    newArr=[...new Set(arr)]
    console.log(newArr); //[1,22,3,4]
    ``
    

    2.冒泡法实现数组去重

    var arr=[1,1,22,3,3,4]
     arr.sort(function(a,b){
         return a-b
     })  //数组排序目的是把相同的元素放到一起
    var newArr=[]
    for(var i = 0;i<arr.length;i++){
     if(arr[i]!=arr[i+1]){
         newArr.push(arr[i])
     }
    }
    console.log(newArr);//[1,3,4,22]
    

    3.对象法数组去重
    原理:对象的属性名不能重复

     var arr=[1,1,22,3,3,4]
    var obj={}//声明空对象
    var newArr=[]//声明空数组
    for(var i = 0;i<arr.length;i++){
      if(obj[arr[i]]==undefined){  //属性名不存在则取出undifined
         newArr.push(arr[i])
         obj[arr[i]]=1 //对象的赋值
      }
    }
    console.log(newArr);//[1,22,3,4]
    

    还有一些方法就不一一列举了,欢迎大佬补充

    展开全文
  • 查看Seqno列都有哪些值 df['Seqno'].unique() # 查看唯一值 duplicated方法 duplicated用于从上到下比较指定某一列值,当这个值第一次出现时,返回False,当这个值和上一个比一样时,返回True df['Seqno']....

    通过去重进行数据清洗

    数据初始

    Seqno列去重

    查看Seqno列都有哪些值

    df['Seqno'].unique()  # 查看唯一的值
    

    duplicated方法
    duplicated用于从上到下比较指定某一列的值,当这个值第一次出现时,返回False,当这个值和上一个比一样时,返回True

    df['Seqno'].duplicated()
    

    drop_duplicates去重复

    drop_duplicates方法将会把这一列duplicated方法结果中为True的项删除,False的项保留。在不指定keep的时候,它的值默认为first,表示如果有多个重复的则保留第一个。也可以指定其他的值,比如last。

    注意:

    df1['Seqno'].drop_duplicates()   # 返回一个新的关于Seqno的Serirs
    df1.drop_duplicates()            # 按照一行四个元素的一致性去重的
    df.drop_duplicates(['Seqno'])    # 指定按照Seqno这一列的值为基准进行去重
    
    展开全文
  • 之前在学习 ES6 时候,看到 Set 和 Map,不知道其应用场景有哪些,只觉得很多时候会用在数组去重数据存储,后来慢慢才领悟到 Set 是一种叫做集合的数据结构,Map 是一种叫做字典的数据结构。SetSet 本身是一个...

    之前在学习 ES6 的时候,看到 Set 和 Map,不知道其应用场景有哪些,只觉得很多时候会用在数组去重和数据存储,后来慢慢才领悟到 Set 是一种叫做集合的数据结构,Map 是一种叫做字典的数据结构。

    Set

    Set 本身是一个构造函数,用来生成 Set 数据结构。Set 函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化。Set 对象允许你存储任何类型的值,无论是原始值或者是对象引用。它类似于数组,但是成员的值都是唯一的,没有重复的值。

    const s = new Set()

    [2, 3, 5, 4, 5, 2, 2].forEach((x) => s.add(x))

    for (let i of s) {

    console.log(i)

    }

    // 2 3 5 4

    Set 中的特殊值

    Set 对象存储的值总是唯一的,所以需要判断两个值是否恒等。有几个特殊值需要特殊对待:

    +0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复

    undefined 与 undefined 是恒等的,所以不重复

    NaN 与 NaN 是不恒等的,但是在 Set 中认为 NaN 与 NaN 相等,所有只能存在一个,不重复。

    Set 的属性:

    size:返回集合所包含元素的数量

    const items = new Set([1, 2, 3, 4, 5, 5, 5, 5])

    items.size // 5

    Set 实例对象的方法

    add(value):添加某个值,返回 Set 结构本身(可以链式调用)。

    delete(value):删除某个值,删除成功返回 true,否则返回 false。

    has(value):返回一个布尔值,表示该值是否为 Set 的成员。

    clear():清除所有成员,没有返回值。

    s.add(1).add(2).add(2)

    // 注意2被加入了两次

    s.size // 2

    s.has(1) // true

    s.has(2) // true

    s.has(3) // false

    s.delete(2)

    s.has(2) // false

    遍历方法

    keys():返回键名的遍历器。

    values():返回键值的遍历器。

    entries():返回键值对的遍历器。

    forEach():使用回调函数遍历每个成员。

    由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值),所以 keys 方法和 values 方法的行为完全一致。

    let set = new Set(['red', 'green', 'blue'])

    for (let item of set.keys()) {

    console.log(item)

    }

    // red

    // green

    // blue

    for (let item of set.values()) {

    console.log(item)

    }

    // red

    // green

    // blue

    for (let item of set.entries()) {

    console.log(item)

    }

    // ["red", "red"]

    // ["green", "green"]

    // ["blue", "blue"]

    Array 和 Set 对比

    Array 的 indexOf 方法比 Set 的 has 方法效率低下

    Set 不含有重复值(可以利用这个特性实现对一个数组的去重)

    Set 通过 delete 方法删除某个值,而 Array 只能通过 splice。两者的使用方便程度前者更优

    Array 的很多新方法 map、filter、some、every 等是 Set 没有的(但是通过两者可以互相转换来使用)

    Set 的应用

    1、Array.from 方法可以将 Set 结构转为数组。

    const items = new Set([1, 2, 3, 4, 5])

    const array = Array.from(items)

    2、数组去重

    // 去除数组的重复成员

    ;[...new Set(array)]

    Array.from(new Set(array))

    3、数组的 map 和 filter 方法也可以间接用于 Set

    let set = new Set([1, 2, 3])

    set = new Set([...set].map((x) => x * 2))

    // 返回Set结构:{2, 4, 6}

    let set = new Set([1, 2, 3, 4, 5])

    set = new Set([...set].filter((x) => x % 2 == 0))

    // 返回Set结构:{2, 4}

    4、实现并集 (Union)、交集 (Intersect) 和差集

    let a = new Set([1, 2, 3])

    let b = new Set([4, 3, 2])

    // 并集

    let union = new Set([...a, ...b])

    // Set {1, 2, 3, 4}

    // 交集

    let intersect = new Set([...a].filter((x) => b.has(x)))

    // set {2, 3}

    // 差集

    let difference = new Set([...a].filter((x) => !b.has(x)))

    // Set {1}

    weakSet

    WeakSet 结构与 Set 类似,也是不重复的值的集合。

    成员都是数组和类似数组的对象,若调用 add() 方法时传入了非数组和类似数组的对象的参数,就会抛出错误。

    const b = [1, 2, [1, 2]]

    new WeakSet(b) // Uncaught TypeError: Invalid value used in weak set

    成员都是弱引用,可以被垃圾回收机制回收,可以用来保存 DOM 节点,不容易造成内存泄漏。

    WeakSet 不可迭代,因此不能被用在 for-of 等循环中。

    WeakSet 没有 size 属性。

    Map

    Map 中存储的是 key-value 形式的键值对, 其中的 key 和 value 可以是任何类型的, 即对象也可以作为 key。 Map 的出现,就是让各种类型的值都可以当作键。Map 提供的是 “值-值”的对应。

    Map 和 Object 的区别

    Object 对象有原型, 也就是说他有默认的 key 值在对象上面, 除非我们使用 Object.create(null)创建一个没有原型的对象;

    在 Object 对象中, 只能把 String 和 Symbol 作为 key 值, 但是在 Map 中,key 值可以是任何基本类型(String, Number, Boolean, undefined, NaN….),或者对象(Map, Set, Object, Function , Symbol , null….);

    通过 Map 中的 size 属性, 可以很方便地获取到 Map 长度, 要获取 Object 的长度, 你只能手动计算

    Map 的属性

    size: 返回集合所包含元素的数量

    const map = new Map()

    map.set('foo', ture)

    map.set('bar', false)

    map.size // 2

    Map 对象的方法

    set(key, val): 向 Map 中添加新元素

    get(key): 通过键值查找特定的数值并返回

    has(key): 判断 Map 对象中是否有 Key 所对应的值,有返回 true,否则返回 false

    delete(key): 通过键值从 Map 中移除对应的数据

    clear(): 将这个 Map 中的所有元素删除

    const m = new Map()

    const o = { p: 'Hello World' }

    m.set(o, 'content')

    m.get(o) // "content"

    m.has(o) // true

    m.delete(o) // true

    m.has(o) // false

    遍历方法

    keys():返回键名的遍历器

    values():返回键值的遍历器

    entries():返回键值对的遍历器

    forEach():使用回调函数遍历每个成员

    const map = new Map([

    ['a', 1],

    ['b', 2],

    ])

    for (let key of map.keys()) {

    console.log(key)

    }

    // "a"

    // "b"

    for (let value of map.values()) {

    console.log(value)

    }

    // 1

    // 2

    for (let item of map.entries()) {

    console.log(item)

    }

    // ["a", 1]

    // ["b", 2]

    // 或者

    for (let [key, value] of map.entries()) {

    console.log(key, value)

    }

    // "a" 1

    // "b" 2

    // for...of...遍历map等同于使用map.entries()

    for (let [key, value] of map) {

    console.log(key, value)

    }

    // "a" 1

    // "b" 2

    数据类型转化

    Map 转为数组

    let map = new Map()

    let arr = [...map]

    数组转为 Map

    Map: map = new Map(arr)

    Map 转为对象

    let obj = {}

    for (let [k, v] of map) {

    obj[k] = v

    }

    对象转为 Map

    for( let k of Object.keys(obj)){

    map.set(k,obj[k])

    }

    Map的应用

    在一些 Admin 项目中我们通常都对个人信息进行展示,比如将如下信息展示到页面上。传统方法如下。

    姓名

    {{info.name}}

    年龄

    {{info.age}}

    性别

    {{info.sex}}

    手机号

    {{info.phone}}

    家庭住址

    {{info.address}}

    家庭住址

    {{info.duty}}

    js 代码

    mounted() {

    this.info = {

    name: 'jack',

    sex: '男',

    age: '28',

    phone: '13888888888',

    address: '广东省广州市',

    duty: '总经理'

    }

    }

    我们通过 Map 来改造,将我们需要显示的 label 和 value 存到我们的 Map 后渲染到页面,这样减少了大量的html代码

    {{label}}

    {{value}}

    js 代码

    data: () => ({

    info: {},

    infoMap: {}

    }),

    mounted () {

    this.info = {

    name: 'jack',

    sex: '男',

    age: '28',

    phone: '13888888888',

    address: '广东省广州市',

    duty: '总经理'

    }

    const mapKeys = ['姓名', '性别', '年龄', '电话', '家庭地址', '身份']

    const result = new Map()

    let i = 0

    for (const key in this.info) {

    result.set(mapKeys[i], this.info[key])

    i++

    }

    this.infoMap = result

    }

    WeakMap

    WeakMap 结构与 Map 结构类似,也是用于生成键值对的集合。

    只接受对象作为键名(null 除外),不接受其他类型的值作为键名

    键名是弱引用,键值可以是任意的,键名所指向的对象可以被垃圾回收,此时键名是无效的

    不能遍历,方法有 get、set、has、delete

    总结

    Set

    是一种叫做集合的数据结构(ES6新增的)

    成员唯一、无序且不重复

    [value, value],键值与键名是一致的(或者说只有键值,没有键名)

    允许储存任何类型的唯一值,无论是原始值或者是对象引用

    可以遍历,方法有:add、delete、has、clear

    WeakSet

    成员都是对象

    成员都是弱引用,可以被垃圾回收机制回收,可以用来保存 DOM 节点,不容易造成内存泄漏

    不能遍历,方法有 add、delete、has

    Map

    是一种类似于字典的数据结构,本质上是键值对的集合

    可以遍历,可以跟各种数据格式转换

    操作方法有:set、get、has、delete、clear

    WeakMap

    只接受对象作为键名(null 除外),不接受其他类型的值作为键名

    键名是弱引用,键值可以是任意的,键名所指向的对象可以被垃圾回收,此时键名是无效的

    不能遍历,方法有 get、set、has、delete

    推荐文章

    关注的我的公众号不定期分享前端知识,与您一起进步!

    展开全文
  • 之前在学习 ES6 时候,看到 Set 和 Map,不知道其应用场景有哪些,只觉得很多时候会用在数组去重数据存储,后来慢慢才领悟到 Set 是一种叫做集合的数据结构,Map 是一种叫做字典的数据结构。本文在gitthub做了...
  • 如果面试官问你去重的方法有哪些?你若是可以答出8种以上就很不错了,面试官也会对你刮目相看。 在真实的项目中碰到的数组去重,一般都是后台去处理,很少让前端处理数组去重。虽然日常项目用到的概率比较低(数据...
  • 现在es6逐渐成为了进入了前端开发视野里,各大浏览器和流行框架对es6支持也非常好...那么就来总结一下数组去重有哪些方法吧。 1.使用set数据结构去重。(es6新方法) 先看一下set定义: ***ES6 提供了新...
  • 导读JS数组去重是面试中并不少见问题,听起来很简单,当你兴高采烈地...下面我们一起来学习JS中有哪些去重方法。01双重for循环循环数组,拿前一个数据和后面的数据做对比,与后面相同就删除。//方法1const uniqu...
  • 张口就来之数组去重

    2020-03-29 21:06:48
    数组去重向来都是前端开发人员必备一个基础之基础内容,面试也可能会遇到,那么,数组去重有哪些方法呢? 方法一利用ES6中set方法去重 <script type="text/javascript"> var arr=[1,2,3,4,5,1,2,'a','b',...
  • 如图,我需要对某数据进行数据清洗,其中开户行别需要统一,即,中国银行,中国银行股份有限公司,这种实际上是一个行别,需要统一,目前需要把十几万条数据,行别字段进行去重,先看看公共有哪些行别 用到的方法为...
  • drop_duplicates为我们提供了数据去重的方法,那怎么得到哪些数据重复呢?...以上这篇pandas取出重复数据的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感
  • 当我们需要一批货物需要存放时,最好的方法就是一个仓库进行保管。我们可以把URL管理器看成一个收集了数据的大仓库,而下载器就是这个仓库货物的搬运者。关于下载器的问题,我们暂且不谈。本篇主要讨论的是在url...
  • mysql大批量去重并导入

    万次阅读 2016-09-06 23:25:23
    今天拿到这个文件,里面有联系人及其地址,如图 ...问题就变成了,查找出当前文档里面有哪些内容是以前已经导入过了。 根据这样我先想出了一个方法,利用excelCONCATENATE("'",D30,"',")拼接字符串,结果如
  • 当我们需要一批货物需要存放时,最好的方法就是一个仓库进行保管。我们可以把URL管理器看成一个收集了数据的大仓库,而下载器就是这个仓库货物的搬运者。关于下载器的问题,我们暂且不谈。本篇主要讨论的是在url...
  • 当我们需要一批货物需要存放时,最好的方法就是一个仓库进行保管。我们可以把URL管理器看成一个收集了数据的大仓库,而下载器就是这个仓库货物的搬运者。关于下载器的问题,我们暂且不谈。本篇主要讨论的是在url...
  • 当我们需要一批货物需要存放时,最好的方法就是一个仓库进行保管。我们可以把URL管理器看成一个收集了数据的大仓库,而下载器就是这个仓库货物的搬运者。关于下载器的问题,我们暂且不谈。本篇主要讨论的是在url...
  • 综述:数据结构和算法对于前端人员来说很重要,特别是一线大厂,将常见的问题做一个总结,巩固自己的知识 前端必须了解的数据结构和算法知识: ...1.去重的方法有哪些?越多越好,扩宽自己的知识面? ...
  • pandas取出重复数据

    万次阅读 2018-10-31 16:12:36
    drop_duplicates为我们提供了数据去重的方法,那怎么得到哪些数据有重复呢? 实现步骤: 采用drop_duplicates对数据去两次重,一次将重复数据全部去除(keep=False)记为data1,另一次将重复数据保留一个(keep='first...
  • drop_duplicates 为我们提供了数据去重的方法,那怎么得到哪些数据有重复呢? 实现步骤: 采用 drop_duplicates 对数据去两次重,一次将重复数据全部去除(keep=False)记为 data1,另一次将重复数据保留一个...
  • JS reduce()方法交流

    2020-07-04 14:16:32
    js的方法有很多,什么map,some,every,forEach,splice…,哪些有返回值,哪些改变原数组,相信很多人经常容易搞混,今天主要跟家分享下关于js 的reduce方法,为什么,因为比较重要!求和,去重,多维数据转为一维...
  • 数据运营思维导图

    2018-04-26 14:24:22
    培养数据的敏感度 培养数据思维,从每天的各种数据报表开始 数据来源 数据埋点 初级 追踪每次用户的行为,统计关键流程的使用程度 中级 在产品中植入多段代码追踪用户连续行为,建立用户模型来具体化用户在...
  • 2019数据运营思维导图

    2019-03-29 21:34:09
    从多个维度拆分数据 对比思路 大的营销事件作为节点单独标记,数据剔除出来单独进行分析 节点思路 如运营活动等 行为标记思路 将大动作的优化,大的项目上线及时标注在数据报表中 培养数据的敏感度 培养数据思维,...
  • 机器学习:检测异常样本方法总结

    千次阅读 2018-08-25 17:57:12
    由于异常值检验,和去重、缺失值处理不同,它带一定的主观性。在实际业务场景中,我们要根据具体的业务逻辑来判别哪些样本是离群点。 下面总结下平时经常用到的异常样本检测方法。 可视化的方法 对于样本集某一...
  • 数据预处理的好坏,很大程度上决定了模型分析结果的好坏。 其中,异常值(outliers)检测是整个数据预处理过程中,十分重要的一环...可视化的方法画出样本集某一个特征而言,可以直接画出这个样本集在这个特征上值的分
  • 默背知识点:

    2019-06-23 19:25:00
    常用方法有哪些 列表: 列表增删改查有哪些 常用方法有哪些 去重转换两种方式 列表删除注意事项 字典: 字典增删改查有哪些 常用方法有哪些 元祖: 常用方法有哪些 集合: 常用方法有哪些 set集合...
  • 5. 判断数据类型的方法有哪些?返回值是什么? 6. 需要用到多个ajax请求的返回数据,该怎么处理? 7. 如何实现深拷贝? 8. map和forEach的区别? 9. ES6 新增的特性 10. 箭头函数和普通函数的区别? 11. event loop ...
  • 这篇文章,向大家展示了在日常开发中,数组有哪些奇淫技巧值得关注和学习,让我们开始吧!1.去重这也是一道常见的面试题,怎么对JS的数组去重。在ES6的时代,有个非常快速且简单的方法,使用new Set()以及Arra...

空空如也

空空如也

1 2 3 4
收藏数 64
精华内容 25
关键字:

去重数据的方法有哪些