0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一個(gè)簡(jiǎn)單實(shí)用的清洗代碼集

電子工程師 ? 來(lái)源:lq ? 2019-01-23 11:42 ? 次閱讀

數(shù)據(jù)清洗是數(shù)據(jù)科學(xué)家逃不掉的一份苦差事。為了讓這項(xiàng)工作不那么痛苦,本文作者分享了自己的數(shù)據(jù)清洗代碼集。

現(xiàn)實(shí)世界中的數(shù)據(jù)通常質(zhì)量不高,作為一名數(shù)據(jù)科學(xué)家,有時(shí)也需要承擔(dān)一部分?jǐn)?shù)據(jù)清洗的工作,這要求數(shù)據(jù)科學(xué)家們應(yīng)該能夠在進(jìn)行數(shù)據(jù)分析或建模工作之前執(zhí)行數(shù)據(jù)清洗步驟,從而確保數(shù)據(jù)的質(zhì)量最佳。

不過(guò)長(zhǎng)話短說(shuō),在數(shù)據(jù)科學(xué)領(lǐng)域工作了很長(zhǎng)一段時(shí)間后,我切實(shí)感受到了在進(jìn)行數(shù)據(jù)分析、可視化和建模工作之前,進(jìn)行數(shù)據(jù)清洗工作是多么痛苦。

不管你承不承認(rèn),數(shù)據(jù)清洗著實(shí)不是一件簡(jiǎn)單的任務(wù),大多數(shù)情況下這項(xiàng)工作是十分耗時(shí)而乏味的,但它又是十分重要的。

如果你經(jīng)歷過(guò)數(shù)據(jù)清洗的過(guò)程,你就會(huì)明白我的意思。而這正是撰寫這篇文章的目的——讓讀者更輕松地進(jìn)行數(shù)據(jù)清洗工作。

事實(shí)上,我在不久前意識(shí)到,在進(jìn)行數(shù)據(jù)清洗時(shí),有一些數(shù)據(jù)具有相似的模式。也正是從那時(shí)起,我開始整理并編譯了一些數(shù)據(jù)清洗代碼(見下文),我認(rèn)為這些代碼也適用于其它的常見場(chǎng)景。

由于這些常見的場(chǎng)景涉及到不同類型的數(shù)據(jù)集,因此本文更加側(cè)重于展示和解釋這些代碼可以用于完成哪些工作,以便讀者更加方便地使用它們。

我的數(shù)據(jù)清洗小工具箱

在下面的代碼片段中,數(shù)據(jù)清洗代碼被封裝在了一些函數(shù)中,代碼的目的十分直觀。你可以直接使用這些代碼,無(wú)需將它們嵌入到需要進(jìn)行少量參數(shù)修改的函數(shù)中。

1. 刪除多列數(shù)據(jù)

defdrop_multiple_col(col_names_list,df):'''AIM->DropmultiplecolumnsbasedontheircolumnnamesINPUT->Listofcolumnnames,dfOUTPUT->updateddfwithdroppedcolumns------'''df.drop(col_names_list,axis=1,inplace=True)returndf

有時(shí),并不是所有列的數(shù)據(jù)都對(duì)我們的數(shù)據(jù)分析工作有用。因此,「df.drop」可以方便地刪掉你選定的列。

2. 轉(zhuǎn)換 Dtypes

defchange_dtypes(col_int,col_float,df):'''AIM->ChangingdtypestosavememoryINPUT->Listofcolumnnames(int,float),dfOUTPUT->updateddfwithsmallermemory------'''df[col_int]=df[col_int].astype('int32')df[col_float]=df[col_float].astype('float32')

