數(shù)據(jù)過(guò)濾在數(shù)據(jù)分析過(guò)程中具有極其重要的地位,因?yàn)樵谡鎸?shí)世界的數(shù)據(jù)集中,往往存在重復(fù)、缺失或異常的數(shù)據(jù)。pandas
提供的數(shù)據(jù)過(guò)濾功能可以幫助我們輕松地識(shí)別和處理這些問(wèn)題數(shù)據(jù),從而確保數(shù)據(jù)的質(zhì)量和準(zhǔn)確性。
今天介紹的query
函數(shù),為我們提供了強(qiáng)大靈活的數(shù)據(jù)過(guò)濾方式,有助于從復(fù)雜的數(shù)據(jù)集中提取有價(jià)值的信息,提高分析的效率。
1. 準(zhǔn)備數(shù)據(jù)
下面的示例中使用的數(shù)據(jù)采集自鏈家網(wǎng)的真實(shí)房屋成交數(shù)據(jù)。
數(shù)據(jù)下載地址:https://databook.top/。
導(dǎo)入數(shù)據(jù):
import pandas as pd
fp = "D:/data/南京二手房交易/南京建鄴區(qū).csv"
df = pd.read_csv(fp)
df.head()
2. query 使用示例
query
提供的查詢接口非常靈活,可以用類似sql
的方式組合查詢條件。
2.1. 比較
比較是最常用的過(guò)濾手段,
比如:相等比較,檢索2023年3月1日的成交數(shù)據(jù)。
df.query('dealDate == "2023.03.01"').head()
同樣,也可以進(jìn)行大于或者小于的比較:
# 成交總價(jià)大于1000萬(wàn)的房屋
df.query('totalPrice > 1000').head()
# 成交總價(jià)小于100萬(wàn)的房屋
df.query('totalPrice < 100').head()
2.2. 多條件組合
在query
函數(shù)中組合查詢條件也非常簡(jiǎn)單,它的查詢字符串中可以直接使用邏輯運(yùn)算符。
比如,邏輯與的查詢,用 &
來(lái)連接查詢條件。
# 總價(jià)大于1000萬(wàn),且每平米單價(jià)小于6萬(wàn)的房屋
df.query('totalPrice > 1000 & unitPrice < 60000').head()
邏輯或的查詢,用|
來(lái)連接查詢條件。
# 總價(jià)小于200萬(wàn),或者每平米單價(jià)小于3萬(wàn)的房屋
df.query('totalPrice < 200 | unitPrice < 30000').head()
因?yàn)槭?strong>邏輯或,兩個(gè)條件滿足一個(gè)就行,所以查詢出的數(shù)據(jù)有總價(jià)大于200萬(wàn),也有單價(jià)大于3萬(wàn)的數(shù)據(jù)。
還有一個(gè)邏輯非的運(yùn)算,用 not
關(guān)鍵字來(lái)表示。
2.3. 模糊查詢
除了比較,也可以對(duì)字符串進(jìn)行模糊查詢,類似sql
中的LIKE
檢索。
比如,查詢名稱包含萬(wàn)科的樓盤。
# 名稱包含萬(wàn)科
df.query('name.str.contains("萬(wàn)科")').head(5)
包含的字符串也支持正則表達(dá)式匹配,比如,查詢?nèi)f科樓盤中3室的房屋。
df.query('name.str.contains("萬(wàn)科.*3室")').head(5)
2.4. 匹配列表
查詢時(shí),可以匹配某個(gè)列表中的一項(xiàng),類似于SQL
中的IN
檢索。
比如,查詢?nèi)我馊齻€(gè)日期的房屋成交信息,且總價(jià)大于500萬(wàn)。
dates = ["2023.02.28", "2022.12.11", "2022.04.10"]
df.query('totalPrice > 600 & dealDate == @dates').head(5)
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-837878.html
3. 總結(jié)
pandas
的DataFrame
提供了各種過(guò)濾檢索數(shù)據(jù)的方式,與之相比,query
函數(shù)允許用戶以字符串的形式對(duì)DataFrame
進(jìn)行查詢操作。
這樣的好處有:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-837878.html
- 直觀易讀:類似SQL的語(yǔ)法,且查詢語(yǔ)句以字符串形式表示,易于理解和閱讀,有助于提高代碼的可讀性
- 靈活性高:支持復(fù)雜的查詢條件,可以通過(guò)邏輯運(yùn)算符組合多個(gè)條件,也支持模糊的匹配方式
- 減少代碼量:可以減少編寫過(guò)濾和條件判斷的代碼量,使代碼更加簡(jiǎn)潔
- 易于調(diào)試:由于查詢語(yǔ)句以字符串形式表示,因此在調(diào)試過(guò)程中可以輕松地打印和查看查詢條件
到了這里,關(guān)于別再低效篩選數(shù)據(jù)了!試試pandas query函數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!