• 2021-04-12 15:32:10

一、判断是否有重复值

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)

更多相关内容
• 数据清洗重复值处理

# 重复值处理

• 数据清洗一般先从重复值和缺失值开始处理
• 重复值一般采取删除法来处理
• 但有些重复值不能删除，例如订单明细数据或交易明细数据等
import pandas as pd
import numpy as np
import os

os.getcwd()

'D:\\Jupyter\\notebook\\Python数据清洗实战\\数据清洗之数据预处理'

os.chdir('D:\\Jupyter\\notebook\\Python数据清洗实战\\数据')

df = pd.read_csv('MotorcycleData.csv', encoding='gbk', na_values='Na')

df.head(5)

0Usedmint!!! very low miles$11,412McHenry, Illinois, United States2013.016,000BlackHarley-DavidsonUnspecifiedTouring...NaNFALSE8.1NaN2427Private SellerClearTrueFALSE28.0 1UsedPerfect condition$17,200Fort Recovery, Ohio, United States2016.060BlackHarley-DavidsonVehicle has an existing warrantyTouring...NaNFALSE10017657Private SellerClearTrueTRUE0.0
2UsedNaN$3,872Chicago, Illinois, United States1970.025,763Silver/BlueBMWVehicle does NOT have an existing warrantyR-Series...NaNFALSE100NaN136NaNClearTrueFALSE26.0 3UsedCLEAN TITLE READY TO RIDE HOME$6,575Green Bay, Wisconsin, United States2009.033,142RedHarley-DavidsonNaNTouring...NaNFALSE100NaN2920DealerClearTrueFALSE11.0
4UsedNaN$10,000West Bend, Wisconsin, United States2012.017,800BlueHarley-DavidsonNO WARRANTYTouring...NaNFALSE10013271OWNERClearTrueTRUE0.0 5 rows × 22 columns def f(x): if '$' in str(x):
x = str(x).strip('$') x = str(x).replace(',', '') else: x = str(x).replace(',', '') return float(x)  df['Price'] = df['Price'].apply(f)  df['Mileage'] = df['Mileage'].apply(f)  df.head(5)  ConditionCondition_DescPriceLocationModel_YearMileageExterior_ColorMakeWarrantyModel...Vehicle_TitleOBOFeedback_PercWatch_CountN_ReviewsSeller_StatusVehicle_TileAuctionBuy_NowBid_Count 0Usedmint!!! very low miles11412.0McHenry, Illinois, United States2013.016000.0BlackHarley-DavidsonUnspecifiedTouring...NaNFALSE8.1NaN2427Private SellerClearTrueFALSE28.0 1UsedPerfect condition17200.0Fort Recovery, Ohio, United States2016.060.0BlackHarley-DavidsonVehicle has an existing warrantyTouring...NaNFALSE10017657Private SellerClearTrueTRUE0.0 2UsedNaN3872.0Chicago, Illinois, United States1970.025763.0Silver/BlueBMWVehicle does NOT have an existing warrantyR-Series...NaNFALSE100NaN136NaNClearTrueFALSE26.0 3UsedCLEAN TITLE READY TO RIDE HOME6575.0Green Bay, Wisconsin, United States2009.033142.0RedHarley-DavidsonNaNTouring...NaNFALSE100NaN2920DealerClearTrueFALSE11.0 4UsedNaN10000.0West Bend, Wisconsin, United States2012.017800.0BlueHarley-DavidsonNO WARRANTYTouring...NaNFALSE10013271OWNERClearTrueTRUE0.0 5 rows × 22 columns df.info()  <class 'pandas.core.frame.DataFrame'> RangeIndex: 7493 entries, 0 to 7492 Data columns (total 22 columns): Condition 7493 non-null object Condition_Desc 1656 non-null object Price 7493 non-null float64 Location 7491 non-null object Model_Year 7489 non-null float64 Mileage 7467 non-null float64 Exterior_Color 6778 non-null object Make 7489 non-null object Warranty 5108 non-null object Model 7370 non-null object Sub_Model 2426 non-null object Type 6011 non-null object Vehicle_Title 268 non-null object OBO 7427 non-null object Feedback_Perc 6611 non-null object Watch_Count 3517 non-null object N_Reviews 7487 non-null object Seller_Status 6868 non-null object Vehicle_Tile 7439 non-null object Auction 7476 non-null object Buy_Now 7256 non-null object Bid_Count 2190 non-null float64 dtypes: float64(4), object(18) memory usage: 1.3+ MB  any(df.duplicated())  True  # 显示重复数据 # df[df.duplicated()]  # 统计重复数据 np.sum(df.duplicated())  1221  # 删除重复值 df.drop_duplicates(inplace=True)  df.columns  Index(['Condition', 'Condition_Desc', 'Price', 'Location', 'Model_Year', 'Mileage', 'Exterior_Color', 'Make', 'Warranty', 'Model', 'Sub_Model', 'Type', 'Vehicle_Title', 'OBO', 'Feedback_Perc', 'Watch_Count', 'N_Reviews', 'Seller_Status', 'Vehicle_Tile', 'Auction', 'Buy_Now', 'Bid_Count'], dtype='object')  # 根据指定变量判断重复值 df.drop_duplicates(subset=['Condition', 'Condition_Desc', 'Price', 'Location'], inplace=True)  # 重复已经被删除 np.sum(df.duplicated())  0  展开全文 • 1、重复值的识别 1.1 DataFrame识别重复值-duplicated() 1.2 Serier识别重复值-is_unique 2、统计重复行的数量-duplicated().sum() 3、重复值的处理 0、前言 在实际数据采集、数据处理和数据分析中，经常会... 目录 0、前言 1、重复值的识别 1.1 DataFrame识别重复值-duplicated() 1.2 Serier识别重复值-is_unique 2、统计重复行的数量-duplicated().sum() 3、重复值的处理 # 0、前言 在实际数据采集、数据处理和数据分析中，经常会遇到的一个问题就是：重复数据。重复数据在进行数据分析或数据挖掘的过程中，对其输出结果有重要的影响。比如，在逻辑回归分析中，重复数据会影响模型的拟合优度；数据分析中，重复数据会影响预测内容准确性。所以，处理重复值数据有着重要的意义和作用。 # 1、重复值的识别 ## 1.1 DataFrame识别重复值-duplicated() data.duplicated() data.duplicated("sex") ## 1.2 Serier识别重复值-is_unique import pandas as pd s = pd.Series(range(5),index=['a','a','b','b','c']) s.index.is_unique # 2、统计重复行的数量-duplicated().sum() data.duplicated().sum() # 3、重复值的处理 数据去重是处理重复值的主要方法，但如下几种情况慎重去重： （1）样本不均衡时，故意重复采样的数据； （2）分类模型，某个分类训练数据过少，可以采取简单复制样本的方法来增加样本数量 重复记录用户检测业务规则问题 （3）事务型数据，尤其与钱相关的业务场景下出现重复数据时，如重复订单，重复出库申请 data.drop_duplicates() data.drop_duplicates(["age"]) #删除数据中指定列值相同的记录 展开全文 • 用pandas进行数据分析之前，必须先对缺失值、重复值和异常值进行处理。本文记录了重复值的检测与处理方法。 # 系列文章目录 ### Python数据分析入门笔记 # 前言 pandas可以用isnull()，isna()，notnull()和notna()四个方法来检测缺失值。 若要直观地统计表中各列的缺失率，可以用自定义函数或者missingno库来实现。 1. 如果缺失数据只有个别几个，可以直接用dropna()方法按行删除； 例如：要从一个DataFrame中，删掉列1内容为NaN或者列2内容为NaN的行，并且删除后覆盖更新原数据 DataFrame名称.dropna(axis=0, subset=[‘列1’,‘列2’], inplace=True) 1. 如果这一列80%以上数据都缺失，可以考虑用drop()方法直接删除这一列； 例如：要从一个DataFrame中，列1和列2中缺失了绝大部分数据，那么可以用axis=1来代表删除列 DataFrame名称.drop(axis=1, subset=[‘列1’,‘列2’]) 1. 如果缺失数据的这列，数据不是时间序列类型，那可以直接用默认值或者统计值来填充； 例如：将这个DataFrame对象中的所有缺失值都填充为缺失值前面的值。 DataFrame名称.fillna(method=‘ffill’) 1. 如果缺失数据的这一列是时间序列类型，通常用线性插补法来插补数据。 例如：结合线性插值法对这个DataFrame对象中的缺失值进行插补。 DataFrame名称.interpolate(method=‘linear’) # 一、重复值的检测 pandas中使用duplicated()方法来检测数据中的重复值。检测完数据后会返回一个由布尔值组成的Series类对象，该对象中若包含True，说明该值对应的一行数据为重复项。 DataFrame.duplicated(subset=None, keep=‘first’) 参数说明取值和解释 subset表示识别重复项的列索引或列索引序列。默认标识所有的列索引 keep表示采用哪种方式保留重复项。‘first’，默认值，删除重复项，仅保留第一次出现的数据项。 ‘last’，删除重复项，仅保留最后一次出现的数据项。 ‘False’，表示将所有相同的数据都标记为重复项。 用法如下： import pandas as pd import numpy as np stu_info=pd.DataFrame({'序号':['S1','S2','S3','S4','S4'], '姓名':['张三','李四','王五','赵六','赵六'], '性别':['男','男','女','男','男'], '年龄':[15,16,15,14,14], '住址':['苏州','南京',np.nan,np.nan,np.nan]}) # 检测stu_info对象中的重复值 stu_info.duplicated()  原始数据： 输出结果： 对比两次结果，我们能发现，行索引号为4的数据和行索引号为3的数据完全相同，所以我们调用duplicated()方法会默认保留第一次出现的数据，将后面出现的重复值标记为True。 若想筛选出重复值标记为True的所有数据，可以用如下代码： # 筛选stu_info中重复值标记为True的数据记录 stu_info[stu_info.duplicated()]  运行结果如下： # 二、重复值的处理 对于重复值，pandas中一般使用drop_duplicates()方法删除重复值。 DataFrame.drop_duplicates(subset=None, keep=‘first’, inplace=False, ignore_index=False) 参数说明： 参数说明取值和解释 subset表示删除重复项的列索引或列索引序列，默认删除所有的列索引。 keep表示采用哪种方式保留重复项。‘first’，默认值，删除重复项，仅保留第一次出现的数据项。 ‘last’，删除重复项，仅保留最后一次出现的数据项。 ‘False’，表示将所有相同的数据都标记为重复项。 inplace表示是否放弃副本数据，返回新的数据，默认为FalseTrue，放弃副本，更新原数据。 False，不更新原数据。 ignore_index表示是否对删除重复值后的对象的行索引重新排序，默认为False。True，重新排序。 False，不重新排序。 用法如下： # 删除stu_info对象中的重复值 stu_info.drop_duplicates()  执行结果： 我们可以看出，行索引为4的一行数据被删除了。 # 总结 重复值的检测与处理比较简单。 展开全文 • 二、重复值 获取数据源的时候可能因为各种原因会导致获取到完全重复的数据，对于这样的数据我们没必要进行重复统计，因此需要找出重复值并删除，这里也提供3种寻找重复值的思路：countif函数、条件格式和数据透视表... • 前言 使用Pandas进行数据预处理时需要了解Pandas的基础数据结构Series和DataFrame。若是还不清楚的可以再去看看我之前的三篇博客...本文承接上一篇：一文速学-Pandas处理缺失操作各类方法详解 此篇博客基于Jup.. • subset：如果你认为几个字段重复，则数据重复，就把那几个字段以列表形式放到subset后面。默认是所有字段重复重复数据。 keep: 默认为’first’ ,也就是如果有重复数据，则第一条出现的定义为False，后面的重复... • 住院号 姓名 等唯一值变量的检查与筛选 重复值所在的行 使用本地数据 鸢尾花（yuān wěi huā）做示例 #加载内置数据 data(iris) data=iris #因为iris这里没有唯一的ID,像姓名，住院号no.. #手动生成一个 no,代表... • 出现次数结果列 1 =COUNTIF($B$3:B3,B3) 1 1 =COUNTIF($B$3:B4,B4) 2 1 =COUNTIF($B\$3:B5,B5) 3 等于1的统计结果就表示①在选择区域中是唯一个值②在选择的列当中属于唯一的值③在列当中属于首次出现的重复值 ...
• 重复值处理——删除（有几个相同就删除还是全部得相同） 缺失值处理——删除，填充（均值，众数，中位数，前后相邻值），插值（拉格朗日插值，牛顿插值） 异常值处理——describe进行描述性分析+散点图+箱型图定位...
• 01数据列缺失的4种处理方法数据缺失分为两种：一种是行记录的缺失，这种情况又称数据记录丢失；另一种是数据列的缺失，即由于各种原因导致的数据记录中某些列的空缺。不同的...
•         ...其中，前者用于标记是否有重复值，后者用于删除重复值，它们的判断标准是一样的，即只要两条数据中所有条目的值完全相等，就判断为重复值。 ...
•  在数据清洗过程中，主要处理的是缺失值，异常值和重复值。所谓清洗，是对数据进行丢弃，填充，替换，去重等操作，实现去除异常，纠正错误，补足缺失的目的。 1. 数据列缺失的4种处理方法  数据缺失分为2种： 行...
• Pandas DataFrame.drop_duplicates() 删除重复值
• 什么是重复值顾名思义，重复值是指一组数据中有重复记录，去除这些重复的记录就叫去除重复值，具体有两种情况：源数据如图去重后结果一：所有在源数据中出现过二次及以上的记录均已经去除，结果二指，结果数据表示...
• 将日常工作中遇到的数据异常值处理的方法进行总结，其中主要包括 缺失值，离群值、重复值 等处理方式思路，并且长期更新。 在数据清理过程中，主要处理是缺失值，离群值和重复值。所谓清理是指对数据集进行丢弃，...
• 导读：在数据清洗过程中，主要处理的是缺失值、异常值和重复值。所谓清洗，是对数据集通过丢弃、填充、替换、去重等操作，达到去除异常、纠正错误、补足缺失的目的。作者：宋天龙如需...
• 在处理字典时，我们可能会遇到这样的情况：字典中存在重复的...这样，重复值就可以合并在一起，我们可以在生成的新字典中看到它们。示例dictA={'Sun':5,'Mon':3,'Tue':5,'Wed':3}print("给定字典：",dictA)k_v_exch...
• list.index( )获得的索引，但是如果list中含有的一样，例如含有两个11,22，这样每次获得的都是第一个的位置。那么怎么去解决这个问题呢？下面的程序对这个问题做了一定的解答#!/usr/bin/env python# -*- ...
• Duplicated函数功能：查找并显示数据表中的重复值 这里需要注意的是： 当两条记录中所有的数据都相等时duplicated函数才会判断为重复值 duplicated支持从前向后(first)，和从后向前(last)两种重复值查找模式 ...
• Excel中的重复值具体该如何去掉呢?接下来是学习啦小编为大家带来的excel 去掉重复值的函数用法，供大家参考。excel 去掉重复值的函数用法函数去掉重复值步骤1：这里在D2单元格输入一串函数组合，可以用复制粘贴。=IF...
• 缺失处理 Pandas数据对象中的缺失表示为NaN。 import pandas as pd # 读取杭州天气文件 df = pd.read_csv("E:/Data/practice/hz_weather.csv") # 数据透视表 df1 = pd.pivot_table(df, index=['天气...
• Python读取CSV，将csv数据中的重复值进行统计，统计之后删除重复内容，只保留第一次出现的值 # -- coding: utf-8 -- import os import numpy as np import pandas as pd import time start=time.time() #用于...
• 3.1 数据清洗：缺失值、异常值和重复值的处理-2代码实操说明：本文是《Python数据分析与数据化运营》中的“3.1 数据清洗：缺失值、异常值和重复值的处理-2 代码实操部分”。-----------------------------下面是正文...
• year这一列有重复的年份，但是我想只保留一个重复值，怎么办? 解决办法：选中数据后，点击“数据”下的“删除重复值”，然后在弹出的对话框，只选择“year”列 结果如下： 但是有没有发现，默认是把重复...
• 检测与处理重复值 (1) 记录重复 '''series: ser.drop_duplicates() # 没有subset参数 dataframe: df.drop_duplicates(subset=['','']) 一般偶会传入subset, 根据subset中的键判断元素是否一致,如果一致,则数据重复--...
• 处理重复值, 使用drop_duplicates()方法; 其具体用法是: dataframe.drop_duplicates(subset=‘列1’) 表示删除dataframe中列1中有重复的值所在的行 并保留重复值中第一行 import pandas as pd data_list = pd....
• 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...
• python删除列表重复值In python, the values that evaluate to False are considered Falsy values. The values are False, None, 0 and "". 在python中，评估为False的值被视为Falsy值。 值为False ， None ， 0和...
• pandas如何去除重复值 在我们做数据分析时，我们所要处理的数据中难免会出现重复的数据，有些是我们需要的，有些是我们不需要的，甚至还会影响我们接下来数据分析的准确度。接下来，给大家介绍去除重复值的方法。 ...

...