1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        pandas常用字符串處理方法看這一篇就夠了

        共 3531字,需瀏覽 8分鐘

         ·

        2021-11-27 20:39

        添加微信號(hào)"CNFeffery"加入技術(shù)交流群

        ?

        本文示例代碼及文件已上傳至我的Github倉庫https://github.com/CNFeffery/DataScienceStudyNotes

        ?

        1 簡介

        在日常開展數(shù)據(jù)分析的過程中,我們經(jīng)常需要對(duì)字符串類型數(shù)據(jù)進(jìn)行處理,此類過程往往都比較繁瑣,而pandas作為表格數(shù)據(jù)分析利器,其內(nèi)置的基于Series.str訪問器的諸多針對(duì)字符串進(jìn)行處理的方法,以及一些top-level級(jí)的內(nèi)置函數(shù),則可以幫助我們大大提升字符串型數(shù)據(jù)處理的效率。

        本文我就將帶大家學(xué)習(xí)pandas中常用的一些高效字符串處理方法,提升日常數(shù)據(jù)處理分析效率??:

        2 pandas常用字符串處理方法

        pandas中的常用字符串處理方法,可分為以下幾類:

        2.1 拼接合成類方法

        這一類方法主要是基于原有的Series數(shù)據(jù),按照一定的規(guī)則,利用拼接或映射等方法合成出新的Series,主要有:

        2.1.1 利用join()方法按照指定連接符進(jìn)行字符串連接

        當(dāng)原有的Series中每個(gè)元素均為列表,且列表中元素均為字符串時(shí),就可以利用str.join()來將每個(gè)列表按照指定的連接符進(jìn)行連接,主要參數(shù)有:

        • 「sep:」?str型,必選,用于設(shè)置連接符

        它除了可以簡化我們常規(guī)使用apply()配合'連接符'.join(列表)實(shí)現(xiàn)的等價(jià)過程之外,還可以在列表中包含非字符型元素時(shí)自動(dòng)跳過此次拼接返回缺失值,譬如下面的例子:

        s?=?pd.Series([
        ????['a',?'b',?'c'],
        ????[1,?'a',?'b'],
        ????list('pandas')
        ])

        s.str.join('-')

        2.1.2 利用cat()方法進(jìn)行字符串拼接

        當(dāng)需要對(duì)整個(gè)序列進(jìn)行拼接,或者將多個(gè)序列按位置進(jìn)行元素級(jí)拼接時(shí),就可以使用str.cat()方法來加速這個(gè)過程,其主要參數(shù)有:

        • 「others:」?序列型,可選,用于傳入待進(jìn)行按位置元素級(jí)拼接的字符串序列對(duì)象
        • 「sep:」?str型,可選,用于設(shè)置連接符,默認(rèn)為''
        • 「na_rep:」?str型,可選,用于設(shè)置對(duì)缺失值的替換值,默認(rèn)為None時(shí):
          • 當(dāng)others參數(shù)未設(shè)置時(shí),返回的拼接結(jié)果中缺失項(xiàng)自動(dòng)跳過
          • 當(dāng)others參數(shù)設(shè)置時(shí),兩邊的序列對(duì)應(yīng)位置上存在缺失值時(shí),拼接結(jié)果對(duì)應(yīng)位置返回缺失值

        下面是一些簡單的例子:

        2.2 判斷類方法

        判斷類方法在這里指的是針對(duì)字符型Series,按照一定的條件判斷從而返回與原序列等長的bool型序列,可進(jìn)一步輔助數(shù)據(jù)篩選等操作,在pandas中此類字符串處理方法主要有:

        2.2.1 利用startswith()與endswith()匹配字符串首尾

        當(dāng)我們需要判斷字符型Series中的每個(gè)元素是否以某段字符片段開頭或結(jié)尾時(shí),就可以使用到startswith()/endswith(),它們的參數(shù)一致:

        • 「pat:」?str型,用于定義要檢查的字符片段
        • 「na:」?任意對(duì)象,當(dāng)對(duì)應(yīng)位置元素為空值時(shí),用于自定義該位置返回判斷結(jié)果,默認(rèn)為NaN,會(huì)原值返回,通常建議設(shè)置為False

        下面是一些簡單的例子:

        2.2.2 利用contains()判斷是否包含指定模式

        當(dāng)我們想要判斷字符型Series中每個(gè)元素,是否包含指定的字符片段或正則模式時(shí),則可以使用到str.contains()方法,其主要參數(shù)有:

        • 「pat:」?str型,必選,用于定義要檢查的字符模式,當(dāng)regex=True時(shí)表示正則表達(dá)式,當(dāng)regex=False時(shí),表示原始字符串片段
        • 「flags:」?int型,可選,對(duì)應(yīng)re模塊中的flags參數(shù),用于配合正則表達(dá)式模式,實(shí)現(xiàn)更多功能,譬如re.IGNORECASE即代表大小寫忽略
        • 「na:」?用于自定義遇到缺失值時(shí)返回的對(duì)象,通常建議設(shè)置為False
        • 「regex:」?bool型,用于設(shè)置是否將pat參數(shù)視為正則表達(dá)式進(jìn)行解析,默認(rèn)為True

        下面是一些簡單的例子:

        2.2.3 利用match()判斷是否以指定正則模式開頭

        類似前面介紹的startswith(),不同的是,match()支持正則表達(dá)式,可以幫助掌握正則表達(dá)式的用戶拓展匹配能力,其主要參數(shù)有:

        • 「pat:」?str型,必選,用于定義要檢查的字符模式,當(dāng)regex=True時(shí)表示正則表達(dá)式,當(dāng)regex=False時(shí),表示原始字符串片段
        • 「flags:」?int型,可選,對(duì)應(yīng)re模塊中的flags參數(shù),用于配合正則表達(dá)式模式,實(shí)現(xiàn)更多功能,譬如re.IGNORECASE即代表大小寫忽略
        • 「na:」?用于自定義遇到缺失值時(shí)返回的對(duì)象,通常建議設(shè)置為False

        下面是一些簡單的例子:

        2.2.4 利用fullmatch()判斷字符串是否完整滿足指定正則模式

        上面介紹的match()局限性在于只能從開頭匹配是否滿足指定正則表達(dá)式,而從pandas1.1.0版本開始,新增了fullmatch()方法,可以幫助我們傳入正則表達(dá)式來判斷目標(biāo)字符串是否可以「完全匹配」,其參數(shù)同match(),下面是一個(gè)簡單的例子:

        2.3 生成型方法

        「生成型」方法這里指的是,基于原有的單列字符型Series數(shù)據(jù),按照一定的規(guī)則產(chǎn)生出新計(jì)算結(jié)果的一系列方法,pandas中常用的有:

        2.3.1 利用slice()進(jìn)行字符切片

        當(dāng)我們想要對(duì)字符型Series進(jìn)行元素級(jí)的切片操作時(shí),就可以用到str.slice(),其三個(gè)參數(shù)依次為start、stopstep,分別代表切片的開始下標(biāo)、結(jié)束下標(biāo)與步長,與Python原生的切片方式一致,下面是一些簡單的例子(也可以直接使用類似Python[start:stop:step]):

        2.3.2 利用replace()對(duì)指定字符片段或正則模式進(jìn)行替換

        當(dāng)我們希望對(duì)字符型Series進(jìn)行元素級(jí)的字符片段/正則模式替換時(shí),就可以使用到str.replace()方法,其除了常規(guī)的pat、flags、regex等參數(shù)外,還有特殊的參數(shù)n用于設(shè)置每個(gè)元素字符串(默認(rèn)為-1即不限制次數(shù)),參數(shù)repl用于設(shè)置填充的新內(nèi)容,從開頭開始總共替換幾次,下面是一些簡單的例子:

        2.3.3 利用split()按照指定字符片段或正則模式拆分字符串

        利用str.split()方法,我們可以基于指定的字符片段或正則模式對(duì)原始字符Series進(jìn)行元素級(jí)拆分,主要參數(shù)有pat、n,同上文類似的參數(shù)設(shè)定,另外還有特殊參數(shù)expand來設(shè)定對(duì)于是否以DataFrame中不同列的形式存儲(chǔ)拆分結(jié)果,默認(rèn)為False。下面是一些簡單的例子:

        2.3.4 利用findall()提取符合指定模式的片段

        利用findall(),可以按照指定的字符片段/正則模式對(duì)字符型Series進(jìn)行元素級(jí)提取,可用的參數(shù)有patflags,下面是一些簡單的例子:

        2.3.5 利用count()進(jìn)行頻數(shù)統(tǒng)計(jì)

        通過count(),我們可以對(duì)指定的字符片段/正則模式在字符型Series中每個(gè)字符串元素中出現(xiàn)的次數(shù)進(jìn)行統(tǒng)計(jì),其參數(shù)同上文中的findall(),下面是一些簡單的例子:

        2.4 特殊型方法

        除了上述介紹到的字符串處理方法外,pandas中還有一些特殊方法,可以配合字符串解決更多處理需求,典型的有:

        2.4.1 利用get_dummies()方法生成啞變量

        在涉及到機(jī)器學(xué)習(xí)特征工程的過程中,我們可以使用到str.get_dummies()方法來對(duì)具有固定分隔符的字符串進(jìn)行啞變量的生成,它只有一個(gè)參數(shù)sep,用于設(shè)置分隔符,暫時(shí)不支持正則模式:

        2.4.2 利用pd.to_numeric()修復(fù)數(shù)值錯(cuò)誤

        有些情況下,我們從外部數(shù)據(jù)源(如excel表)中讀入的數(shù)據(jù),由于原始數(shù)據(jù)文件加工的問題,導(dǎo)致一些數(shù)值型字段中的某些單元格混入非數(shù)值型字符,如:

        這種情況下,直接讀入的數(shù)據(jù),本應(yīng)該為數(shù)值型的字段會(huì)變成object型:

        這種時(shí)候就可以利用pd.to_numeric()方法,設(shè)置參數(shù)errors='coerce',就可以將可以合法轉(zhuǎn)為數(shù)值型的記錄轉(zhuǎn)換為相應(yīng)的數(shù)值,不合法的位置返回缺失值:


        以上就是本文的全部內(nèi)容,歡迎在評(píng)論區(qū)與我進(jìn)行討論~

        加入知識(shí)星球【我們談?wù)摂?shù)據(jù)科學(xué)】

        400+小伙伴一起學(xué)習(xí)!








        ·?推薦閱讀?·

        利用Conda嘗鮮Python 3.10

        geopandas 0.10版本重磅新特性一覽

        geopandas輕松繪制交互式在線地圖



        瀏覽 104
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            偷拍精偷拍精品欧洲亚洲网站 | 午夜羞羞| 天堂性爱视频 | 国产精品露脸高清86网站888 | 曰本性生活片 | 无码成人一区二区三区免费视频 | 天天夜夜操 | 非洲的黄色片 | 国产探花电影在线观看 | 一级做a爰片久久毛片A片下乡 |