當(dāng)我們面對(duì)更大的數(shù)據(jù)集時(shí),我們需要對(duì)「dtypes」進(jìn)行轉(zhuǎn)換,從而節(jié)省內(nèi)存。如果你有興趣學(xué)習(xí)如何使用「Pandas」來(lái)處理大數(shù)據(jù),我強(qiáng)烈推薦你閱讀「Why and How to Use Pandas with Large Data」這篇文章(https://towardsdatascience.com/why-and-how-to-use-pandas-with-large-data-9594dda2ea4c)。

3. 將分類變量轉(zhuǎn)換為數(shù)值變量

defconvert_cat2num(df):#Convertcategoricalvariabletonumericalvariablenum_encode={'col_1':{'YES':1,'NO':0},'col_2':{'WON':1,'LOSE':0,'DRAW':0}}df.replace(num_encode,inplace=True)

有一些機(jī)器學(xué)習(xí)模型要求變量是以數(shù)值形式存在的。這時(shí),我們就需要將分類變量轉(zhuǎn)換成數(shù)值變量然后再將它們作為模型的輸入。對(duì)于數(shù)據(jù)可視化任務(wù)來(lái)說(shuō),我建議大家保留分類變量,從而讓可視化結(jié)果有更明確的解釋,便于理解。

4. 檢查缺失的數(shù)據(jù)

defcheck_missing_data(df):#checkforanymissingdatainthedf(displayindescendingorder)returndf.isnull().sum().sort_values(ascending=False)

如果你想要檢查每一列中有多少缺失的數(shù)據(jù),這可能是最快的方法。這種方法可以讓你更清楚地知道哪些列有更多的缺失數(shù)據(jù),幫助你決定接下來(lái)在數(shù)據(jù)清洗和數(shù)據(jù)分析工作中應(yīng)該采取怎樣的行動(dòng)。

5. 刪除列中的字符串

defremove_col_str(df):#removeaportionofstringinadataframecolumn-col_1df['col_1'].replace(' ','',regex=True,inplace=True)#removeallthecharactersafter&#(including&#)forcolumn-col_1df['col_1'].replace('&#.*','',regex=True,inplace=True)

有時(shí)你可能會(huì)看到一行新的字符,或在字符串列中看到一些奇怪的符號(hào)。你可以很容易地使用 df['col_1'].replace 來(lái)處理該問(wèn)題,其中「col_1」是數(shù)據(jù)幀 df 中的一列。

6. 刪除列中的空格

defremove_col_white_space(df):#removewhitespaceatthebeginningofstringdf[col]=df[col].str.lstrip()

當(dāng)數(shù)據(jù)十分混亂時(shí),很多意想不到的情況都會(huì)發(fā)生。在字符串的開頭有一些空格是很常見的。因此,當(dāng)你想要?jiǎng)h除列中字符串開頭的空格時(shí),這種方法很實(shí)用。

7. 將兩列字符串?dāng)?shù)據(jù)(在一定條件下)拼接起來(lái)

defconcat_col_str_condition(df):#concat2columnswithstringsifthelast3lettersofthefirstcolumnare'pil'mask=df['col_1'].str.endswith('pil',na=False)col_new=df[mask]['col_1']+df[mask]['col_2']col_new.replace('pil','',regex=True,inplace=True)#replacethe'pil'withemtpyspace

當(dāng)你希望在一定條件下將兩列字符串?dāng)?shù)據(jù)組合在一起時(shí),這種方法很有用。例如,你希望當(dāng)?shù)谝涣幸阅承┨囟ǖ淖帜附Y(jié)尾時(shí),將第一列和第二列數(shù)據(jù)拼接在一起。根據(jù)你的需要,還可以在拼接工作完成后將結(jié)尾的字母刪除掉。

8. 轉(zhuǎn)換時(shí)間戳(從字符串類型轉(zhuǎn)換為日期「DateTime」格式)

defconvert_str_datetime(df):'''AIM->Convertdatetime(String)todatetime(formatwewant)INPUT->dfOUTPUT->updateddfwithnewdatetimeformat------'''df.insert(loc=2,column='timestamp',value=pd.to_datetime(df.transdate,format='%Y-%m-%d%H:%M:%S.%f'))

在處理時(shí)間序列數(shù)據(jù)時(shí),你可能會(huì)遇到字符串格式的時(shí)間戳列。這意味著我們可能不得不將字符串格式的數(shù)據(jù)轉(zhuǎn)換為根據(jù)我們的需求指定的日期「datetime」格式,以便使用這些數(shù)據(jù)進(jìn)行有意義的分析和展示。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4332

    瀏覽量

    62666
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1208

    瀏覽量

    24713
  • 數(shù)據(jù)科學(xué)

    關(guān)注

    0

    文章

    165

    瀏覽量

    10064

原文標(biāo)題:還在為數(shù)據(jù)清洗抓狂?這里有一個(gè)簡(jiǎn)單實(shí)用的清洗代碼集

