最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Pandas實(shí)現(xiàn)清洗客戶編碼異常數(shù)據(jù)

 更新時(shí)間:2023年07月19日 15:54:49   作者:黃昏中起飛的貓頭鷹  
在不同行業(yè)中,我們經(jīng)常會(huì)遇到一個(gè)麻煩的問題:數(shù)據(jù)清洗,尤其是當(dāng)我們需要處理客戶編碼異常數(shù)據(jù)時(shí),下面小編就來和大家分享一下常用的解決辦法吧

前言

在不同行業(yè)中,我們經(jīng)常會(huì)遇到一個(gè)麻煩的問題:數(shù)據(jù)清洗。尤其是當(dāng)我們需要處理客戶編碼異常數(shù)據(jù)時(shí),這個(gè)問題變得尤為重要。想象一下,許多銀行都是以客戶為單位管理數(shù)據(jù)的,因此每個(gè)客戶都有一個(gè)獨(dú)特的編碼。在處理這些數(shù)據(jù)時(shí),我們常常會(huì)面臨以下問題:

1.客戶編碼有一個(gè)為空,另一個(gè)不為空的情況。

2.客戶編碼存在多個(gè)不同的值。

3.客戶編碼為空。

針對(duì)這些令人頭疼的問題,接下來我將詳細(xì)介紹如何使用pandas清洗客戶編碼異常數(shù)據(jù)。

創(chuàng)建一個(gè)新的數(shù)據(jù)集

首先我們要?jiǎng)?chuàng)建一個(gè)新的數(shù)據(jù)集,這個(gè)數(shù)據(jù)集的目的是用來對(duì)客戶的編碼進(jìn)行清洗。

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'],
    '證件號(hào)': ['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

輸出

字符串空值轉(zhuǎn)換

pandas識(shí)別空字符串為非空值,所以我們需要將編碼為空的數(shù)據(jù)轉(zhuǎn)換為pandas能識(shí)別的NaN。

yb.MDG編碼.replace(to_replace=r'^\s*$', value=np.nan, regex=True, inplace=True)
cf = yb[(yb.duplicated(['客戶名稱'], keep=False)) & (yb.客戶類型 != '類型1')] #只獲取有重復(fù)的客戶,減少需要處理的數(shù)據(jù)量
cf

輸出:同上

構(gòu)造分組函數(shù)、不同異常數(shù)據(jù)進(jìn)行分組

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)中創(chuàng)建一個(gè)新的列count,然后根據(jù)'客戶名稱''MDG編碼'對(duì)DataFrame進(jìn)行排序。接下來,定義了一個(gè)函數(shù)abc(x)。

該函數(shù)首先將非空值存儲(chǔ)在一個(gè)集合df中。如果集合df中的元素個(gè)數(shù)為1,且字段x中的不同值個(gè)數(shù)多于1個(gè),則返回2。如果集合df中的元素個(gè)數(shù)為1,且字段x中的不同值個(gè)數(shù)只有1個(gè),則返回1。如果集合df中的元素個(gè)數(shù)大于等于2,則返回3。

最后,使用cf.groupby(['客戶名稱'])['MDG編碼'].transform(abc)將函數(shù)abc應(yīng)用到分組后的cf DataFrame的'MDG編碼'列中,并將結(jié)果賦值給cf'count'列。

查詢正確的客戶編碼

#查詢mdg編碼正確的數(shù)據(jù)
cf2 = cf[cf['count']==2]
cf1 = cf2.loc[cf2.MDG編碼.notnull()]
cf1 = cf1.drop_duplicates('客戶名稱')  #mdg編碼不為空,且mdg編碼正確的數(shù)據(jù)
cf1

輸出

獲取需要修改的異??蛻舻膇d

將mdg編碼為空的客戶 與 正確MDG編碼的客戶進(jìn)行匹配,獲取需要修改的客戶數(shù)據(jù)

cf3 = cf2[cf2.MDG編碼.isnull()].merge(cf1[['客戶名稱','MDG編碼']],how='left',on='客戶名稱')
cf3 = cf3[['主鍵','MDG編碼_y','客戶名稱','證件號(hào)','客戶類型','MDG編碼_x']]
cf3  #MDG編碼_y為正確編碼,主鍵為需要修改的id

輸出

上述情況是相同客戶有一個(gè)正確編碼和一個(gè)編碼為空的情況,對(duì)于相同客戶有兩個(gè)及兩個(gè)以上不同編碼的情況,使用下述方法查詢:

cf[cf['count']==3] #多個(gè)不相等mdg編碼

輸出

這類數(shù)據(jù)由于編碼有多個(gè)不相同,需要根據(jù)業(yè)務(wù)進(jìn)一步核實(shí)

總結(jié)

