<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 3531字,需瀏覽 8分鐘

           ·

          2021-11-27 20:39

          添加微信號"CNFeffery"加入技術交流群

          ?

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

          ?

          1 簡介

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

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

          2 pandas常用字符串處理方法

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

          2.1 拼接合成類方法

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

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

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

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

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

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

          s.str.join('-')

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

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

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

          下面是一些簡單的例子:

          2.2 判斷類方法

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

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

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

          • 「pat:」?str型,用于定義要檢查的字符片段
          • 「na:」?任意對象,當對應位置元素為空值時,用于自定義該位置返回判斷結果,默認為NaN,會原值返回,通常建議設置為False

          下面是一些簡單的例子:

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

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

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

          下面是一些簡單的例子:

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

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

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

          下面是一些簡單的例子:

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

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

          2.3 生成型方法

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

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

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

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

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

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

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

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

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

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

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

          2.4 特殊型方法

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

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

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

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

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

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

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


          以上就是本文的全部內容,歡迎在評論區(qū)與我進行討論~

          加入知識星球【我們談論數(shù)據(jù)科學】

          400+小伙伴一起學習!








          ·?推薦閱讀?·

          利用Conda嘗鮮Python 3.10

          geopandas 0.10版本重磅新特性一覽

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



          瀏覽 104
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天堂中文最新版在线官网8 | 日本亚洲色大成网站 | 日本A电影在线 | 中文字幕av久久波多野结 | 无码国精品一区二区免费蜜桃 |