文章出處:【微信號(hào):aicapital,微信公眾號(hào):全球人工智能】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    個(gè)簡(jiǎn)單的8位處理器完整設(shè)計(jì)過(guò)程及verilog代碼

    個(gè)簡(jiǎn)單的8位處理器完整設(shè)計(jì)過(guò)程及verilog代碼,適合入門學(xué)習(xí)參考,并含有作者個(gè)人寫的指令執(zhí)行過(guò)程。
    的頭像 發(fā)表于 04-10 11:43 ?3597次閱讀

    如何清洗中央空調(diào),清洗中央空調(diào)的方法

    應(yīng)該包括三個(gè)部分,第空調(diào)機(jī)體外殼和裸露部分,容易受污染的部件;第二過(guò)濾網(wǎng)清洗,是核心最重要部位;第三冷凝器和蒸發(fā)器部分,比較少見,與維修結(jié)合在塊,相當(dāng)于小系統(tǒng)的
    發(fā)表于 12-21 16:22

    清洗腐蝕設(shè)備 每一個(gè)制作商的需要

    蘇州晶淼半導(dǎo)體公司 是半導(dǎo)體、LED、太陽(yáng)能電池、MEMS、硅片硅料、集成電路于體的非標(biāo)化生產(chǎn)相關(guān)清洗腐蝕設(shè)備的公司 目前與多家合作過(guò) 現(xiàn)正在找合作伙伴 !如果有意者 請(qǐng)聯(lián)系我們。
    發(fā)表于 08-17 16:23

    清洗腐蝕機(jī) LED芯片

    蘇州晶淼半導(dǎo)體公司 是半導(dǎo)體、LED、太陽(yáng)能電池、MEMS、硅片硅料、集成電路于體的非標(biāo)化生產(chǎn)相關(guān)清洗腐蝕設(shè)備的公司 目前與多家合作過(guò) 現(xiàn)正在找合作伙伴 !如果有意者 請(qǐng)聯(lián)系我們。
    發(fā)表于 08-17 16:31

    使用函數(shù)計(jì)算對(duì)表格存儲(chǔ)中數(shù)據(jù)做簡(jiǎn)單清洗

    Compute) 是個(gè)事件驅(qū)動(dòng)的服務(wù),通過(guò)函數(shù)計(jì)算,用戶無(wú)需管理服務(wù)器等運(yùn)行情況,只需編寫代碼并上傳。函數(shù)計(jì)算準(zhǔn)備計(jì)算資源,并以彈性伸縮的方式運(yùn)行用戶代碼,而用戶只需根據(jù)實(shí)際
    發(fā)表于 05-16 23:03

    清洗誤標(biāo)注的開發(fā)和測(cè)試樣本

    ,需要修正開發(fā)集中的標(biāo)簽嗎?回憶下當(dāng)初設(shè)立開發(fā)的目標(biāo)——幫助你快速評(píng)估算法性能,從而判斷算法 A 和 B 哪一個(gè)更好。如果開發(fā)集中誤標(biāo)注的部分的確影響了你的判斷,那么花時(shí)間去修正這些標(biāo)簽就是值得
    發(fā)表于 12-19 09:48

    PCBA的清洗工藝介紹

    多品種PCBA清洗,通過(guò)人工的搬運(yùn)進(jìn)行可設(shè)置在產(chǎn)線的任何地方,離線在個(gè)腔體內(nèi)完成化學(xué)清洗(或者水基清洗)、水基漂洗、烘干全部工序?! ?/div>
    發(fā)表于 02-05 15:27

    通過(guò)個(gè)簡(jiǎn)單的Simulink模型生成代碼

    本文首先通過(guò)個(gè)簡(jiǎn)單的Simulink模型生成代碼,然后將代碼copy到
    發(fā)表于 08-18 06:22

    超聲波清洗機(jī)拆解

    超聲波清洗機(jī) - 拆機(jī)與逆向工程這幾天拆解了個(gè)超聲波清洗機(jī),跟大家分享下。這個(gè)外接12V電源適配器來(lái)給充電電池充電,可以不帶電源適配器工
    發(fā)表于 09-14 06:47

    分享個(gè)簡(jiǎn)單的RTOS代碼

    如何去編寫個(gè)簡(jiǎn)單的RTOS代碼呢?
    發(fā)表于 11-29 06:13

    python設(shè)計(jì)個(gè)簡(jiǎn)單推薦系統(tǒng)的資料和完整代碼

    本文檔的主要內(nèi)容詳細(xì)介紹的是python設(shè)計(jì)個(gè)簡(jiǎn)單推薦系統(tǒng)的資料和完整代碼免費(fèi)下載。
    發(fā)表于 03-30 09:32 ?14次下載

    機(jī)器學(xué)習(xí)必學(xué)的Python代碼示例

    機(jī)器學(xué)習(xí)必學(xué)的Python代碼示例
    發(fā)表于 06-21 09:35 ?14次下載

    如何用低代碼實(shí)現(xiàn)個(gè)簡(jiǎn)單的頁(yè)面跳轉(zhuǎn)功能

    我們先開發(fā)第一個(gè)頁(yè)面,如圖4所示,第一個(gè)頁(yè)面是在容器中展示“低代碼入門”文本和“鍵入門”按鈕,它們分別可以通過(guò)Div、Text、和Button組件來(lái)實(shí)現(xiàn)。下面
    的頭像 發(fā)表于 05-16 09:45 ?1559次閱讀

    簡(jiǎn)單說(shuō)明PCBA板清洗規(guī)則

    PCBA板不能隨便清洗,需要有嚴(yán)格的要求和注意事項(xiàng),以下是根據(jù)PCBA板清洗規(guī)則,對(duì)PCBA板清洗的目的、必要性以及過(guò)程中的些注意事項(xiàng)做簡(jiǎn)單
    的頭像 發(fā)表于 09-16 10:39 ?2150次閱讀

    Linux的代碼

    電子發(fā)燒友網(wǎng)站提供《Linux的代碼.zip》資料免費(fèi)下載
    發(fā)表于 07-28 15:01 ?0次下載
    Linux的<b class='flag-5'>代碼</b><b class='flag-5'>集</b>