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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

pandas篩選數據的8個小技巧

數據分析與開發 ? 來源:Python數據科學 ? 作者:東哥起飛 ? 2021-09-26 11:04 ? 次閱讀

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

fromsklearnimportdatasets
importpandasaspd

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

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

1. []

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

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

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

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

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應該是最常用的兩種查詢方法了。loc標簽值(列名和行索引取值)訪問,iloc按數字索引訪問,均支持單值訪問或切片查詢。除了可以像[]按條件篩選數據以外,loc還可以指定返回的列變量,**從行和列兩個維度篩選。**比如下面這個例子,按條件篩選出數據,并篩選出指定變量,然后賦值。

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

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

3. isin

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

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

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

當然,也可以做取反操作,在篩選條件前加~符號即可。

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

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

4. str.contains

上面的舉例都是數值大小比較的篩選條件,除數值以外當然也有字符串的查詢需求pandas里實現字符串的模糊篩選,可以用.str.contains()來實現,有點像在SQL語句里用的是like。下面利用titanic的數據舉例,篩選出人名中包含Mrs或者Lily的數據,|或邏輯符號在引號內。

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

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

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

  • case=True:使用case指定區分大小寫
  • na=True:就表示把有NAN的轉換為布爾值True
  • flags=re.IGNORECASE:標志傳遞到re模塊,例如re.IGNORECASE
  • regex=True:regex :如果為True,則假定第一個字符串是正則表達式,否則還是字符串

5. where/mask

在SQL里,我們知道where的功能是要把滿足條件的篩選出來。pandas中where也是篩選,但用法稍有不同。where接受的條件需要是布爾類型的,如果不滿足匹配條件,就被賦值為默認的NaN或其他指定值。舉例如下,將Sexmale當作篩選條件,cond就是一列布爾型的Series,非male的值就都被賦值為默認的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='低質量男性',inplace=True)

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

maskwhere是一對操作,與where正好反過來。

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

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

6. query

這是一種非常優雅的篩選數據方式。所有的篩選操作都在''之內完成。

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

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

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

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

query里還可以通過@來設定變量。

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

7. filter

filter是另外一個獨特的篩選功能。filter不篩選具體數據,而是篩選特定的行或列。它支持三種篩選方式:

  • items:固定列名
  • regex:正則表達式
  • 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方法意思是,如果至少有一個值為True結果便為Trueall需要所有值為True結果才為True,比如下面這樣。

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

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

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

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

再比如查看含有空值的行數。

>>>train.isnull().any(axis=1).sum()
>>>708
編輯:jq
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7104

    瀏覽量

    89298
  • SQL
    SQL
    +關注

    關注

    1

    文章

    771

    瀏覽量

    44192
  • python
    +關注

    關注

    56

    文章

    4801

    瀏覽量

    84883

原文標題:pandas 篩選數據的 8 個騷操作