本文主要介紹了在 pandas中清洗客戶編碼異常數(shù)據(jù)的方法,使用這個(gè)方法我們可以快速的清洗客戶編碼異常數(shù)據(jù)。那么如果你想要對(duì)這個(gè)方法進(jìn)行優(yōu)化的話,我們還可以對(duì)數(shù)據(jù)進(jìn)行清洗。比如說我們可以對(duì)原始數(shù)據(jù)進(jìn)行一次排序,然后在排序后的數(shù)據(jù)中尋找是否存在空值、重復(fù)值和重復(fù)編碼等問題。

以上就是使用Pandas實(shí)現(xiàn)清洗客戶編碼異常數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于Pandas清洗異常數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python使用Spire.XLS for Python實(shí)現(xiàn)高效讀取Excel數(shù)據(jù)

    Python使用Spire.XLS for Python實(shí)現(xiàn)高效讀取Excel數(shù)據(jù)

    在當(dāng)今數(shù)據(jù)驅(qū)動(dòng)的世界中,Python 已成為數(shù)據(jù)處理和分析的首選工具,本文將介紹如何使用Spire.XLS for Python高效讀取Excel數(shù)據(jù),感興趣的小伙伴可以了解下
    2025-12-12
  • 詳解Python類和對(duì)象內(nèi)容

    詳解Python類和對(duì)象內(nèi)容

    Python遵循面向?qū)ο蟮木幊谭妒?。它處理聲明python類,從它們創(chuàng)建對(duì)象并與用戶交互。在面向?qū)ο蟮恼Z言中,程序被分成獨(dú)立的對(duì)象,或者你可以說成幾個(gè)小程序。每個(gè)對(duì)象代表應(yīng)用程序的不同部分,它們可以相互通信。類是對(duì)客觀世界中事物得抽象,而對(duì)象是類實(shí)例化后的實(shí)體
    2021-06-06
  • Python實(shí)現(xiàn)多線程下載文件的代碼實(shí)例

    Python實(shí)現(xiàn)多線程下載文件的代碼實(shí)例

    這篇文章主要介紹了Python實(shí)現(xiàn)多線程下載文件的代碼實(shí)例,需要的朋友可以參考下
    2014-06-06
  • Python多個(gè)MP4合成視頻的實(shí)現(xiàn)方法

    Python多個(gè)MP4合成視頻的實(shí)現(xiàn)方法

    最近接觸了個(gè)項(xiàng)目,需要把多個(gè)文件合成一個(gè)視頻,本文主要使用Python把多個(gè)MP4合成視頻,感興趣的可以了解一下
    2021-07-07
  • 使用Python將PPT的幻燈片和形狀轉(zhuǎn)為多種圖片格式

    使用Python將PPT的幻燈片和形狀轉(zhuǎn)為多種圖片格式

    這篇文章主要為大家詳細(xì)介紹了如何使用Python?將PPT幻燈片和形狀轉(zhuǎn)換為多種圖片格式,即JPG,?PNG,?BMP,?SVG,?TIFF,需要的可以參考下
    2025-02-02
  • 使用Python和大模型進(jìn)行數(shù)據(jù)分析和文本生成

    使用Python和大模型進(jìn)行數(shù)據(jù)分析和文本生成

    Python語言以其簡(jiǎn)潔和強(qiáng)大的特性,成為了數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)和人工智能開發(fā)的首選語言之一,在這篇文章中,我將介紹如何用Python連接和使用大模型,并通過示例展示如何在實(shí)際項(xiàng)目中應(yīng)用這些技術(shù),需要的朋友可以參考下
    2024-05-05
  • python-django中的APPEND_SLASH實(shí)現(xiàn)方法

    python-django中的APPEND_SLASH實(shí)現(xiàn)方法

    這篇文章主要介紹了python-django中的APPEND_SLASH實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • pyspark對(duì)Mysql數(shù)據(jù)庫進(jìn)行讀寫的實(shí)現(xiàn)

    pyspark對(duì)Mysql數(shù)據(jù)庫進(jìn)行讀寫的實(shí)現(xiàn)

    這篇文章主要介紹了pyspark對(duì)Mysql數(shù)據(jù)庫進(jìn)行讀寫的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python實(shí)現(xiàn)LRU算法

    Python實(shí)現(xiàn)LRU算法

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)LRU緩存置換算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 如何通過雪花算法用Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的發(fā)號(hào)器

    如何通過雪花算法用Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的發(fā)號(hào)器

    這篇文章主要介紹了如何通過雪花算法用Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的發(fā)號(hào)器,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07

最新評(píng)論

略阳县| 灵武市| 达州市| 安庆市| 栖霞市| 福州市| 右玉县| 汽车| 长汀县| 怀集县| 九寨沟县| 彩票| 乌什县| 和田县| 屯昌县| 舟山市| 吴堡县| 内乡县| 石泉县| 苏州市| 绥德县| 固始县| 宜君县| 乡宁县| 德安县| 阿克陶县| 普定县| 汾西县| 正阳县| 泰兴市| 洛阳市| 新河县| 南充市| 施秉县| 富蕴县| 建阳市| 寿光市| 古田县| 兖州市| 新营市| 浦东新区|