python 基础-----list查找重复值

刚开始学python,在数据分析中遇到的基础需求,做一个记录。

需求1:假设df1、df2两个数据集中分别有A、B列数据,需要判断A、B列的数据是否有差异,并显示差异的数据。

需求2:假设有某列数据,需要判断该列数据是否包含重复项,包含的重复项是什么,重复了多少次。

一、需求1解决

1. 生成数据集

import numpy as np
import pandas as pd

df1=pd.DataFrame(np.arange(20).reshape(10,2),columns=list('AN'))
df1.iloc[6,0]=4

df2=pd.DataFrame(np.arange(30).reshape(5,6),columns=list('ABCDEF'))

>>>df1
    A   N
0   0   1
1   2   3
2   4   5
3   6   7
4   8   9
5  10  11
6   4  13
7  14  15
8  16  17
9  18  19
>>>df2
    A   B   C   D   E   F
0   0   1   2   3   4   5
1   6   7   8   9  10  11
2  12  13  14  15  16  17
3  18  19  20  21  22  23
4  24  25  26  27  28  29

2. 提取需要匹配的列(假设df1中A列,df2中A列)

df1_A=df1.iloc[:,0]  # 提取df1中的第1列,生成series df1_A
df2_A=df2.iloc[:,0]  # 提取df2中的第1列,生成series df2_A

>>> df1_A
0     0
1     2
2     4
3     6
4     8
5    10
6     4
7    14
8    16
9    18
Name: A, dtype: int32
>>> df2_A=df2.iloc[:,0]
0     0
1     6
2    12
3    18
4    24
Name: A, dtype: int32

3. 判断是否重合

AA = set(df1_A) #df1中被判断的列的集合
BB = set(df2_A) #df2中被判断的列的集合
>>> AA
{0, 2, 4, 6, 8, 10, 14, 16, 18}
>>> BB
{0, 6, 12, 18, 24}

AB=AA&BB    #df1和df2共有的数据
>>> AB
{0, 6, 18}

>>> AA-BB  #df1有,df2没有的数据
{2, 4, 8, 10, 14, 16}
>>> BB-AA  #df1没有,df2有的数据
{12, 24}
>>> len(AB)==len(AA)
False   #如果true,df2的A列数据包含df1的A列数据
>>> len(AB)==len(BB)
False   #如果true,df1的A列数据包含df2的A列数据

二、需求2解决

1. 数据样例

"""
以df1的第1列数据为例进行该列的重复值查找
"""

>>>df1_A
0     0
1     2
2     4
3     6
4     8
5    10
6     4
7    14
8    16
9    18
Name: A, dtype: int32

2. 样例编写

from collections import Counter
datac=Counter(df1_A)   #生成集合,key值是df1_A的各元素,value值是各元素在df1_A中出现的次数。若value不等于1,则是重复值

"""
编写一个导出重复值的数据(list形式)的函数
"""
repectlist=[] #重复元素
repectdic={}  #重复元素的字典:key值是重复的元素,value是重复次数统计
uniqlist=[]   #不重复的元素

for key, val in datac.items():
    if val != 1:
        repectlist.append(key)
        repectdic.update({key : val})
    else:
        uniqlist.append(key)

3. 结果输出验证

如果:重复的元素列表的长度len()是0,则df1_A列没有重复元素

>>> print(repectlist)
[4]                            #重复的元素列表
>>> print(uniqlist)
[0, 2, 6, 8, 10, 14, 16, 18]   #不重复的元素列表
>>> print(repectdic)
{4: 2}                         #重复的元素及对应的出现次数

>>> len(repectlist)
1

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值