-
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)
更多相关内容 -
数据清洗之 重复值处理
2020-04-19 10:25:23数据清洗重复值处理重复值处理
- 数据清洗一般先从重复值和缺失值开始处理
- 重复值一般采取删除法来处理
- 但有些重复值不能删除,例如订单明细数据或交易明细数据等
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)
Condition Condition_Desc Price Location Model_Year Mileage Exterior_Color Make Warranty Model ... Vehicle_Title OBO Feedback_Perc Watch_Count N_Reviews Seller_Status Vehicle_Tile Auction Buy_Now Bid_Count 0 Used mint!!! very low miles $11,412 McHenry, Illinois, United States 2013.0 16,000 Black Harley-Davidson Unspecified Touring ... NaN FALSE 8.1 NaN 2427 Private Seller Clear True FALSE 28.0 1 Used Perfect condition $17,200 Fort Recovery, Ohio, United States 2016.0 60 Black Harley-Davidson Vehicle has an existing warranty Touring ... NaN FALSE 100 17 657 Private Seller Clear True TRUE 0.0 2 Used NaN $3,872 Chicago, Illinois, United States 1970.0 25,763 Silver/Blue BMW Vehicle does NOT have an existing warranty R-Series ... NaN FALSE 100 NaN 136 NaN Clear True FALSE 26.0 3 Used CLEAN TITLE READY TO RIDE HOME $6,575 Green Bay, Wisconsin, United States 2009.0 33,142 Red Harley-Davidson NaN Touring ... NaN FALSE 100 NaN 2920 Dealer Clear True FALSE 11.0 4 Used NaN $10,000 West Bend, Wisconsin, United States 2012.0 17,800 Blue Harley-Davidson NO WARRANTY Touring ... NaN FALSE 100 13 271 OWNER Clear True TRUE 0.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)
Condition Condition_Desc Price Location Model_Year Mileage Exterior_Color Make Warranty Model ... Vehicle_Title OBO Feedback_Perc Watch_Count N_Reviews Seller_Status Vehicle_Tile Auction Buy_Now Bid_Count 0 Used mint!!! very low miles 11412.0 McHenry, Illinois, United States 2013.0 16000.0 Black Harley-Davidson Unspecified Touring ... NaN FALSE 8.1 NaN 2427 Private Seller Clear True FALSE 28.0 1 Used Perfect condition 17200.0 Fort Recovery, Ohio, United States 2016.0 60.0 Black Harley-Davidson Vehicle has an existing warranty Touring ... NaN FALSE 100 17 657 Private Seller Clear True TRUE 0.0 2 Used NaN 3872.0 Chicago, Illinois, United States 1970.0 25763.0 Silver/Blue BMW Vehicle does NOT have an existing warranty R-Series ... NaN FALSE 100 NaN 136 NaN Clear True FALSE 26.0 3 Used CLEAN TITLE READY TO RIDE HOME 6575.0 Green Bay, Wisconsin, United States 2009.0 33142.0 Red Harley-Davidson NaN Touring ... NaN FALSE 100 NaN 2920 Dealer Clear True FALSE 11.0 4 Used NaN 10000.0 West Bend, Wisconsin, United States 2012.0 17800.0 Blue Harley-Davidson NO WARRANTY Touring ... NaN FALSE 100 13 271 OWNER Clear True TRUE 0.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
-
数据预处理之重复值
2022-01-28 14:06:481、重复值的识别 1.1 DataFrame识别重复值-duplicated() 1.2 Serier识别重复值-is_unique 2、统计重复行的数量-duplicated().sum() 3、重复值的处理 0、前言 在实际数据采集、数据处理和数据分析中,经常会...目录
1.1 DataFrame识别重复值-duplicated()
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"]) #删除数据中指定列值相同的记录
-
Python数据分析入门笔记4——数据预处理之重复值
2022-01-24 23:01:26用pandas进行数据分析之前,必须先对缺失值、重复值和异常值进行处理。本文记录了重复值的检测与处理方法。系列文章目录
Python数据分析入门笔记1——学习前的准备
Python数据分析入门笔记2——pandas数据读取
Python数据分析入门笔记3——数据预处理之缺失值
前言
pandas可以用isnull(),isna(),notnull()和notna()四个方法来检测缺失值。
若要直观地统计表中各列的缺失率,可以用自定义函数或者missingno库来实现。- 如果缺失数据只有个别几个,可以直接用dropna()方法按行删除;
例如:要从一个DataFrame中,删掉列1内容为NaN或者列2内容为NaN的行,并且删除后覆盖更新原数据
DataFrame名称.dropna(axis=0, subset=[‘列1’,‘列2’], inplace=True)- 如果这一列80%以上数据都缺失,可以考虑用drop()方法直接删除这一列;
例如:要从一个DataFrame中,列1和列2中缺失了绝大部分数据,那么可以用axis=1来代表删除列
DataFrame名称.drop(axis=1, subset=[‘列1’,‘列2’])- 如果缺失数据的这列,数据不是时间序列类型,那可以直接用默认值或者统计值来填充;
例如:将这个DataFrame对象中的所有缺失值都填充为缺失值前面的值。
DataFrame名称.fillna(method=‘ffill’)- 如果缺失数据的这一列是时间序列类型,通常用线性插补法来插补数据。
例如:结合线性插值法对这个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 表示是否放弃副本数据,返回新的数据,默认为False True,放弃副本,更新原数据。
False,不更新原数据。ignore_index 表示是否对删除重复值后的对象的行索引重新排序,默认为False。 True,重新排序。
False,不重新排序。用法如下:
# 删除stu_info对象中的重复值 stu_info.drop_duplicates()
执行结果:
我们可以看出,行索引为4的一行数据被删除了。
总结
重复值的检测与处理比较简单。
-
Excel数据处理(缺失值/重复值/异常值/拆分)
2021-04-22 18:13:45二、重复值 获取数据源的时候可能因为各种原因会导致获取到完全重复的数据,对于这样的数据我们没必要进行重复统计,因此需要找出重复值并删除,这里也提供3种寻找重复值的思路:countif函数、条件格式和数据透视表... -
一文速学-Pandas处理重复值操作各类方法详解+代码展示
2022-04-21 11:19:10前言 使用Pandas进行数据预处理时需要了解Pandas的基础数据结构Series和DataFrame。若是还不清楚的可以再去看看我之前的三篇博客...本文承接上一篇:一文速学-Pandas处理缺失值操作各类方法详解 此篇博客基于Jup.. -
pandas中DataFrame如何检测重复值
2021-05-25 15:09:19subset:如果你认为几个字段重复,则数据重复,就把那几个字段以列表形式放到subset后面。默认是所有字段重复为重复数据。 keep: 默认为’first’ ,也就是如果有重复数据,则第一条出现的定义为False,后面的重复... -
R语言 数据清洗 重复值所在的行 重复 的筛选与去除,唯一ID出现重复 no重复处理
2021-09-19 21:56:18住院号 姓名 等唯一值变量的检查与筛选 重复值所在的行 使用本地数据 鸢尾花(yuān wěi huā)做示例 #加载内置数据 data(iris) data=iris #因为iris这里没有唯一的ID,像姓名,住院号no.. #手动生成一个 no,代表... -
EXCEL 如何删除重复值,并保留重复值的第一个选项
2021-04-04 22:01:54出现次数结果列 1 =COUNTIF($B$3:B3,B3) 1 1 =COUNTIF($B$3:B4,B4) 2 1 =COUNTIF($B$3:B5,B5) 3 等于1的统计结果就表示①在选择区域中是唯一个值②在选择的列当中属于唯一的值③在列当中属于首次出现的重复值 ... -
Pandas数据分析②——数据清洗(重复值/缺失值/异常值)
2019-06-04 22:48:13重复值处理——删除(有几个相同就删除还是全部得相同) 缺失值处理——删除,填充(均值,众数,中位数,前后相邻值),插值(拉格朗日插值,牛顿插值) 异常值处理——describe进行描述性分析+散点图+箱型图定位... -
一文看懂数据清洗:缺失值、异常值和重复值的处理
2019-07-10 16:34:3101数据列缺失的4种处理方法数据缺失分为两种:一种是行记录的缺失,这种情况又称数据记录丢失;另一种是数据列值的缺失,即由于各种原因导致的数据记录中某些列的值空缺。不同的... -
pandas的重复值的处理
2020-11-14 22:17:17...其中,前者用于标记是否有重复值,后者用于删除重复值,它们的判断标准是一样的,即只要两条数据中所有条目的值完全相等,就判断为重复值。 ... -
数据清洗:缺失值,异常值和重复值的处理
2019-04-14 08:11:25在数据清洗过程中,主要处理的是缺失值,异常值和重复值。所谓清洗,是对数据进行丢弃,填充,替换,去重等操作,实现去除异常,纠正错误,补足缺失的目的。 1. 数据列缺失的4种处理方法 数据缺失分为2种: 行... -
[Pandas] DataFrame.drop_duplicates() 删除重复值
2022-02-14 11:20:51Pandas DataFrame.drop_duplicates() 删除重复值 -
Excel去除重复值方法汇总
2020-12-23 10:08:38什么是重复值顾名思义,重复值是指一组数据中有重复记录,去除这些重复的记录就叫去除重复值,具体有两种情况:源数据如图去重后结果一:所有在源数据中出现过二次及以上的记录均已经去除,结果二指,结果数据表示... -
「Python 数据处理基础」数据重复值的统计和处理2种常用方法
2021-07-04 16:20:00将日常工作中遇到的数据异常值处理的方法进行总结,其中主要包括 缺失值,离群值、重复值 等处理方式思路,并且长期更新。 在数据清理过程中,主要处理是缺失值,离群值和重复值。所谓清理是指对数据集进行丢弃,... -
一文看懂数据清洗:缺失值、异常值和重复值的处理
2019-07-08 21:15:00导读:在数据清洗过程中,主要处理的是缺失值、异常值和重复值。所谓清洗,是对数据集通过丢弃、填充、替换、去重等操作,达到去除异常、纠正错误、补足缺失的目的。作者:宋天龙如需... -
在Python中的字典中查找具有重复值的键
2021-01-29 15:13:51在处理字典时,我们可能会遇到这样的情况:字典中存在重复的...这样,重复值就可以合并在一起,我们可以在生成的新字典中看到它们。示例dictA={'Sun':5,'Mon':3,'Tue':5,'Wed':3}print("给定字典:",dictA)k_v_exch... -
获取python的list中含有重复值的index方法
2020-12-10 11:28:00list.index( )获得值的索引值,但是如果list中含有的值一样,例如含有两个11,22,这样每次获得的都是第一个值的位置。那么怎么去解决这个问题呢?下面的程序对这个问题做了一定的解答#!/usr/bin/env python# -*- ... -
python之重复值(duplicated)
2021-08-06 11:40:16Duplicated函数功能:查找并显示数据表中的重复值 这里需要注意的是: 当两条记录中所有的数据都相等时duplicated函数才会判断为重复值 duplicated支持从前向后(first),和从后向前(last)两种重复值查找模式 ... -
excel去掉重复值的函数用法
2020-12-23 10:08:33Excel中的重复值具体该如何去掉呢?接下来是学习啦小编为大家带来的excel 去掉重复值的函数用法,供大家参考。excel 去掉重复值的函数用法函数去掉重复值步骤1:这里在D2单元格输入一串函数组合,可以用复制粘贴。=IF... -
【Python学习笔记】42:Pandas数据缺失值/异常值/重复值处理
2018-11-14 15:19:49缺失值处理 Pandas数据对象中的缺失值表示为NaN。 import pandas as pd # 读取杭州天气文件 df = pd.read_csv("E:/Data/practice/hz_weather.csv") # 数据透视表 df1 = pd.pivot_table(df, index=['天气... -
python统计csv数据,计算重复数据次数,删除重复值
2021-10-24 20:24:01Python读取CSV,将csv数据中的重复值进行统计,统计之后删除重复内容,只保留第一次出现的值 # -- coding: utf-8 -- import os import numpy as np import pandas as pd import time start=time.time() #用于... -
数据清洗:缺失值、异常值和重复值的处理-2代码实操
2018-07-12 19:46:213.1 数据清洗:缺失值、异常值和重复值的处理-2代码实操说明:本文是《Python数据分析与数据化运营》中的“3.1 数据清洗:缺失值、异常值和重复值的处理-2 代码实操部分”。-----------------------------下面是正文... -
Excel:删除一列中的重复值
2021-09-27 14:51:53year这一列有重复的年份,但是我想只保留一个重复值,怎么办? 解决办法:选中数据后,点击“数据”下的“删除重复值”,然后在弹出的对话框,只选择“year”列 结果如下: 但是有没有发现,默认是把重复... -
python-数据分析-(12)pandas数据清洗、缺失值、重复值、异常值处理常见方法
2021-01-08 13:53:16检测与处理重复值 (1) 记录重复 '''series: ser.drop_duplicates() # 没有subset参数 dataframe: df.drop_duplicates(subset=['','']) 一般偶会传入subset, 根据subset中的键判断元素是否一致,如果一致,则数据重复--... -
删除重复值drop_duplicates()
2019-09-29 11:08:37处理重复值, 使用drop_duplicates()方法; 其具体用法是: dataframe.drop_duplicates(subset=‘列1’) 表示删除dataframe中列1中有重复的值所在的行 并保留重复值中第一行 import pandas as pd data_list = pd.... -
Jupyter 数据重复值处理
2020-03-03 11:22:35import 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删除列表重复值_从Python列表中删除虚假值
2020-07-21 18:44:22python删除列表重复值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如何去除重复值
2020-02-17 10:16:06pandas如何去除重复值 在我们做数据分析时,我们所要处理的数据中难免会出现重复的数据,有些是我们需要的,有些是我们不需要的,甚至还会影响我们接下来数据分析的准确度。接下来,给大家介绍去除重复值的方法。 ...