在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

pandas篩選數(shù)據(jù)的8個(gè)小技巧

數(shù)據(jù)分析與開(kāi)發(fā) ? 來(lái)源:Python數(shù)據(jù)科學(xué) ? 作者:東哥起飛 ? 2021-09-26 11:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

日常用Python做數(shù)據(jù)分析最常用到的就是查詢篩選了,按各種條件、各種維度以及組合挑出我們想要的數(shù)據(jù),以方便我們分析挖掘。東哥總結(jié)了日常查詢和篩選常用的種騷操作,供各位學(xué)習(xí)參考。本文采用sklearnboston數(shù)據(jù)舉例介紹。

fromsklearnimportdatasets
importpandasaspd

boston=datasets.load_boston()
df=pd.DataFrame(boston.data,columns=boston.feature_names)

9f72463a-1114-11ec-8fb8-12bb97331649.png

1. []

第一種是最快捷方便的,直接在dataframe的[]中寫(xiě)篩選的條件或者組合條件。比如下面,想要篩選出大于NOX這變量平均值的所有數(shù)據(jù),然后按NOX降序排序。

df[df['NOX']>df['NOX'].mean()].sort_values(by='NOX',ascending=False).head()

9f8862e4-1114-11ec-8fb8-12bb97331649.png

當(dāng)然,也可以使用組合條件,條件之間使用邏輯符號(hào)& |等。比如下面這個(gè)例子除了上面條件外再加上且條件CHAS為1,注意邏輯符號(hào)分開(kāi)的條件要用()隔開(kāi)。

df[(df['NOX']>df['NOX'].mean())&(df['CHAS']==1)].sort_values(by='NOX',ascending=False).head()

9f96c9ba-1114-11ec-8fb8-12bb97331649.png

2. loc/iloc

[]之外,loc/iloc應(yīng)該是最常用的兩種查詢方法了。loc標(biāo)簽值(列名和行索引取值)訪問(wèn),iloc按數(shù)字索引訪問(wèn),均支持單值訪問(wèn)或切片查詢。除了可以像[]按條件篩選數(shù)據(jù)以外,loc還可以指定返回的列變量,**從行和列兩個(gè)維度篩選。**比如下面這個(gè)例子,按條件篩選出數(shù)據(jù),并篩選出指定變量,然后賦值。

df.loc[(df['NOX']>df['NOX'].mean()),['CHAS']]=2

9fae84a6-1114-11ec-8fb8-12bb97331649.png

3. isin

上面我們篩選條件< > == !=都是個(gè)范圍,但很多時(shí)候是需要鎖定某些具體的值的,這時(shí)候就需要isin了。比如我們要限定NOX取值只能為0.538,0.713,0.437中時(shí)。

df.loc[df['NOX'].isin([0.538,0.713,0.437]),:].sample(5)

9fbd671e-1114-11ec-8fb8-12bb97331649.png

當(dāng)然,也可以做取反操作,在篩選條件前加~符號(hào)即可。

df.loc[~df['NOX'].isin([0.538,0.713,0.437]),:].sample(5)

9fcf1112-1114-11ec-8fb8-12bb97331649.png

4. str.contains

上面的舉例都是數(shù)值大小比較的篩選條件,除數(shù)值以外當(dāng)然也有字符串的查詢需求pandas里實(shí)現(xiàn)字符串的模糊篩選,可以用.str.contains()來(lái)實(shí)現(xiàn),有點(diǎn)像在SQL語(yǔ)句里用的是like。下面利用titanic的數(shù)據(jù)舉例,篩選出人名中包含Mrs或者Lily的數(shù)據(jù),|或邏輯符號(hào)在引號(hào)內(nèi)。

train.loc[train['Name'].str.contains('Mrs|Lily'),:].head()

9fe358de-1114-11ec-8fb8-12bb97331649.png

.str.contains()中還可以設(shè)置正則化篩選邏輯。

  • case=True:使用case指定區(qū)分大小寫(xiě)
  • na=True:就表示把有NAN的轉(zhuǎn)換為布爾值True
  • flags=re.IGNORECASE:標(biāo)志傳遞到re模塊,例如re.IGNORECASE
  • regex=True:regex :如果為T(mén)rue,則假定第一個(gè)字符串是正則表達(dá)式,否則還是字符串

5. where/mask

