色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

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

數(shù)據(jù)分析與開發(fā) ? 來源: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的[]中寫篩選的條件或者組合條件。比如下面,想要篩選出大于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)分開的條件要用()隔開。

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)簽值(列名和行索引取值)訪問,iloc按數(shù)字索引訪問,均支持單值訪問或切片查詢。除了可以像[]按條件篩選數(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()來實(shí)現(xiàn),有點(diǎn)像在SQL語句里用的是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ū)分大小寫
  • na=True:就表示把有NAN的轉(zhuǎn)換為布爾值True
  • flags=re.IGNORECASE:標(biāo)志傳遞到re模塊,例如re.IGNORECASE
  • regex=True:regex :如果為True,則假定第一個(gè)字符串是正則表達(dá)式,否則還是字符串

5. where/mask

在SQL里,我們知道where的功能是要把滿足條件的篩選出來。pandas中where也是篩選,但用法稍有不同。where接受的條件需要是布爾類型的,如果不滿足匹配條件,就被賦值為默認(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

甚至還可以寫組合條件。

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正好反過來。

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里還可以通過@來設(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)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7067

    瀏覽量

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

    關(guān)注

    1

    文章

    766

    瀏覽量

    44160
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84745

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

    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 ?1258次閱讀
    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ì)值差別比較大。萬用表量了是2.1V左右,但采
    發(fā)表于 11-29 11:37

    RAPIDS cuDF將pandas提速近150倍

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

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

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

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

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

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

    一片PCM1865,能否通過配置,同時(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 ?551次閱讀

    用STM8做一個(gè)用于抽取頻譜的東西, 如何采樣128個(gè)點(diǎn)用于FFT數(shù)據(jù)計(jì)算?

    各位前輩和大俠們: 想用STM8做一個(gè)用于抽取頻譜的東西, 采用128點(diǎn)的FFT運(yùn)算, 采樣率為16K, 這里就需要一次采樣128個(gè)點(diǎn)用于FFT數(shù)據(jù)計(jì)算. 該如何采樣這128
    發(fā)表于 05-16 08:10

    stm32串口dma發(fā)送數(shù)據(jù),發(fā)送的數(shù)據(jù)一直為數(shù)組的第一個(gè)字節(jié)8個(gè)1為什么?

    uint8_t tx[8]={1,2,3,4,5,6,7,8}; HAL_UART_Transmit_DMA( huart1, tx, 8); 發(fā)送的
    發(fā)表于 05-14 06:18

    STM8 UART1只能接收到5個(gè)數(shù)據(jù)中的最后一個(gè),為什么?

    instruction. */ } 現(xiàn)在是我上位機(jī)發(fā)了5個(gè)數(shù)據(jù)入0x01 0x00 0x00 0x00 0x01 然后我Debug模式下看到的變量 ColorData、RData 、GData
    發(fā)表于 04-30 07:57

    為什么stm32F407ZET6 CAN1的14-28篩選器不起作用?

    CAN共有28個(gè)篩選器組,每個(gè)篩選器可配置4種模式,分別是1個(gè)32位掩碼,2個(gè)32位標(biāo)識(shí)符,2個(gè)
    發(fā)表于 03-21 07:18

    mapgis屬性篩選表達(dá)式

    MapGIS是一種廣泛應(yīng)用于地理信息系統(tǒng)(GIS)領(lǐng)域的軟件平臺(tái)。它提供了多種功能和工具,用于處理和分析地理數(shù)據(jù)。屬性篩選是MapGIS中一項(xiàng)重要的功能,它允許用戶根據(jù)特定的屬性條件來篩選要素。在這
    的頭像 發(fā)表于 02-25 10:58 ?1661次閱讀

    M451讓串口接收8個(gè)字節(jié)數(shù)據(jù),為什么每次用串口調(diào)試工具接收到的數(shù)據(jù)都是2次RxData數(shù)據(jù)

    如下面的一段程序,就是讓串口接收8個(gè)字節(jié)數(shù)據(jù),然后把它們通過串口發(fā)送出去。 uint8_t RxData[8]; uint8_t i = 0
    發(fā)表于 01-17 06:44
    主站蜘蛛池模板: 国产麻豆福利AV在线观看| 色琪琪无码成人AV视频| 免费看黄的片多多APP下载| 欧美亚洲日本日韩在线| 天天躁人人躁人人躁狂躁| 一个色夫导航| 爱暖暖1000部免费| 国产视频精品在线偷拍| 久久婷五月综合色啪首页| 日本阿v片在线播放免费| 亚洲精品日韩在线观看视频| 97免费人妻在线观看| 国产精品熟女人妻| 免费精品国产人妻国语麻豆| 特级毛片AAAAAA| 最新国产三级在线不卡视频| 国产精品99久久久久久WWW| 久久视频这里只精品6国产| 日日噜噜噜噜夜夜爽亚洲精品| 一道精品视频一区二区| 哒哒哒高清视频在线观看| 久久久精品久久久久三级| 色在线视频亚洲欧美| 在线观看国产区| 国产精品毛片AV久久97| 嫩草影院久久国产精品| 亚洲免费三级电影| 吃寂寞寡妇的奶| 啦啦啦WWW在线观看免费高清版| 天天久久狠狠色综合| 99久久热视频只有精品| 狠狠色狠色综合曰曰| 色欲人妻无码AV精品一区二区| 91国在线视频| 精品国产美女AV久久久久| 色欲AV亚洲情无码AV蜜桃| 99精品国产免费观看视频| 九九热国产视频| 午夜免费小视频| free俄罗斯性xxxxhd派对| 久久久无码精品无码国产人妻丝瓜 |