精华内容
下载资源
问答
  • 摘要 在进行数据分析时,我们经常需要对DataFrame去重,但有时候也会需要只...DataFrame去重,可以选择是否保留重复值,默认是保留重复值,想要不保留重复值的话直接设置参数keep为False即可。 3.取DataFra...

    摘要

    在进行数据分析时,我们经常需要对DataFrame去重,但有时候也会需要只保留重复值。
    这里就简单的介绍一下对于DataFrame去重和取重复值的操作。

    1. 创建DataFrame
      这里首先创建一个包含一行重复值的DataFrame。
      在这里插入图片描述

    2. DataFrame去重,可以选择是否保留重复值,默认是保留重复值,想要不保留重复值的话直接设置参数keep为False即可。

    3.取DataFrame重复值。大多时候我们都是需要将数据去重,但是有时候很我们也需要取重复数据,这个时候我们就可以根据刚刚上面我们得到的两个DataFrame来concat到一起之后去重不保留重复值就可以。这样就把重复值取出来了。
    在这里插入图片描述

    ###############################
    分割线:20181217补充
    ###############################
    4.DataFrame根据某列去重
    在这里插入图片描述

    5.DataFrame根据某几列去重
    在这里插入图片描述

    欢迎添加个人微信号:liu2536036458。
    想进入交流群的,备注: 数据分析交流群

    展开全文
  • 一、判断是否有重复值 if (count($arr) != count(array_unique($arr))) {  echo '该数组有重复值'; } 二、获取重复的值(一维数组的值完全相等是重复;如果是二维数组,二维数组中的值必须完全相同才是重复) ...

    一、判断是否有重复值

    if (count($arr) != count(array_unique($arr))) {
        echo '该数组有重复值';
    }

    二、获取重复的值(一维数组的值完全相等是重复;如果是二维数组,二维数组中的值必须完全相同才是重复)

    function getRepeat($arr) {
    	
        // 获取去掉重复数据的数组   
        $unique_arr = array_unique ( $arr );   
        // 获取重复数据的数组   
        $repeat_arr = array_diff_assoc ( $arr, $unique_arr );
    
        return $repeat_arr;
    }

    三、二维数组局部键对应值数据判断是否重复

    /*
    	作用:根据二维数组中的部分键值判断二维数组中是否有重复值
    	参数:
    		$arr  —— 目标数组
    		$keys —— 要进行判断的键值组合的数组
    	返回:重复的值
    	扩展:判断的键值
    */
    function getRepeat($arr,$keys) {
    	$unique_arr = array();
    	$repeat_arr = array();
    	foreach ($arr as $k => $v) {
    		$str = "";
    		foreach ($keys as $a => $b) {
    			$str .= "{$v[$b]},";
    		}
    		if( !in_array($str, $unique_arr) ){
    			$unique_arr[] = $str;
    		} else {
    			$repeat_arr[] = $v;
    		}
    	}
    	return $repeat_arr;
    }

      举个例子:

    $arr1 = array("aaa","bbb","ccc","ddd","aaa","bbb");
    $arr2 = array("aaa","bbb","ccc","ddd","aaa");
    $arr3 = array("aaa","bbb","lll","ddd","aaa","bbb");
    $arr = array($arr1,$arr2,$arr3);
    
    $keys = array(0,1,2);
    var_dump(getRepeat($arr,$keys));
    
    输出:
    
    D:\office\wamp64\www\test.php:46:
    array (size=1)
      0 => 
        array (size=5)
          0 => string 'aaa' (length=3)
          1 => string 'bbb' (length=3)
          2 => string 'ccc' (length=3)
          3 => string 'ddd' (length=3)
          4 => string 'aaa' (length=3)

     

    展开全文
  • 重复值处理——删除(有几个相同就删除还是全部得相同) 缺失值处理——删除,填充(均值,众数,中位数,前后相邻值),插值(拉格朗日插值,牛顿插值) 异常值处理——describe进行描述性分析+散点图+箱型图定位...

    Pandas系列目录
    Pandas数据分析①——数据读取(CSV/TXT/JSON)
    Pandas数据分析③——数据规整1(索引和列名调整/数据内容调整/排序)
    Pandas数据分析④——数据规整2(数据拼接/透视)
    Pandas数据分析⑤——数据分组与函数使用(Groupby/Agg/Apply/mean/sum/count)
    Pandas数据分析⑥——数据分析实例(货品送达率与合格率/返修率/拒收率)
    Pandas数据分析⑦——数据分析实例2(泰坦尼克号生存率分析)

    数据清洗分为三步(文末有大礼赠送):

    重复值处理——删除(有几个相同就删除还是全部得相同)
    缺失值处理——删除,填充(均值,众数,中位数,前后相邻值),插值(拉格朗日插值,牛顿插值)
    异常值处理——describe进行描述性分析+散点图+箱型图定位异常值,处理方法:删除,视为缺失值

    一、重复值处理

    ① 先用duplicated()方法进行逻辑判断,确定是否有重复值

    data = pd.read_csv("data.csv",encoding='gbk')
    print(data.duplicated().value_counts())    
    

    在这里插入图片描述
    ② 再用duplicates(subset,keep,inplace)方法对某几列下面的重复行删除
    subset:以哪几列作为基准列,判断是否重复,如果不写则默认所有列都要重复才算
    keep: 保留哪一个,fist-保留首次出现的,last-保留最后出现的,False-重复的一个都不保留,默认为first
    inplace: 是否进行替换,最好选择False,保留原始数据,默认也是False

    data.drop_duplicates(subset=["订单号","订单行"],keep='first',inplace=True)
    print(data.duplicated().value_counts())
    

    在这里插入图片描述

    二、缺失值处理

    1、缺失值查找:
    先通过isnull函数看一下是否有空值,结果是有空值的地方显示为True,没有的显示为False;再通过isnull().any()直接看每一列是否有空值,这个是只要这一列有1个空值,结果就是True;如果想具体看哪几行有空值,可以再用data.isnull().values==True来定位

    print(data.isnull())
    

    在这里插入图片描述

    print(data.isnull().any())
    

    在这里插入图片描述

    print(data[data.isnull().values==True])
    

    在这里插入图片描述
    2、缺失值处理

    ① 删除缺失值
    dropna(axis,subset,how,thresh,inplace)
    axis: 删除行还是列,行是0或index,列是1或column,默认是行
    subst: 删除某几列的缺失值,可选,默认为所有列
    how: any or all,any表明只要出现1个就删除,all表示所有列均为na才删
    thresh: 缺失值的数量标准,达到这个阈值才会删除
    inplace: 是否替换

    data.dropna(how='any', axis=0,inplace=True)
    print(data.isnull().any())
    

    在这里插入图片描述
    ②缺失值填充

    fillna(value,method,{},limit,inplace,axis)
    value: 可以传入一个字符串或数字替代Na,值可以是指定的或者平均值,众数或中位数等
    method: 有ffill(用前一个填充)和bfill(用后一个填充)两种
    {}: 可以根据不同的列填充不同的值,列为键,填充值为值
    limit: 限定填充的数量
    inplace: 是否直接在原文件修改
    axis: 填充的方向,默认是0,按行填充

    data1 = data[data.isnull().values==True]
    print(data1)
    print(data1.fillna(0))
    

    在这里插入图片描述

    print(data1.fillna("missing",limit=1))
    

    在这里插入图片描述

    print(data1.fillna({"订单号": "下次再补", "数量": "估计"}))
    

    在这里插入图片描述

    print(data1.fillna(method="ffill"))
    

    在这里插入图片描述

    data1.fillna(method="bfill",inplace=True)
    print(data1)
    

    在这里插入图片描述

    print(data1.fillna(data1.median()))
    

    在这里插入图片描述
    ③缺失值插值

    拉格朗日插值法
    在二维坐标系中,如果有N个点,都能找到唯一一个函数经过所有的点,而这个函数的自变量的次数少于或等于N-1**
    如何使用?

    from scipy.interpolate import lagrange
    
    def ployinterp_column(s, n, k=5):
        y = s[list(range(n - k, n)) + list(range(n + 1, n + 1 + k))]  # 取数
        y = y[y.notnull()]  # 剔除空值
        return lagrange(y.index, list(y))(n)  # 插值并返回插值结果
    
    # 逐个元素判断是否需要插值
    for i in data1.columns:
        for j in range(len(data1)):
            if (data1[i].isnull())[j]:  # 如果为空即插值
                data1[i][j] = ployinterp_column(data1[i], j)
    

    三、异常值处理

    1、异常值查找:

    ①先用describe()对统计字段进行描述性分析(仅能进行连续变量的处理),从结果上看,数量和销售金额的标准差接近均值的10倍,结合分位数,25%-75%都是1-4,最大值却达到了1万以上,可见最大值是个异常值,导致均数和方差都变大;同时销售金额最小值为0,这也是异常的

    print(data.describe())
    

    在这里插入图片描述
    ②可以画散点图观察,红色圈出部分即是异常值

    from matplotlib import pyplot as plt
    plt.scatter(data["数量"], data[" 销售金额 "])
    plt.show()
    

    在这里插入图片描述
    ③箱型图
    四分位距(IQR)就是上四分位与下四分位的差值。而我们通过IQR的1.5倍为标准,规定:超过上四分位+1.5倍IQR距离,或者下四分位-1.5倍IQR距离的点为异常值

    plt.subplot(1,2,1)
    plt.boxplot(data["数量"])
    plt.subplot(1,2,2)
    plt.boxplot(data[" 销售金额 "])
    plt.show()
    

    在这里插入图片描述在这里插入图片描述
    ④分布情况
    如果数据需要服从正态分布。在3∂原则下,异常值如超过3倍标准差,那么可以将其视为异常值。正负3∂的概率是99.7%,那么距离平均值3∂之外的值出现的概率为P(|x-u| 3∂) = 0.003,属于极个别的小概率事件。如果数据不服从正态分布,也可以用远离平均值的多少倍标准差来描述,比如这里我就指定超过4倍标准差就为异常值

    2、异常值处理

    删除——先将异常值替换为na,然后用dropna()删除
    视为缺失值——先将异常值替换为na,然后用缺失值处理方法处理(填充,插值等)

    比如用箱形图的办法,超过了上四分位1.5倍四分位距或下四分位1.5倍距离都算异常值,用中位数填充

    a = data["数量"].quantile(0.75)
    b = data["数量"].quantile(0.25)
    c = data["数量"]
    c[(c>=(a-b)*1.5+a)|(c<=b-(a-b)*1.5)]=np.nan
    c.fillna(c.median(),inplace=True)
    print(c.describe())
    

    在这里插入图片描述
    再比如用标准差和均值,定义超过4倍就算异常值

    a = data["数量"].mean()+data["数量"].std()*4
    b = data["数量"].mean()-data["数量"].std()*4
    c = data["数量"]
    c[(c>=a)|(c<=b)]=np.nan
    c.fillna(c.median(),inplace=True)
    print(c.describe())
    

    在这里插入图片描述
    两种方法得出的结果不一样,具体选择哪种要看业务的性质

    像电商、游戏或直播行业,确实存在大户人数占比不到1% 但贡献占比达到80%的情况,所以这种时候就要放宽异常值的限定,选择后面这种方法,如果是趋于稳定的,比如传统的汽车行业,一个用户不可能一次性购买很多很多辆,所以可以将条件设紧一点**


    本人互联网数据分析师,目前已出ExcelSQLPandasMatplotlibSeaborn机器学习统计学个性推荐关联算法工作总结系列。


    微信搜索 " 数据小斑马" 公众号,回复“数据分析"就可以免费领取数据分析升级打怪 15本必备教材

    在这里插入图片描述

    展开全文
  • R中重复值、缺失值及空格值的处理

    千次阅读 2017-07-11 23:23:06
    6.1 R中重复值的处理 #导入CSV数据 data ('1.csv', fileEncoding = "UTF-8", stringsAsFactors = FALSE); #对重复数据去重 new_data #重复值处理函数:unique,用于清洗数据中的处理重复值。 6.2 R中缺失值的处理 #...

    1、R中重复值的处理

    unique函数作用:把数据结构中,行相同的数据去除。

    #导入CSV数据
    data <- read.csv('1.csv', fileEncoding = "UTF-8", stringsAsFactors = FALSE);
    
    #对重复数据去重
    new_data <- unique(data)

    重复值处理函数:unique,用于清洗数据中的重复值。

    “dplyr”包中的distinct() 函数更强大:

    distinct(df,V1,V2) 根据V1和V2两个条件来进行去重

    unique()是对整个数据框进行去重,而distinct()可以针对某些列进行去重。

    2、R中缺失值的处理

    缺失值的产生

    ①有些信息暂时无法获取

    ②有些信息被遗漏或者错误处理了

    缺失值的处理方式

    ①数据补齐(例如用平均值填充)

    ②删除对应缺失值(如果数据量少的时候慎用

    ③不处理

    na.omit函数作用:去除数据结构中值为NA的数据

    #缺失数据清洗
    
    #读取数据
    data <- read.csv('1.csv', fileEncoding = "UTF-8");
    
    #清洗空数据
    new_data <- na.omit(data)

    3、R中空格值的处理

    trim函数的作用:用于清除字符型数据前后的空格。

    trim函数的语法:trim(x)

    注意:

    1、trim函数来自raster包,使用前,先使用library(raster)引入该包;

    2、如果还没有安装该包,则需先使用install.packages("raster")安装;

    #空格数据清洗
    data <- read.csv('1.csv');
    
    install.packages('raster', repos='http://cran.r-project.org');
    library(raster);
    
    #空格值处理
    new_data <- trim(data)

    注意install.packages('raster', repos='http://cran.r-project.org')

    使用R.studio的小伙伴,在下载包很慢的的时候,可以使用R的官网站点,在中国地区会快很多,以解决此问题。


    展开全文
  • 20.数据预处理之重复值处理

    万次阅读 2020-02-09 22:03:10
    数据清洗一般是现从重复值和缺失值开始处理的 重复值一般采用删除法来处理 但有些重复值不能删除,例如订单明细数据或交易明细数据等 #使用duplicated()方法判断数据是否重复 df[df.duplicated()] np.sum(df....
  • #删除列表中的重复的值,保留重复值的第一个值 s=[1,2,3,2,9,2,4,8,3,5,5,6,3,8,3,6,7,8] print(s) #print(l.count(9)) i=0 while i(s): if s.count(i)>1: pos=s.index(s[i]) print("pos:",pos)
  • 1.1 重复值处理 把数据结构中,行相同的数据只保留一行。 函数语法: drop_duplicates() 删除重复值newdf=df.drop_duplicates() from pandas import read_csv df = read_csv('D://PDA//4.3//data.csv') df #找...
  • 在录入EXCEL表格时,如果数据过多,会出现重复录入的数据,也就是重复值。如何查看EXCEL表格里是否存在重复值以及把这些重复值查找出来呢?今天小编教给大家一个小技巧: 第一步、新建一个EXCEL 第二步、打开新建的...
  • 查询不重复值总数 select count(distinct lieming ) from table where tiaojian=1 查询不重复值具体值 select distinct lieming from table where tiaojian=1
  • 找出不重复值 Sub 找出选定范围内不重复的值() On Error Resume Next Dim d As Object Set d = CreateObject("scripting.dictionary") For c_i = 1 To selection.Columns.Count For Each ce In selection....
  • pandas如何去除重复值

    万次阅读 2020-02-17 10:16:06
    pandas如何去除重复值 在我们做数据分析时,我们所要处理的数据中难免会出现重复的数据,有些是我们需要的,有些是我们不需要的,甚至还会影响我们接下来数据分析的准确度。接下来,给大家介绍去除重复值的方法。 ...
  • 第一种将重复值全部替换,这里的重复字段为TERMINATION_DATE WITH TEMP AS ( --查询要查出的所有字段 SELECT EMP_ID,FULL_NAME,TERMINATION_DATE,LAST_UPDATE_DATE,DIV_CODE FROM ML_ATT_TERMINATION_EMP ), ...
  • oracle查询/去除重复值

    万次阅读 2018-09-25 19:24:09
    重复值 查找重复值 select c1, c2, count(*) cnt from t group by (c1, c2) having count(*) &amp;amp;amp;amp;gt; 1;
  • Tableau去除重复值

    万次阅读 2018-07-19 10:36:53
    在工作表区域左边目录“记录数”右边选择编辑,输入下列函数 {fixed A:countd(B)},在维度A下对指标B进行去重,即可去除重复值计数。
  • Excel使用过程中,有很多场合都需要获取一组数据的不重复值。获取不重复值的方法有很多,例如高级筛选法、透视表法、基础操作法和公式法。本例分别向大家介绍这四种方法如何使用。 工具/原料 Excel 高级筛选...
  • mysql 重复字段查询及排除重复值

    千次阅读 2014-09-16 18:11:31
    转载链接:http://blog.sina.com.cn/s/blog_3edc5e2e010131ys.html mysql 重复字段查询及排除重复值
  • Excel 多条件 比对 查询 多个 重复值

    千次阅读 2019-12-03 20:52:49
    工作经常需要用excel处理 2个条件比对查找重复值(3个条件比对查找重复值,4个条件比对查找重复值) 老是写公式太麻烦,干脆自己做了一个工具,只需复制表格,点击按钮一键完成。 说明:多条件比对查找多个值,且可...
  • 如何在excel表格中查找重复值

    万次阅读 2018-01-29 20:35:11
    一、使用Excel->开始->条件格式->突出显示单元格规则->重复值 1、打开Excel表,选定需要筛选的数据 2、点击”开始”选项卡->”条件格式”->在弹出的菜单中点击->”突出显示单元格规则”->”重复值” 3、在弹...
  • pandas统计重复值次数

    千次阅读 2019-04-26 21:39:13
    pandas统计数据项重复值次数和删除 转:https://blog.csdn.net/qq_35203425/article/details/80830911 Pandas学习笔记之重复数据统计 https://blog.csdn.net/lansecheng/article/details/75085675 Pandas数据...
  •  在数据清洗过程中,主要处理的是缺失值,异常值和重复值。所谓清洗,是对数据进行丢弃,填充,替换,去重等操作,实现去除异常,纠正错误,补足缺失的目的。 1. 数据列缺失的4种处理方法  数据缺失分为2种: 行...
  • Jupyter 数据重复值处理

    千次阅读 2020-03-03 11:22:35
    import os import pandas as pd import numpy as np os.chdir('D:\Workspaces\Jupyter') df = pd.read_excel('data_test.xlsx') df # 重复的是true df.duplicated() ...# 按照这两项查是否有重复值 df.duplic...
  • 重复值处理duplicated()

    千次阅读 2020-07-09 20:30:50
    重复值标记为True,否则标为False,默认后面出现的被标记为True duplicated(subset=None, keep='first') # subset:用于识别重复出现的列标签或列标签序列,默认识别所有的列标签 # keep: 删除重复项并保留第一次出现...
  • 用kettle处理重复值和空缺值

    千次阅读 2015-11-10 19:22:16
    原来的文档是这样的 此处是重复 ...过滤记录为除去空缺值,而Unique rows则是除去重复值 处理完成后为 重复的值自然也没有啦 此方法只是我自己的想法,如果有好的想法,还希望彼此交流下
  • 将日常工作中遇到的数据异常值处理的方法进行总结,其中主要包括 缺失值,离群值、重复值 等处理方式思路,并且长期更新。 在数据清理过程中,主要处理是缺失值,离群值和重复值。所谓清理是指对数据集进行丢弃,...
  • Java 查询List中的重复值

    万次阅读 2018-08-27 16:51:04
    查询List中重复值   public class Test { public static void main(String[] args) { List&lt;String&gt; strings = new ArrayList&lt;&gt;(); strings.add("1"); strings.add...
  • stream筛选出集合中对象属性重复值

    万次阅读 2019-09-23 19:02:08
    stream筛选出集合中对象属性重复值 字符串集合筛选 List<String> strings = Arrays.asList("a", "bb", "cc", "aa", "bb", "dd", "cc"); List<String> result = new ArrayList<>(); Map<...
  • 1、选中要对比的2列 2、选择开始-条件格式-突出显示单元格规则-重复值 3、设置规则,确定 4、重复值显示 5、唯一值显示
  • 3.1 数据清洗:缺失值、异常值和重复值的处理-2代码实操说明:本文是《Python数据分析与数据化运营》中的“3.1 数据清洗:缺失值、异常值和重复值的处理-2 代码实操部分”。-----------------------------下面是正文...
  • B+树重复值问题

    千次阅读 2017-06-05 20:30:26
    B+树可以存在重复值,方法是用“溢出页”来处理重复出现的值。
  • JS数组不添加重复值 & 删除指定值

    千次阅读 2019-03-01 16:25:10
    JS数组的push没法判断重复值就不添加了,所以写了个这个方法 直接在数组上使用即可 Array.prototype.push_unique = function () { for (var i = 0; i &lt; arguments.length; i++) { var ele = arguments[i...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,787,522
精华内容 715,008
关键字:

重复值