通過(guò)5個(gè)例子讓你學(xué)會(huì)Pandas中的字符串過(guò)濾_第1頁(yè)
通過(guò)5個(gè)例子讓你學(xué)會(huì)Pandas中的字符串過(guò)濾_第2頁(yè)
通過(guò)5個(gè)例子讓你學(xué)會(huì)Pandas中的字符串過(guò)濾_第3頁(yè)
通過(guò)5個(gè)例子讓你學(xué)會(huì)Pandas中的字符串過(guò)濾_第4頁(yè)
通過(guò)5個(gè)例子讓你學(xué)會(huì)Pandas中的字符串過(guò)濾_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第通過(guò)5個(gè)例子讓你學(xué)會(huì)Pandas中的字符串過(guò)濾要處理文本數(shù)據(jù),需要比數(shù)字類(lèi)型的數(shù)據(jù)更多的清理步驟。為了從文本數(shù)據(jù)中提取有用和信息,通常需要執(zhí)行幾個(gè)預(yù)處理和過(guò)濾步驟。

Pandas庫(kù)有許多可以輕松簡(jiǎn)單地處理文本數(shù)據(jù)函數(shù)和方法。在本文中,我介紹將學(xué)習(xí)5種可用于過(guò)濾文本數(shù)據(jù)(即字符串)的不同方法:

是否包含一系列字符求字符串的長(zhǎng)度判斷以特定的字符序列開(kāi)始或結(jié)束判斷字符為數(shù)字或字母數(shù)字查找特定字符序列的出現(xiàn)次數(shù)

首先我們導(dǎo)入庫(kù)和數(shù)據(jù)

importpandasaspd

df=pd.read_csv("example.csv")

我們這個(gè)樣例的DataFrame包含6行和4列。我們將使用不同的方法來(lái)處理DataFrame中的行。第一個(gè)過(guò)濾操作是檢查字符串是否包含特定的單詞或字符序列,使用contains方法查找描述字段包含usedcar的行。但是要獲得pandas中的字符串需要通過(guò)Pandas的str訪問(wèn)器,代碼如下:

df[df["description"].str.contains("usedcar")]

但是為了在這個(gè)DataFrame中找到所有的二手車(chē),我們需要分別查找used和car這兩個(gè)詞,因?yàn)檫@兩個(gè)詞可能同時(shí)出現(xiàn),但是并不是連接在一起的:

df[df["description"].str.contains("used")

df["description"].str.contains("car")]

可以看到最后一行包含car和used,但不是一起。

下一個(gè)方法是根據(jù)字符串的長(zhǎng)度進(jìn)行過(guò)濾。假設(shè)我們只對(duì)超過(guò)15個(gè)字符的描述感興趣??梢允褂脙?nèi)置的len函數(shù)來(lái)執(zhí)行此操作,如下所示:

df[df["description"].apply(lambdax:len(x)15)]

這里就需要編寫(xiě)了一個(gè)lambda表達(dá)式,通過(guò)在表達(dá)式中使用len函數(shù)獲取長(zhǎng)度并使用apply函數(shù)將其應(yīng)用到每一行。執(zhí)行此操作的更常用和有效的方法是通過(guò)str訪問(wèn)器來(lái)進(jìn)行:

df[df["description"].str.len()15]

我們可以分別使用startswith和endswith基于字符串的第一個(gè)或最后一個(gè)字母進(jìn)行過(guò)濾。

df[df["lot"].str.startswith("A")]

這個(gè)方法也能夠檢查前n個(gè)字符。例如,我們可以選擇以A-0開(kāi)頭的行:

df[df["lot"].str.startswith("A-0")]

Python的內(nèi)置的字符串函數(shù)都可以應(yīng)用到PandasDataFrames中。例如,在價(jià)格列中,有一些非數(shù)字字符,如$和k。我們可以使用isnumeric函數(shù)過(guò)濾掉。

df[df["price"].apply(lambdax:x.isnumeric()==True)]

同樣如果需要保留字母數(shù)字(即只有字母和數(shù)字),可以使用isalphanum函數(shù),用法與上面相同。

count方法可以計(jì)算單個(gè)字符或字符序列的出現(xiàn)次數(shù)。例如,查找一個(gè)單詞或字符出現(xiàn)的次數(shù)。

我們這里統(tǒng)計(jì)描述欄中的used的出現(xiàn)次數(shù):

df["description"].str.count("used")

#結(jié)果

Name:description,dtype:int64

如果想使用它進(jìn)行條件過(guò)濾,只需將其與一個(gè)值進(jìn)行比較,如下所示:

df[df["description"].str.count("used")1]

非常簡(jiǎn)單吧

本文介紹了基于字符串值的5種不同的PandasDataFrames方式。雖然一般情況下我們更關(guān)注數(shù)值類(lèi)型的數(shù)據(jù),但文本數(shù)據(jù)同樣重要,并且包含許多有價(jià)值的信息。能夠?qū)ξ谋緮?shù)據(jù)進(jìn)行清理和預(yù)處理對(duì)于數(shù)據(jù)分析和建模至關(guān)重要。

附:pandas中按條件過(guò)濾字符串類(lèi)型的值

一、使用~對(duì)字符串值取反:

1、測(cè)試數(shù)據(jù)

test_df

total_billtipsmokerdaytimesizetip_pct

5726.411.50NoSatDinner20.056797

016.991.01NoSunDinner20.059447

4828.552.05NoSunDinner30.071804

14618.641.36NoThurLunch30.072961

13019.081.50NoThurLunch20.078616

23732.831.17YesSatDinner20.035638

10244.302.50YesSatDinner30.056433

18730.462.00YesSunDinner50.065660

21030.062.00YesSatDinner30.066534

24027.182.00YesSatDinner20.073584

2、需求:取出day字段中值不為Sta,Sun的記錄

test_df[~test_df['day'].str.contains('|'.join(['Sat','Sun']))]

total_b

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論