在线观看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

    文章

    7233

    瀏覽量

    90813
  • SQL
    SQL
    +關注

    關注

    1

    文章

    780

    瀏覽量

    44731
  • python
    +關注

    關注

    56

    文章

    4822

    瀏覽量

    85920

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

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    具有4降壓穩壓器、1LDO和8位ADC的DA9080 PMIC數據手冊

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

    Aigtek高電壓放大器微流控細胞篩選測試

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

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

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

    如何進行元器件篩選

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

    dac38rf89想發送的8數,應該如何安排這8數,在128bit中的位置呢?

    最近我正在用dac38rf89,用到41121模式,該模式下數據格式,如果JESD204b端為FPGA的話,需要發送128bit數據,對應于16*8,即發送8
    發表于 12-12 06:06

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

    數據科學數據挖掘的核心是是對海量數據進行有效的篩選和分析。傳統上數據篩選依賴于
    的頭像 發表于 12-03 01:06 ?1584次閱讀
    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 ?502次閱讀
    RAPIDS cuDF將<b class='flag-5'>pandas</b>提速近150倍

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

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

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

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

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

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

    pytorch如何訓練自己的數據

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

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

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

    用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
    主站蜘蛛池模板: 中文字幕卡二和卡三的视频 | 夜夜夜夜夜夜夜猛噜噜噜噜噜噜 | 成人影院在线观看 | 性欧美日本 | 黄色毛片网 | 国产三级日本三级在线播放 | 国产精品主播在线观看 | 国产精品嫩草影院一二三区入口 | 天堂网在线www最新版在线 | 中文字幕国产一区 | 欧美黄色影院 | 日韩色影视 | 午夜性视频 | 亲女乱h文小兰第一次 | 婷婷午夜天 | 性欧美大战久久久久久久野外 | 亚洲一区二区三区播放在线 | 国产精品综合色区在线观看 | 天天干天天爽天天射 | 97午夜影院| 成人在线天堂 | 国产免费一级在线观看 | 免费啪视频在线观看免费的 | www.色黄| 色香影院 | 午夜影院免费体验 | 一级免费黄色片 | 四虎在线观看免费视频 | 日本免费a级片 | 国内色综合精品视频在线 | aaa在线观看| 特级毛片aaaa免费观看 | 伊人成人在线 | 国产caob| 黄色网址播放 | 国内真实实拍伦视频在线观看 | 久久亚洲aⅴ精品网站婷婷 久久亚洲成人 | 国产欧美网站 | 成人综合婷婷国产精品久久免费 | 成人性视频网站 | 天天综合网天天综合色 |