一、介紹
在實際應用中,經常需要對字符串進行子串檢測,以便過濾、篩選、統計、匹配等操作。Python自帶了字符串相關的操作函數和正則表達式庫,但是當我們處理較大的文本數據時,這些方法的效率可能較低。 Pandas是Python中一種基於NumPy的數據處理庫,不僅支持強大的數據結構和算法,還能高效地處理大規模的數據。本文就介紹如何使用Pandas中的str.contains()函數來實現字符串子串檢測操作。
二、使用str.contains()函數實現字符串子串檢測
Pandas中的str.contains()函數可以檢測Series中的每個元素是否包含指定的子串,並返回一組布爾值。下面是一個示例代碼:
import pandas as pd data = pd.Series(['apple', 'banana', 'pear', 'orange']) mask = data.str.contains('app') print(mask)
運行代碼後,將會輸出以下結果:
0 True 1 False 2 False 3 False dtype: bool
從結果可以看出,只有第一個元素包含了子串“app”,而其他元素沒有包含。可以發現,str.contains()函數的參數可以是字符串或正則表達式。如果要使用正則表達式進行匹配,只需將regex參數設置為True即可。
三、實際案例:處理電影數據
接下來,我們以電影數據為例,演示如何使用Pandas中的str.contains()函數進行字符串子串檢測和篩選操作。首先,我們需要導入電影數據集,並查看數據的前幾行。
import pandas as pd # 讀取電影數據 movies = pd.read_csv("movies.csv") # 查看數據的前5行 print(movies.head())
運行代碼後,將會輸出以下結果:
movieId title genres 0 1 Toy Story (1995) Adventure|Animation|Children|Comedy|Fantasy 1 2 Jumanji (1995) Adventure|Children|Fantasy 2 3 Grumpier Old Men (1995) Comedy|Romance 3 4 Waiting to Exhale (1995) Comedy|Drama|Romance 4 5 Father of the Bride Part II (1995) Comedy
我們可以看到,該數據集包含3個列:movieId表示電影的ID,title表示電影的名稱和上映年份,genres表示電影的類型。
然後,我們就可以用str.contains()函數,從數據中選取包含指定類型的電影,並輸出結果。例如,如果我們想選取所有包含“Action”類型的電影,可以如下編寫代碼:
# 選取Action類型電影 action_movies = movies[movies["genres"].str.contains("Action")] # 查看第一行數據 print(action_movies.head(1))
運行代碼後,將會輸出以下結果:
movieId title genres 8 9 Sudden Death (1995) Action|Adventure|Thriller
我們可以看到,action_movies變量中僅包含一個電影,該電影的ID為9,名稱為“Sudden Death”,類型為“Action|Adventure|Thriller”。
四、總結
通過本文的介紹,我們了解了如何使用Pandas中的str.contains()函數來實現字符串子串檢測操作,以及如何在實際案例中應用該函數進行數據篩選和分析。Pandas的強大功能將為我們的數據預處理和分析工作提供極大的便利。感興趣的讀者可以嘗試使用其他Pandas函數來進一步擴展和優化代碼。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/152413.html