在SQL里,我們知道where的功能是要把滿足條件的篩選出來(lái)。pandas中where也是篩選,但用法稍有不同。where接受的條件需要是布爾類(lèi)型的,如果不滿足匹配條件,就被賦值為默認(rèn)的NaN或其他指定值。舉例如下,將Sexmale當(dāng)作篩選條件,cond就是一列布爾型的Series,非male的值就都被賦值為默認(rèn)的NaN空值了。

cond=train['Sex']=='male'
train['Sex'].where(cond,inplace=True)
train.head()

9ff0217c-1114-11ec-8fb8-12bb97331649.png

也可以用other賦給指定值。

cond=train['Sex']=='male'
train['Sex'].where(cond,other='FEMALE',inplace=True)

9ffc2c10-1114-11ec-8fb8-12bb97331649.png

甚至還可以寫(xiě)組合條件。

train['quality']=''
traincond1=train['Sex']=='male'
cond2=train['Age']>25

train['quality'].where(cond1&cond2,other='低質(zhì)量男性',inplace=True)

a00930cc-1114-11ec-8fb8-12bb97331649.png

maskwhere是一對(duì)操作,與where正好反過(guò)來(lái)。

train['quality'].mask(cond1&cond2,other='低質(zhì)量男性',inplace=True)

a0174b8a-1114-11ec-8fb8-12bb97331649.png

6. query

這是一種非常優(yōu)雅的篩選數(shù)據(jù)方式。所有的篩選操作都在''之內(nèi)完成。

#常用方式
train[train.Age>25]
#query方式
train.query('Age>25')

上面的兩種方式效果上是一樣的。再比如復(fù)雜點(diǎn)的,加入上面的str.contains用法的組合條件,注意條件里有''時(shí),兩邊要用""包住。

train.query("Name.str.contains('William')&Age>25")

a02756e2-1114-11ec-8fb8-12bb97331649.png

query里還可以通過(guò)@來(lái)設(shè)定變量。

name='William'
train.query("Name.str.contains(@name)")

7. filter

filter是另外一個(gè)獨(dú)特的篩選功能。filter不篩選具體數(shù)據(jù),而是篩選特定的行或列。它支持三種篩選方式:

  • items:固定列名
  • regex:正則表達(dá)式
  • like:以及模糊查詢
  • axis:控制是行index或列columns的查詢

下面舉例介紹下。

train.filter(items=['Age','Sex'])

train.filter(regex='S',axis=1)#列名包含S的

train.filter(like='2',axis=0)#索引中有2的

a052a612-1114-11ec-8fb8-12bb97331649.png

train.filter(regex='^2',axis=0).filter(like='S',axis=1)

8. any/all

any方法意思是,如果至少有一個(gè)值為True結(jié)果便為Trueall需要所有值為True結(jié)果才為True,比如下面這樣。

>>train['Cabin'].all()
>>False
>>train['Cabin'].any()
>>True

anyall一般是需要和其它操作配合使用的,比如查看每列的空值情況。

train.isnull().any(axis=0)

a088f6b8-1114-11ec-8fb8-12bb97331649.png

再比如查看含有空值的行數(shù)。

>>>train.isnull().any(axis=1).sum()
>>>708
編輯:jq
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7250

    瀏覽量

    91518
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    782

    瀏覽量

    44960
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4825

    瀏覽量

    86456

原文標(biāo)題:pandas 篩選數(shù)據(jù)的 8 個(gè)騷操作

