精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

分享pandas中超級好用的str矢量化字符串函數

數據分析與開發 ? 來源:數據分析與統計學之美 ? 作者:黃偉呢 ? 2021-04-13 10:37 ? 次閱讀

本文介紹

你有沒有這樣一種感覺,為什么到自己手上的數據,總是亂七八糟? 作為一個數據分析師來說,數據清洗是必不可少的環節。有時候由于數據太亂,往往需要花費我們很多時間去處理它。因此掌握更多的數據清洗方法,會讓你的能力調高100倍。 本文基于此,講述pandas中超級好用的str矢量化字符串函數,學了之后,瞬間感覺自己的數據清洗能力提高了。

1個數據集,16個Pandas函數

數據集是黃同學精心為大家編造,只為了幫助大家學習到知識。數據集如下:

importpandasaspd df={'姓名':['黃同學','黃至尊','黃老邪','陳大美','孫尚香'], '英文名':['Huangtong_xue','huangzhi_zun','HuangLao_xie','ChenDa_mei','sunshang_xiang'], '性別':['男','women','men','女','男'], '身份證':['463895200003128433','429475199912122345','420934199110102311','431085200005230122','420953199509082345'], '身高':['mid:175_good','low:165_bad','low:159_bad','high:180_verygood','low:172_bad'], '家庭住址':['湖北廣水','河南信陽','廣西桂林','湖北孝感','廣東廣州'], '電話號碼':['13434813546','19748672895','16728613064','14561586431','19384683910'], '收入':['1.1萬','8.5千','0.9萬','6.5千','2.0萬']} df=pd.DataFrame(df) df 結果如下:

bcebfca8-9be2-11eb-8b86-12bb97331649.png

觀察上述數據,數據集是亂的。接下來,我們就用16個Pandas來對上述數據,進行數據清洗。

① cat函數:用于字符串的拼接

df["姓名"].str.cat(df["家庭住址"],sep='-'*3) 結果如下:

bd027afa-9be2-11eb-8b86-12bb97331649.png

② contains:判斷某個字符串是否包含給定字符

df["家庭住址"].str.contains("廣") 結果如下:

bd0e3d40-9be2-11eb-8b86-12bb97331649.png

③ startswith/endswith:判斷某個字符串是否以…開頭/結尾

#第一個行的“黃偉”是以空格開頭的 df["姓名"].str.startswith("黃") df["英文名"].str.endswith("e") 結果如下:

bd1e5ba8-9be2-11eb-8b86-12bb97331649.png

④ count:計算給定字符在字符串中出現的次數

df["電話號碼"].str.count("3") 結果如下:

bd2bac22-9be2-11eb-8b86-12bb97331649.png

⑤ get:獲取指定位置的字符串

df["姓名"].str.get(-1) df["身高"].str.split(":") df["身高"].str.split(":").str.get(0) 結果如下:

bd3eebde-9be2-11eb-8b86-12bb97331649.png

⑥ len:計算字符串長度

df["性別"].str.len() 結果如下:

bd502714-9be2-11eb-8b86-12bb97331649.png

⑦ upper/lower:英文大小寫轉換

df["英文名"].str.upper() df["英文名"].str.lower() 結果如下:

bd5d8d82-9be2-11eb-8b86-12bb97331649.png

⑧ pad+side參數/center:在字符串的左邊、右邊或左右兩邊添加給定字符

df["家庭住址"].str.pad(10,fillchar="*")#相當于ljust() df["家庭住址"].str.pad(10,side="right",fillchar="*")#相當于rjust() df["家庭住址"].str.center(10,fillchar="*") 結果如下:

bd691940-9be2-11eb-8b86-12bb97331649.png

⑨ repeat:重復字符串幾次

df["性別"].str.repeat(3) 結果如下:

bd73b710-9be2-11eb-8b86-12bb97331649.png

⑩ slice_replace:使用給定的字符串,替換指定的位置的字符

df["電話號碼"].str.slice_replace(4,8,"*"*4) 結果如下:

bd814ac4-9be2-11eb-8b86-12bb97331649.png

? replace:將指定位置的字符,替換為給定的字符串

df["身高"].str.replace(":","-") 結果如下:

? replace:將指定位置的字符,替換為給定的字符串(接受正則表達式)

replace中傳入正則表達式,才叫好用;

先不要管下面這個案例有沒有用,你只需要知道,使用正則做數據清洗多好用;

df["收入"].str.replace("d+.d+","正則") 結果如下:

bd9fe4de-9be2-11eb-8b86-12bb97331649.png

? split方法+expand參數:搭配join方法功能很強大

#普通用法 df["身高"].str.split(":") #split方法,搭配expand參數 df[["身高描述","final身高"]]=df["身高"].str.split(":",expand=True) df #split方法搭配join方法 df["身高"].str.split(":").str.join("?"*5) 結果如下:

bdacbbb4-9be2-11eb-8b86-12bb97331649.png

? strip/rstrip/lstrip:去除空白符、換行符

df["姓名"].str.len() df["姓名"]=df["姓名"].str.strip() df["姓名"].str.len() 結果如下:

bde4a2ea-9be2-11eb-8b86-12bb97331649.png

? findall:利用正則表達式,去字符串中匹配,返回查找結果的列表

findall使用正則表達式,做數據清洗,真的很香!

df["身高"] df["身高"].str.findall("[a-zA-Z]+") 結果如下:

bdf09636-9be2-11eb-8b86-12bb97331649.png

