<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>

          詳解16個Pandas函數(shù),讓你的 “數(shù)據(jù)清洗” 能力提高100倍!

          共 3101字,需瀏覽 7分鐘

           ·

          2021-03-21 20:44

          本文介紹

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

          1個數(shù)據(jù)集,16個Pandas函數(shù)

          數(shù)據(jù)集是黃同學精心為大家編造,只為了幫助大家學習到知識。數(shù)據(jù)集如下:
          import pandas as pd

          df ={'姓名':[' 黃同學','黃至尊','黃老邪 ','陳大美','孫尚香'],
               '英文名':['Huang tong_xue','huang zhi_zun','Huang Lao_xie','Chen Da_mei','sun shang_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
          結(jié)果如下:
          觀察上述數(shù)據(jù),數(shù)據(jù)集是亂的。接下來,我們就用16個Pandas來對上述數(shù)據(jù),進行數(shù)據(jù)清洗。
          ① cat函數(shù):用于字符串的拼接
          df["姓名"].str.cat(df["家庭住址"],sep='-'*3)
          結(jié)果如下:
          ② contains:判斷某個字符串是否包含給定字符
          df["家庭住址"].str.contains("廣")
          結(jié)果如下:
          ③ startswith/endswith:判斷某個字符串是否以…開頭/結(jié)尾
          # 第一個行的“ 黃偉”是以空格開頭的
          df["姓名"].str.startswith("黃"
          df["英文名"].str.endswith("e")
          結(jié)果如下:
          ④ count:計算給定字符在字符串中出現(xiàn)的次數(shù)
          df["電話號碼"].str.count("3")
          結(jié)果如下:
          ⑤ get:獲取指定位置的字符串
          df["姓名"].str.get(-1)
          df["身高"].str.split(":")
          df["身高"].str.split(":").str.get(0)
          結(jié)果如下:
          ⑥ len:計算字符串長度
          df["性別"].str.len()
          結(jié)果如下:
          ⑦ upper/lower:英文大小寫轉(zhuǎn)換
          df["英文名"].str.upper()
          df["英文名"].str.lower()
          結(jié)果如下:
          ⑧ pad+side參數(shù)/center:在字符串的左邊、右邊或左右兩邊添加給定字符
          df["家庭住址"].str.pad(10,fillchar="*")      # 相當于ljust()
          df["家庭住址"].str.pad(10,side="right",fillchar="*")    # 相當于rjust()
          df["家庭住址"].str.center(10,fillchar="*")
          結(jié)果如下:
          ⑨ repeat:重復字符串幾次
          df["性別"].str.repeat(3)
          結(jié)果如下:
          ⑩ slice_replace:使用給定的字符串,替換指定的位置的字符
          df["電話號碼"].str.slice_replace(4,8,"*"*4)
          結(jié)果如下:
          ? replace:將指定位置的字符,替換為給定的字符串
          df["身高"].str.replace(":","-")
          結(jié)果如下:
          ? replace:將指定位置的字符,替換為給定的字符串(接受正則表達式)
          • replace中傳入正則表達式,才叫好用;
          • 先不要管下面這個案例有沒有用,你只需要知道,使用正則做數(shù)據(jù)清洗多好用;
          df["收入"].str.replace("\d+\.\d+","正則")
          結(jié)果如下:
          ? split方法+expand參數(shù):搭配join方法功能很強大
          # 普通用法
          df["身高"].str.split(":")
          # split方法,搭配expand參數(shù)
          df[["身高描述","final身高"]] = df["身高"].str.split(":",expand=True)
          df
          # split方法搭配join方法
          df["身高"].str.split(":").str.join("?"*5)
          結(jié)果如下:
          ? strip/rstrip/lstrip:去除空白符、換行符
          df["姓名"].str.len()
          df["姓名"] = df["姓名"].str.strip()
          df["姓名"].str.len()
          結(jié)果如下:
          ? findall:利用正則表達式,去字符串中匹配,返回查找結(jié)果的列表
          • findall使用正則表達式,做數(shù)據(jù)清洗,真的很香!
          df["身高"]
          df["身高"].str.findall("[a-zA-Z]+")
          結(jié)果如下:
          ? extract/extractall:接受正則表達式,抽取匹配的字符串(一定要加上括號)
          df["身高"].str.extract("([a-zA-Z]+)")
          # extractall提取得到復合索引
          df["身高"].str.extractall("([a-zA-Z]+)")
          # extract搭配expand參數(shù)
          df["身高"].str.extract("([a-zA-Z]+).*?([a-zA-Z]+)",expand=True)
          結(jié)果如下:

          更多閱讀



          2020 年最佳流行 Python 庫 Top 10


          2020 Python中文社區(qū)熱門文章 Top 10


          5分鐘快速掌握 Python 定時任務框架

          特別推薦




          點擊下方閱讀原文加入社區(qū)會員


          瀏覽 67
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  成人做爰A片免费视频 | 青娱乐偷窥成人 | 亚洲女人AV | 亲子伦一区二区三区观看方式 | 黄色一级免费片 |