python清洗字串的實例詳解
這篇文章主要介紹了python資料清洗之字串處理的相關資料,需要的朋友可以參考下
#前言
資料清洗是一項複雜且繁瑣(kubi)的工作,同時也是整個資料分析過程中最為重要的環節。有人說一個分析專案80%的時間都在清洗數據,聽起來有些匪夷所思,但實際的工作確實如此。資料清洗的目的有兩個,第一是透過清洗讓資料可用。第二是讓資料變的更適合進行後續的分析工作。換句話說就是有」髒」資料要洗,乾淨的資料也要洗。
在資料分析中,特別是文字分析中,字元處理需要耗費極大的精力,因而了解字元處理對於資料分析而言,也是一項很重要的能力。
字串處理方法
首先我們先了解下有哪些基礎方法
首先我們了解下字串的拆分split方法
str='i like apple,i like bananer' print(str.split(','))
對字元str用逗號進行拆分的結果:
['i like apple', 'i like bananer']
print(str.split(' '))
根據空格拆分的結果:
['i', 'like', 'apple,i', 'like', 'bananer']
print(str.index(',')) print(str.find(','))
兩個查找結果都為:
12
找不到的情況下index回傳錯誤,find回傳-1
print(str.count('i'))
結果為:
4
connt用於統計目標字串的頻率
print(str.replace(',', ' ').split(' '))
結果為:
[' i', 'like', 'apple', 'i', 'like', 'bananer']
#這裡replace把逗號替換為空格後,在用空格對字串進行分割,剛好能把每個單字取出來。
除了常規的方法以外,更強大的字元處理工具費正規表示式莫屬了。
正規表示式
在使用正規表示式前我們還要先了解下,正規表示式中的諸多方法。
下面我來看下個方法的使用,首先了解下match和search方法的差異
str = "Cats are smarter than dogs" pattern=re.compile(r'(.*) are (.*?) .*') result=re.match(pattern,str) for i in range(len(result.groups())+1): print(result.group(i))
結果為:
Cats are smarter than dogs
Cats
smarter
這種形式的pettern匹配規則下,match和search方法的回傳結果是一樣的
此時若把pattern改為
pattern=re.compile(r'are (.*?) .*')
match則回傳none,search回傳結果為:
are smarter than dogs
smarter
接下來我們了解下其他方法的使用
str = "138-9592-5592 # number" pattern=re.compile(r'#.*$') number=re.sub(pattern,'',str) print(number)
結果為:
138-9592-5592
以上是透過把#號後面的內容替換為空實現提取號碼的目的。
我們也可以進一步將號碼的橫桿替換
print(re.sub(r'-*','',number))
結果為:
13895925592
#我們也可以用find的方法把找到的字串印出來
str = "138-9592-5592 # number" pattern=re.compile(r'5') print(pattern.findall(str))
結果為:
#['5', '5', '5']
正規表示式的整體內容比較多,需要我們對符合的字串的規則有足夠的了解,以下是具體的匹配規則。
向向量化字串函數
#清理待分析的散亂資料時,常常需要做一些字串規整化工作。
data = pd.Series({'li': '120@qq.com','wang':'5632@qq.com', 'chen': '8622@xinlang.com','zhao':np.nan,'sun':'5243@gmail.com'}) print(data)
結果為:
可以透過規則整合的一些方法對資料做初步的判斷,例如用contains 判斷每個資料中是否含有關鍵字
print(data.str.contains('@'))
結果為:
也可以對字串進行分拆,把需要的字串提取出來
data = pd.Series({'li': '120@qq.com','wang':'5632@qq.com', 'chen': '8622@xinlang.com','zhao':np.nan,'sun':'5243@gmail.com'}) pattern=re.compile(r'(\d*)@([a-z]+)\.([a-z]{2,4})') result=data.str.match(pattern) #这里用fillall的方法也可以result=data.str.findall(pattern) print(result)
結果為:
chen [(8622, xinlang, com)]
li [(120, qq, com)]
sun [(5243, gmail, com)]
wang [(5632, qq, com)]
zhao NaN
dtype: object
print(result.str.get(0))
print(result.str.get(1))
##當然也可以用切片的方式進行擷取,不過擷取的資料準確度不高
data = pd.Series({'li': '120@qq.com','wang':'5632@qq.com', 'chen': '8622@xinlang.com','zhao':np.nan,'sun':'5243@gmail.com'}) print(data.str[:6])
結果為:
最後我們了解下向量化的字串方法
總結
【相關推薦】
1. Python免費影片教學
3. Python基礎入門教學
以上是python清洗字串的實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。