文章出處:【微信號(hào):DBDevs,微信公眾號(hào):數(shù)據(jù)分析與開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    具有4個(gè)降壓穩(wěn)壓器、1個(gè)LDO和8位ADC的DA9080 PMIC數(shù)據(jù)手冊(cè)

    鎖定(UVLO)、過(guò)流保護(hù)(OC)和用于故障保護(hù)功能的熱保護(hù)。 DA9080 采用32 引腳 QFN 封裝。 *附件:具有4個(gè)降壓穩(wěn)壓器、1個(gè)LDO和8位ADC的DA9080 PMIC數(shù)據(jù)
    的頭像 發(fā)表于 04-02 16:54 ?326次閱讀
    具有4<b class='flag-5'>個(gè)</b>降壓穩(wěn)壓器、1<b class='flag-5'>個(gè)</b>LDO和<b class='flag-5'>8</b>位ADC的DA9080 PMIC<b class='flag-5'>數(shù)據(jù)</b>手冊(cè)

    高端水果價(jià)格跳水!高光譜技術(shù)如何影響水果品質(zhì)篩選

    高光譜技術(shù)在水果果實(shí)的品質(zhì)檢測(cè)中展現(xiàn)了強(qiáng)大的優(yōu)勢(shì),能夠精準(zhǔn)識(shí)別損傷部位,并有效評(píng)估損傷程度,從而提升篩選效率和果品質(zhì)量。無(wú)論是車(chē)?yán)遄印⑶嘞憬哆€是黃桃,高光譜技術(shù)都能提供一致且可靠的檢測(cè)結(jié)果,確保水果的質(zhì)量符合市場(chǎng)要求。
    的頭像 發(fā)表于 02-19 16:16 ?314次閱讀
    高端水果價(jià)格跳水!高光譜技術(shù)如何影響水果品質(zhì)<b class='flag-5'>篩選</b>?

    Aigtek高電壓放大器微流控細(xì)胞篩選測(cè)試

    微流控技術(shù)是一種在微小尺度上操控流體的高科技技術(shù),具有極高的應(yīng)用價(jià)值。其中,微流控細(xì)胞篩選作為一種重要的應(yīng)用方向,已經(jīng)引起了廣泛關(guān)注。本文Aigtek 安泰電子 將介紹微流控細(xì)胞篩選的基本概念
    的頭像 發(fā)表于 01-20 16:33 ?402次閱讀
    Aigtek高電壓放大器微流控細(xì)胞<b class='flag-5'>篩選</b>測(cè)試

    DAC3283到底是8位的LVDS輸入數(shù)據(jù)還是16位的LVDS輸入數(shù)據(jù)

    請(qǐng)問(wèn)這個(gè)DAC到底是8位的LVDS輸入數(shù)據(jù)還是16位的LVDS輸入數(shù)據(jù)啊。。也就是說(shuō),這個(gè)I路的15:8和7:0,是一個(gè)16位
    發(fā)表于 12-31 08:27

    將ADS8638設(shè)置為自動(dòng)模式,8個(gè)通道采集,但是讀到的數(shù)據(jù)通道順序是70123456,為什么?

    我將ADS8638設(shè)置為自動(dòng)模式,8個(gè)通道采集,但是讀到的數(shù)據(jù)通道順序是70123456,數(shù)據(jù)也是正確的,通道序號(hào)第一個(gè)不是應(yīng)該是0通道的
    發(fā)表于 12-20 14:45

    如何進(jìn)行元器件篩選

    電子元件的核心作用在電子設(shè)備中,電子元件扮演著基礎(chǔ)而關(guān)鍵的角色,它們是電子通信、數(shù)據(jù)處理和自動(dòng)化控制等技術(shù)領(lǐng)域的基石。篩選的必要性為了確保電子元件在其整個(gè)使用壽命內(nèi)都能穩(wěn)定工作,避免因元件本身的缺陷
    的頭像 發(fā)表于 12-19 12:37 ?873次閱讀
    如何進(jìn)行元器件<b class='flag-5'>篩選</b>?

    想測(cè)試一個(gè)8通道的熱電偶,有什么芯片可以直接測(cè)試然后出數(shù)據(jù)嗎?

    我想測(cè)試一個(gè)8通道的熱電偶,有什么芯片可以直接測(cè)試然后出數(shù)據(jù)嗎?
    發(fā)表于 12-16 07:46

    dac38rf89想發(fā)送的8個(gè)數(shù),應(yīng)該如何安排這8個(gè)數(shù),在128bit中的位置呢?

    最近我正在用dac38rf89,用到41121模式,該模式下數(shù)據(jù)格式,如果JESD204b端為FPGA的話,需要發(fā)送128bit數(shù)據(jù),對(duì)應(yīng)于16*8,即發(fā)送8
    發(fā)表于 12-12 06:06

    Kaggle知識(shí)點(diǎn):使用大模型進(jìn)行特征篩選

    數(shù)據(jù)科學(xué)數(shù)據(jù)挖掘的核心是是對(duì)海量數(shù)據(jù)進(jìn)行有效的篩選和分析。傳統(tǒng)上數(shù)據(jù)篩選依賴于
    的頭像 發(fā)表于 12-03 01:06 ?1686次閱讀
    Kaggle知識(shí)點(diǎn):使用大模型進(jìn)行特征<b class='flag-5'>篩選</b>

    ADS131M08采集數(shù)據(jù)8個(gè)通道中有個(gè)別通道數(shù)據(jù)不準(zhǔn),為什么?

    您好,我們用ADS131M08這個(gè)芯片同時(shí)采集數(shù)據(jù)8個(gè)通道中有1-2個(gè)通道采集的數(shù)據(jù)誤差絕對(duì)值差別比較大。萬(wàn)用表量了是2.1V左右,但采
    發(fā)表于 11-29 11:37

    RAPIDS cuDF將pandas提速近150倍

    在 NVIDIA GTC 2024 上,NVIDIA 宣布,RAPIDS cuDF 當(dāng)前已能夠?yàn)?950 萬(wàn) pandas 用戶帶來(lái) GPU 加速,且無(wú)需修改代碼。
    的頭像 發(fā)表于 11-20 09:52 ?613次閱讀
    RAPIDS cuDF將<b class='flag-5'>pandas</b>提速近150倍

    使用原代腫瘤細(xì)胞進(jìn)行藥物篩選的數(shù)字微流控系統(tǒng)

    不佳甚至?xí)a(chǎn)生不良反應(yīng)。臨床數(shù)據(jù)表明,某種藥物對(duì)癌癥的治療過(guò)程有大量基因參與,基于基因的精準(zhǔn)醫(yī)療難以滿足患者需求。從患者活檢或腫瘤樣本中對(duì)原發(fā)性腫瘤細(xì)胞進(jìn)行藥物篩選可提供關(guān)于特定腫瘤藥物敏感性的直接信息,但
    的頭像 發(fā)表于 11-18 10:05 ?8888次閱讀
    使用原代腫瘤細(xì)胞進(jìn)行藥物<b class='flag-5'>篩選</b>的數(shù)字微流控系統(tǒng)

    PCIe實(shí)時(shí)運(yùn)動(dòng)控制卡的雙盤(pán)視覺(jué)篩選機(jī)上位機(jī)開(kāi)發(fā)應(yīng)用

    PCIe實(shí)時(shí)運(yùn)動(dòng)控制卡的雙盤(pán)視覺(jué)篩選機(jī)上位機(jī)開(kāi)發(fā)應(yīng)用
    的頭像 發(fā)表于 10-10 10:15 ?723次閱讀
    PCIe實(shí)時(shí)運(yùn)動(dòng)控制卡的雙盤(pán)視覺(jué)<b class='flag-5'>篩選</b>機(jī)上位機(jī)開(kāi)發(fā)應(yīng)用

    PCM1865能否通過(guò)配置,同時(shí)采集4個(gè)立體聲(即8個(gè)聲道)的音頻數(shù)據(jù)

    一片PCM1865,能否通過(guò)配置,同時(shí)采集4個(gè)立體聲(即8個(gè)聲道)的音頻數(shù)據(jù)
    發(fā)表于 09-29 07:32

    pytorch如何訓(xùn)練自己的數(shù)據(jù)

    pandas matplotlib 數(shù)據(jù)準(zhǔn)備 在訓(xùn)練模型之前,我們需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理。這包括數(shù)據(jù)清洗、數(shù)據(jù)增強(qiáng)、
    的頭像 發(fā)表于 07-11 10:04 ?986次閱讀
    主站蜘蛛池模板: 一区视频 | 视频在线观看高清免费看 | 色中文字幕 | 亚洲免费视频在线观看 | 国内色视频 | 在线视频免费观看 | 天天综合天天看夜夜添狠狠玩 | 女人张开腿双腿让男人桶 | 91啪免费网站在线观看 | 午夜欧美成人久久久久久 | 国产黄色小视频网站 | 九九热精品国产 | 97影院理伦在线观看 | 成人午夜小视频手机在线看 | 丝袜紧身裙国产在线播放 | h网址在线观看 | 免费观看一级特黄三大片视频 | 国产性做久久久久久 | 色播丁香| 色多多福利网站老司机 | 高清视频免费观看 | 美女视频黄a视频美女大全 美女视频一区二区 | www.亚洲免费 | 免费人成在线观看视频色 | 免费一级做a爰片久久毛片 免费一看一级毛片 | 国产精品单位女同事在线 | 一级黄色片欧美 | 拍真实国产伦偷精品 | 12306影院午夜入口 | 欧美婷婷色 | 日韩三级在线免费观看 | 亚洲狠狠色丁香婷婷综合 | 激情五月激情综合网 | 欧美亚洲综合另类型色妞 | 欧美a性 | 男啪女色黄无遮挡免费观看 | 被男同桌摸内裤好爽视频 | 午夜影院黄 | 黄网站免费大全 | 国产欧美精品午夜在线播放 | 国产福利不卡一区二区三区 |