使用Pandas实现清洗客户编码异常数据

 更新时间:2023年07月19日 15:54:49   作者:黄昏中起飞的猫头鹰  
在不同行业中,我们经常会遇到一个麻烦的问题:数据清洗,尤其是当我们需要处理客户编码异常数据时,下面小编就来和大家分享一下常用的解决办法吧

前言

在不同行业中,我们经常会遇到一个麻烦的问题:数据清洗。尤其是当我们需要处理客户编码异常数据时,这个问题变得尤为重要。想象一下,许多银行都是以客户为单位管理数据的,因此每个客户都有一个独特的编码。在处理这些数据时,我们常常会面临以下问题:

1.客户编码有一个为空,另一个不为空的情况。

2.客户编码存在多个不同的值。

3.客户编码为空。

针对这些令人头疼的问题,接下来我将详细介绍如何使用pandas清洗客户编码异常数据。

创建一个新的数据集

首先我们要创建一个新的数据集,这个数据集的目的是用来对客户的编码进行清洗。

import pandas as pd
import numpy as np
data = {
    '主键': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    'MDG编码': [np.nan, np.nan, 'A001', 'A002', np.nan, 'B001', 'B002', np.nan, 'C001', 'C002'],
    '客户名称': ['客户1', '客户1', '客户1', '客户2', '客户2', '客户3', '客户3', '客户4', '客户4', '客户4'],
    '证件号': ['111111', '111111', '111111', '222222', '222222', '333333', '333333', '444444', '444444', '444444'],
    '客户类型': ['类型1', '类型1', '类型1', '类型2', '类型2', '类型3', '类型3', '类型4', '类型4', '类型4']
}
yb = pd.DataFrame(data)
yb

输出

字符串空值转换

pandas识别空字符串为非空值,所以我们需要将编码为空的数据转换为pandas能识别的NaN。

yb.MDG编码.replace(to_replace=r'^\s*$', value=np.nan, regex=True, inplace=True)
cf = yb[(yb.duplicated(['客户名称'], keep=False)) & (yb.客户类型 != '类型1')] #只获取有重复的客户,减少需要处理的数据量
cf

输出:同上

构造分组函数、不同异常数据进行分组

cf['count'] = np.nan
cf.sort_values(by=['客户名称','MDG编码'],inplace=True)
def abc(x):
    df = set(x[x.notnull()])
    if len(df)==1:
        if len(set(x))>1:
            return 2
        else:
            return 1
    elif len(df)>=2:
        return 3
cf['count'] = cf.groupby(['客户名称'])['MDG编码'].transform(abc)
cf

输出

这段代码的作用是在DataFrame(cf)中创建一个新的列count,然后根据'客户名称''MDG编码'对DataFrame进行排序。接下来,定义了一个函数abc(x)

该函数首先将非空值存储在一个集合df中。如果集合df中的元素个数为1,且字段x中的不同值个数多于1个,则返回2。如果集合df中的元素个数为1,且字段x中的不同值个数只有1个,则返回1。如果集合df中的元素个数大于等于2,则返回3。

最后,使用cf.groupby(['客户名称'])['MDG编码'].transform(abc)将函数abc应用到分组后的cf DataFrame的'MDG编码'列中,并将结果赋值给cf'count'列。

查询正确的客户编码

#查询mdg编码正确的数据
cf2 = cf[cf['count']==2]
cf1 = cf2.loc[cf2.MDG编码.notnull()]
cf1 = cf1.drop_duplicates('客户名称')  #mdg编码不为空,且mdg编码正确的数据
cf1

输出

获取需要修改的异常客户的id

将mdg编码为空的客户 与 正确MDG编码的客户进行匹配,获取需要修改的客户数据

cf3 = cf2[cf2.MDG编码.isnull()].merge(cf1[['客户名称','MDG编码']],how='left',on='客户名称')
cf3 = cf3[['主键','MDG编码_y','客户名称','证件号','客户类型','MDG编码_x']]
cf3  #MDG编码_y为正确编码,主键为需要修改的id

输出

上述情况是相同客户有一个正确编码和一个编码为空的情况,对于相同客户有两个及两个以上不同编码的情况,使用下述方法查询:

cf[cf['count']==3] #多个不相等mdg编码

输出

这类数据由于编码有多个不相同,需要根据业务进一步核实

总结

本文主要介绍了在 pandas中清洗客户编码异常数据的方法,使用这个方法我们可以快速的清洗客户编码异常数据。那么如果你想要对这个方法进行优化的话,我们还可以对数据进行清洗。比如说我们可以对原始数据进行一次排序,然后在排序后的数据中寻找是否存在空值、重复值和重复编码等问题。

以上就是使用Pandas实现清洗客户编码异常数据的详细内容,更多关于Pandas清洗异常数据的资料请关注脚本之家其它相关文章!

相关文章

  • Python使用Spire.XLS for Python实现高效读取Excel数据

    Python使用Spire.XLS for Python实现高效读取Excel数据

    在当今数据驱动的世界中,Python 已成为数据处理和分析的首选工具,本文将介绍如何使用Spire.XLS for Python高效读取Excel数据,感兴趣的小伙伴可以了解下
    2025-12-12
  • 详解Python类和对象内容

    详解Python类和对象内容

    Python遵循面向对象的编程范式。它处理声明python类,从它们创建对象并与用户交互。在面向对象的语言中,程序被分成独立的对象,或者你可以说成几个小程序。每个对象代表应用程序的不同部分,它们可以相互通信。类是对客观世界中事物得抽象,而对象是类实例化后的实体
    2021-06-06
  • Python实现多线程下载文件的代码实例

    Python实现多线程下载文件的代码实例

    这篇文章主要介绍了Python实现多线程下载文件的代码实例,需要的朋友可以参考下
    2014-06-06
  • Python多个MP4合成视频的实现方法

    Python多个MP4合成视频的实现方法

    最近接触了个项目,需要把多个文件合成一个视频,本文主要使用Python把多个MP4合成视频,感兴趣的可以了解一下
    2021-07-07
  • 使用Python将PPT的幻灯片和形状转为多种图片格式

    使用Python将PPT的幻灯片和形状转为多种图片格式

    这篇文章主要为大家详细介绍了如何使用Python 将PPT幻灯片和形状转换为多种图片格式,即JPG, PNG, BMP, SVG, TIFF,需要的可以参考下
    2025-02-02
  • 使用Python和大模型进行数据分析和文本生成

    使用Python和大模型进行数据分析和文本生成

    Python语言以其简洁和强大的特性,成为了数据科学、机器学习和人工智能开发的首选语言之一,在这篇文章中,我将介绍如何用Python连接和使用大模型,并通过示例展示如何在实际项目中应用这些技术,需要的朋友可以参考下
    2024-05-05
  • python-django中的APPEND_SLASH实现方法

    python-django中的APPEND_SLASH实现方法

    这篇文章主要介绍了python-django中的APPEND_SLASH实现方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • pyspark对Mysql数据库进行读写的实现

    pyspark对Mysql数据库进行读写的实现

    这篇文章主要介绍了pyspark对Mysql数据库进行读写的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Python实现LRU算法

    Python实现LRU算法

    这篇文章主要为大家详细介绍了Python实现LRU缓存置换算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 如何通过雪花算法用Python实现一个简单的发号器

    如何通过雪花算法用Python实现一个简单的发号器

    这篇文章主要介绍了如何通过雪花算法用Python实现一个简单的发号器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07

最新评论