文章出處:【微信號:DBDevs,微信公眾號:數據分析與開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    DAC3283到底是8位的LVDS輸入數據還是16位的LVDS輸入數據

    請問這個DAC到底是8位的LVDS輸入數據還是16位的LVDS輸入數據啊。。也就是說,這個I路的15:8和7:0,是一16位
    發表于 12-31 08:27

    如何進行元器件篩選

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

    Kaggle知識點:使用大模型進行特征篩選

    數據科學數據挖掘的核心是是對海量數據進行有效的篩選和分析。傳統上數據篩選依賴于
    的頭像 發表于 12-03 01:06 ?1297次閱讀
    Kaggle知識點:使用大模型進行特征<b class='flag-5'>篩選</b>

    ADS131M08采集數據8通道中有個別通道數據不準,為什么?

    您好,我們用ADS131M08這個芯片同時采集數據8通道中有1-2通道采集的數據誤差絕對值差別比較大。萬用表量了是2.1V左右,但采
    發表于 11-29 11:37

    RAPIDS cuDF將pandas提速近150倍

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

    使用原代腫瘤細胞進行藥物篩選的數字微流控系統

    不佳甚至會產生不良反應。臨床數據表明,某種藥物對癌癥的治療過程有大量基因參與,基于基因的精準醫療難以滿足患者需求。從患者活檢或腫瘤樣本中對原發性腫瘤細胞進行藥物篩選可提供關于特定腫瘤藥物敏感性的直接信息,但
    的頭像 發表于 11-18 10:05 ?729次閱讀
    使用原代腫瘤細胞進行藥物<b class='flag-5'>篩選</b>的數字微流控系統

    PCIe實時運動控制卡的雙盤視覺篩選機上位機開發應用

    PCIe實時運動控制卡的雙盤視覺篩選機上位機開發應用
    的頭像 發表于 10-10 10:15 ?371次閱讀
    PCIe實時運動控制卡的雙盤視覺<b class='flag-5'>篩選</b>機上位機開發應用

    PCM1865能否通過配置,同時采集4立體聲(即8聲道)的音頻數據

    一片PCM1865,能否通過配置,同時采集4立體聲(即8聲道)的音頻數據
    發表于 09-29 07:32

    pytorch如何訓練自己的數據

    pandas matplotlib 數據準備 在訓練模型之前,我們需要對數據進行預處理。這包括數據清洗、數據增強、
    的頭像 發表于 07-11 10:04 ?574次閱讀

    UL Solutions在日本新設電池外殼材料篩選實驗室

    全球應用安全科學領域的領導者UL Solutions近日宣布,在日本三重縣伊勢市新設立了一電池外殼材料篩選(BEMS)實驗室。這一舉措旨在協助汽車制造商及其供應商在安全環境中評估并比較各種電池外殼材料的性能,進而提升電動汽車(EV)電池的安全性。
    的頭像 發表于 06-03 11:18 ?546次閱讀

    用STM8做一用于抽取頻譜的東西, 如何采樣128點用于FFT數據計算?

    各位前輩和大俠們: 想用STM8做一用于抽取頻譜的東西, 采用128點的FFT運算, 采樣率為16K, 這里就需要一次采樣128點用于FFT數據計算. 該如何采樣這128
    發表于 05-16 08:10

    stm32串口dma發送數據,發送的數據一直為數組的第一字節81為什么?

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

    STM8 UART1只能接收到5個數據中的最后一,為什么?

    instruction. */ } 現在是我上位機發了5個數據入0x01 0x00 0x00 0x00 0x01 然后我Debug模式下看到的變量 ColorData、RData 、GData
    發表于 04-30 07:57

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

    CAN共有28篩選器組,每個篩選器可配置4種模式,分別是132位掩碼,232位標識符,2
    發表于 03-21 07:18

    mapgis屬性篩選表達式

    MapGIS是一種廣泛應用于地理信息系統(GIS)領域的軟件平臺。它提供了多種功能和工具,用于處理和分析地理數據。屬性篩選是MapGIS中一項重要的功能,它允許用戶根據特定的屬性條件來篩選要素。在這
    的頭像 發表于 02-25 10:58 ?1720次閱讀
    主站蜘蛛池模板: 宅男在线看片| 四虎影院大全| 亚洲欧美在线一区| 欧美美女一区二区三区| 免费国产高清精品一区在线| 激情六月色| 天天视频国产精品| 深爱婷婷网| 日韩欧美国产电影| 免费一级做a爰片久久毛片| 激情综合网激情| 国产精品九九久久一区hh | 激情综合丝袜美女一区二区| h视频在线看| 成人三级网址| 特级做a爰片毛片免费看| 日韩免费网站| 国内外精品免费视频| 亚洲国产精品日韩专区avtube| 手机看片福利盒子久久| 2020狠狠操| 高清视频免费观看| 一女多夫嗯啊高h| 亚洲国产精品乱码一区二区三区| 色妞影视| 国产美女特级嫩嫩嫩bbb| 天天做爽夜夜做爽| 69国产视频| 久久99热精品| 色l情视频| 国产网站免费| 天天干天天天天| 欧美精品激情| 曰本又色又爽又黄三级视频| 日本三级免费| bt天堂网www连接| 国产无套视频在线观看香蕉| 日本一视频一区视频二区| 天堂bt资源在线官网| 黄色一级一毛片| 手机免费看大片|