? extract/extractall:接受正則表達式,抽取匹配的字符串(一定要加上括號)

df["身高"].str.extract("([a-zA-Z]+)") #extractall提取得到復合索引 df["身高"].str.extractall("([a-zA-Z]+)") #extract搭配expand參數 df["身高"].str.extract("([a-zA-Z]+).*?([a-zA-Z]+)",expand=True) 結果如下:

be02c400-9be2-11eb-8b86-12bb97331649.png

今天的文章,就講述到這里,希望能夠對你有所幫助。

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    6892

    瀏覽量

    88828
  • 函數
    +關注

    關注

    3

    文章

    4306

    瀏覽量

    62431
  • 矢量化
    +關注

    關注

    0

    文章

    5

    瀏覽量

    6200

原文標題:詳解16個 pandas 函數,讓你的 “數據清洗” 能力提高100倍!

文章出處:【微信號:DBDevs,微信公眾號:數據分析與開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    labview字符串如何轉換為16進制字符串

    在LabVIEW,將字符串轉換為16進制字符串是一個常見的需求,尤其是在處理數據通信和硬件接口時。LabVIEW提供了多種方法來實現這一轉換,包括使用內置函數、編寫VI(Virtua
    的頭像 發表于 09-04 15:54 ?1857次閱讀

    labview如何實現字符串換行

    1. 字符串換行的基本概念 在LabVIEW字符串換行通常指的是在字符串插入換行符,使得字符串
    的頭像 發表于 09-04 15:47 ?1285次閱讀

    labview中常用的字符串函數有哪些?

    在LabVIEW,常用的字符串函數廣泛覆蓋了對字符串的各種操作,包括但不限于格式化、搜索、替換、連接、計算長度等。以下是一些常用的字符串
    的頭像 發表于 09-04 15:43 ?521次閱讀

    labview字符串的四種表示各有什么特點

    。在LabVIEW字符串是一種基本的數據類型,用于表示文本信息。字符串在LabVIEW中有多種表示方式,每種方式都有其特定的應用場景和特點。以下是對LabVIEW四種
    的頭像 發表于 09-04 15:40 ?425次閱讀

    C語言字符串編譯函數介紹

    在C語言中,字符串實際上是使用null字符O'終止的一維字符數組。因此,一個以null結尾的字符串,包含了組成字符串
    的頭像 發表于 03-07 16:18 ?478次閱讀
    C語言<b class='flag-5'>字符串</b>編譯<b class='flag-5'>函數</b>介紹

    labview掃描字符串怎么用

    LabVIEW 是一種流程化編程語言和開發環境,主要用于控制、測量和監測系統。在 LabVIEW ,掃描字符串是一項常見的任務,它允許用戶按照一定的模式從輸入字符串中提取所需的信息。下面我將詳細
    的頭像 發表于 12-29 10:12 ?1869次閱讀

    KUKA 機器人系統函數StrFind()-在字符串里查找

    搜索字符串變量 用功能 StrFind() 可以搜索字符串變量的字符串。 Result = StrFind( StartAt, StrVar[], StrFind[], CaseSens )
    的頭像 發表于 12-27 10:36 ?629次閱讀

    labview掃描字符串怎么用

    LabVIEW是一種圖形化編程語言,用于開發控制、測量和監控系統。雖然它主要用于工程和科學領域,但也可以用于處理文本和字符串。 在LabVIEW,可以使用字符串處理函數來掃描
    的頭像 發表于 12-26 16:58 ?1878次閱讀

    labview怎么對字符串的進行實時處理

    LabVIEW是一種用于開發控制、測試和測量系統的可視化編程環境,它提供了許多處理字符串的功能。在LabVIEW,可以使用不同的函數和工具來實時處理字符串。下面我將詳細介紹一些常見的
    的頭像 發表于 12-26 14:12 ?1779次閱讀

    oracle字符串split成多個

    Oracle是一種廣泛使用的關系型數據庫管理系統,它提供了許多強大的功能和函數,用于處理和操作數據。其中之一就是字符串分割(split)方法,該方法用于將一個字符串按照指定的分隔符分割成多個子
    的頭像 發表于 12-06 09:54 ?5126次閱讀

    oracle判斷字符串包含某個字符

    字符串操作是任何編程語言中都非常重要的一部分,Oracle數據庫作為目前最常用的關系型數據庫之一,也提供了豐富的字符串操作函數和方法。在本文中,我們將詳細解析如何在Oracle判斷一
    的頭像 發表于 12-06 09:53 ?1.5w次閱讀

    oracle拼接字符串函數wm_con

    在Oracle數據庫,有時候我們需要將多個字符串拼接成一個字符串,以滿足特定的需求。而Oracle提供了一個非常方便的函數,就是WM_CONCAT
    的頭像 發表于 12-06 09:51 ?1426次閱讀

    oracle拼接字符串函數

    在Oracle,我們可以使用 CONCAT 函數來拼接字符串。CONCAT 函數接受兩個參數,它將這兩個參數連接起來并返回相應的字符串結果
    的頭像 發表于 12-06 09:49 ?2809次閱讀

    字符數組和字符串有沒有區別?

    字符數組和字符串有沒有區別?
    的頭像 發表于 11-30 16:39 ?624次閱讀

    MySQL替換字符串函數REPLACE

    MySQL是目前非常流行的開源數據庫管理系統之一,它具有強大的功能和性能。其中之一的字符串函數REPLACE,可以用于替換字符串的指定字符
    的頭像 發表于 11-30 10:44 ?1481次閱讀