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

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

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

使用pandas進(jìn)行數(shù)據(jù)選擇和過濾的基本技術(shù)和函數(shù)

冬至子 ? 來(lái)源:思否AI ? 作者:思否AI ? 2023-12-01 10:14 ? 次閱讀

Python pandas庫(kù)提供了幾種選擇和過濾數(shù)據(jù)的方法,如loc、iloc、[]括號(hào)操作符、query、isin、between等等

本文將介紹使用pandas進(jìn)行數(shù)據(jù)選擇和過濾的基本技術(shù)和函數(shù)。無(wú)論是需要提取特定的行或列,還是需要應(yīng)用條件過濾,pandas都可以滿足需求。

選擇列

loc[]:根據(jù)標(biāo)簽選擇行和列。df.row_label loc, column_label]

也可以使用loc進(jìn)行切片操作:

df.loc['row1_label':'row2_label' , 'column1_label':'column2_label']

例如

# Using loc for label-based selection
 df.loc[:, 'Customer Country':'Customer State']

# Using loc for label-based selection
 df.loc[[0,1,2], 'Customer Country':'Customer State']

iloc[]:根據(jù)位置索引選擇行和列。df.iloc [row_position column_position]

可以使用iloc進(jìn)行切片操作:

df.iloc['row1_position':'row2_position','col1_position':'col2_position']

例如:

# Using iloc for index-based selection
 df.iloc[[0,1,2,3] , [3,4,5,6,7,8]]
 
 # or
 df.iloc[[0,1,2,3] , 3:9]

# Using iloc for index-based selection
 df.iloc[:, 3:8]

[]括號(hào)操作符:它允許選擇一個(gè)或多個(gè)列。df[['column_label']]或df[['column1', 'column2']]]

# Selecting a single column
 df[['Customer Country']]

# Selecting multiple columns
 df[['Customer Country', 'Customer State']]

過濾行

loc[]:按標(biāo)簽過濾行。df.loc(條件)

# Using loc for filtering rows
 condition = df['Order Quantity']  > 3
 df.loc[condition]
 
 # or
 df.loc[df['Order Quantity']  > 3]

# Using loc for filtering rows
 df.loc[df['Customer Country'] == 'United States']

iloc():按位置索引篩選行。

# Using iloc for filtering rows
 df.iloc[[0, 2, 4]]

# Using iloc for filtering rows
 df.iloc[:3, :2]

[]括號(hào)操作符:它允許根據(jù)條件過濾行。df(條件)

# Using [] bracket operator for filtering rows# Using [] bracket operator for filtering rows
 condition = df['Order Quantity'] > 3
 df[condition]
 
 # or
 df[df['Order Quantity'] > 3]

isin([]):基于列表過濾數(shù)據(jù)。df (df (column_name”).isin ([value1, ' value2 ']))

# Using isin for filtering rows
 df[df['Customer Country'].isin(['United States', 'Puerto Rico'])]

# Filter rows based on values in a list and select spesific columns
 df[["Customer Id", "Order Region"]][df['Order Region'].isin(['Central America', 'Caribbean'])]

# Using NOT isin for filtering rows
 df[~df['Customer Country'].isin(['United States'])]

query():方法用于根據(jù)類似sql的條件表達(dá)式選擇數(shù)據(jù)。df.query(條件)

如果列名包含空格或特殊字符,首先應(yīng)該使用rename()函數(shù)來(lái)重命名它們。

# Rename the columns before performing the query
 df.rename(columns={'Order Quantity' : 'Order_Quantity', "Customer Fname" : "Customer_Fname"}, inplace=True)
 
 # Using query for filtering rows with a single condition
 df.query('Order_Quantity > 3')

# Using query for filtering rows with multiple conditions
 df.query('Order_Quantity > 3 and Customer_Fname == "Mary"')

between():根據(jù)在指定范圍內(nèi)的值篩選行。df[df['column_name'].between(start, end)]

# Filter rows based on values within a range
 df[df['Order Quantity'].between(3, 5)]

字符串方法:根據(jù)字符串匹配條件篩選行。例如str.startswith(), str.endswith(), str.contains()

# Using str.startswith() for filtering rows
 df[df['Category Name'].str.startswith('Cardio')]

# Using str.contains() for filtering rows
 df[df['Customer Segment'].str.contains('Office')]

更新值

loc[]:可以為DataFrame中的特定行和列并分配新值。

# Update values in a column based on a condition
 df.loc[df['Customer Country'] == 'United States', 'Customer Country'] = 'USA'

iloc[]:也可以為DataFrame中的特定行和列并分配新值,但是他的條件是數(shù)字索引

# Update values in a column based on a condition
 df.iloc[df['Order Quantity'] > 3, 15] = 'greater than 3'
 
 #
 condition = df['Order Quantity'] > 3
 df.iloc[condition, 15] = 'greater than 3'

replace():用新值替換DataFrame中的特定值。df.['column_name'].replace(old_value, new_value, inplace=True)

# Replace specific values in a column
 df['Order Quantity'].replace(5, 'equals 5', inplace=True)

總結(jié)

Python pandas提供了很多的函數(shù)和技術(shù)來(lái)選擇和過濾DataFrame中的數(shù)據(jù)。比如我們常用的 loc和iloc,有很多人還不清楚這兩個(gè)的區(qū)別,其實(shí)它們很簡(jiǎn)單,在Pandas中前面帶i的都是使用索引數(shù)值來(lái)訪問的,例如 loc和iloc,at和iat,它們?cè)L問的效率是類似的,只不過是方法不一樣,我們這里在使用loc和iloc為例做一個(gè)簡(jiǎn)單的說明:

loc:根據(jù)標(biāo)簽(label)索引,什么是標(biāo)簽?zāi)兀?/p>

行標(biāo)簽就是我們所說的索引(index),列標(biāo)簽就是列名(columns)

iloc,根據(jù)標(biāo)簽的位置索引。

iloc就是 integer loc的縮寫。也就是說我們不知道列名的時(shí)候可以直接訪問的第幾行,第幾列

這樣解釋應(yīng)該可以很好理解這兩個(gè)的區(qū)別了。最后如果你看以前(很久以前)的代碼可能還會(huì)看到ix,它是先于iloc、和loc的。但是現(xiàn)在基本上用iloc和loc已經(jīng)完全能取代ix,所以ix已經(jīng)被官方棄用了。 如果有看到的話說明這個(gè)代碼已經(jīng)很好了,并且完全可以使用iloc替代。

最后,通過靈活本文介紹的這些方法,可以更高效地處理和分析數(shù)據(jù)集,從而更好地理解和挖掘數(shù)據(jù)的潛在信息。

聲明:本文內(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)投訴
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    753

    瀏覽量

    44032
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4767

    瀏覽量

    84375
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Python利用pandas讀寫Excel文件

    使用pandas模塊讀取Excel文件可以更為方便和快捷。pandas可以將Excel文件讀取為一個(gè)DataFrame對(duì)象,方便進(jìn)行數(shù)據(jù)處理和分析。
    的頭像 發(fā)表于 12-16 11:22 ?1246次閱讀
    Python利用<b class='flag-5'>pandas</b>讀寫Excel文件

    mysql是根據(jù)哪些原則來(lái)進(jìn)行數(shù)據(jù)類型選擇的?

    mysql應(yīng)該根據(jù)那些原則來(lái)進(jìn)行數(shù)據(jù)類型的選擇!
    發(fā)表于 07-23 06:32

    pandas對(duì)babynames數(shù)據(jù)集的簡(jiǎn)單處理

    利用Python進(jìn)行數(shù)據(jù)分析——第二章 引言(2):利用pandas對(duì)babynames數(shù)據(jù)進(jìn)行簡(jiǎn)單處理
    發(fā)表于 08-09 12:58

    Pandas中的四種繪圖函數(shù)

    數(shù)據(jù)可視化(三):Pandas中的繪圖函數(shù)
    發(fā)表于 09-04 09:04

    pandas和seaborn繪圖方法

    《利用Python進(jìn)行數(shù)據(jù)分析》 92 使用pandas和seaborn繪圖
    發(fā)表于 10-28 10:25

    pandas是什么

    人工智能的不斷發(fā)展,機(jī)器學(xué)習(xí)這門技術(shù)也越來(lái)越重要,很多人都開啟了學(xué)習(xí)機(jī)器學(xué)習(xí),本文就介紹了機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容。提示:以下是本篇文章正文內(nèi)容,下面案例可供參考一、pandas是什么?示例:pandas 是基于NumPy 的一種工具
    發(fā)表于 08-09 07:39

    pandas是什么?

    人工智能的不斷發(fā)展,機(jī)器學(xué)習(xí)這門技術(shù)也越來(lái)越重要,很多人都開啟了學(xué)習(xí)機(jī)器學(xué)習(xí),本文就介紹了機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容。提示:以下是本篇文章正文內(nèi)容,下面案例可供參考一、pandas是什么?示例:pandas 是基于NumPy 的一種工具
    發(fā)表于 01-12 07:53

    基于LDA主題模型進(jìn)行數(shù)據(jù)選擇方法

    基于數(shù)據(jù)源的樣本文檔集和查詢之間的關(guān)鍵詞匹配,通常無(wú)法很好地解決少量樣本文檔的信息缺失問題。針對(duì)這一問題,提出了基于隱含狄利克雷分布( LDA)主題模型進(jìn)行數(shù)據(jù)選擇的方法。首先,使用LDA主題模型獲得
    發(fā)表于 01-04 15:00 ?0次下載
    基于LDA主題模型<b class='flag-5'>進(jìn)行數(shù)據(jù)</b>源<b class='flag-5'>選擇</b>方法

    從Excel到Python-最常用的36個(gè)Pandas函數(shù)

    本文涉及pandas最常用的36個(gè)函數(shù),通過這些函數(shù)介紹如何完成數(shù)據(jù)生成和導(dǎo)入、數(shù)據(jù)清洗、預(yù)處理,以及最常見的
    的頭像 發(fā)表于 12-10 21:31 ?664次閱讀

    更高效的利用Jupyter+pandas進(jìn)行數(shù)據(jù)分析

    本文將對(duì)pandas支持的多種格式數(shù)據(jù)在處理數(shù)據(jù)的不同方面進(jìn)行比較,包含I/O速度、內(nèi)存消耗、磁盤占用空間等指標(biāo),試圖找出如何為我們的數(shù)據(jù)
    的頭像 發(fā)表于 03-12 15:20 ?1714次閱讀

    盤點(diǎn)Pandas的100個(gè)常用函數(shù)

    分析過程中,必然要做一些數(shù)據(jù)的統(tǒng)計(jì)匯總工作,那么對(duì)于這一塊的數(shù)據(jù)運(yùn)算有哪些可用的函數(shù)可以幫助到我們呢?具體看如下幾張表。 import pandas as pd import nump
    的頭像 發(fā)表于 04-01 09:52 ?2730次閱讀
    盤點(diǎn)<b class='flag-5'>Pandas</b>的100個(gè)常用<b class='flag-5'>函數(shù)</b>

    解讀12 種 Numpy 和 Pandas 高效函數(shù)技巧

    本文分享給大家 12 種 Numpy 和 Pandas 函數(shù),這些高效的函數(shù)會(huì)令數(shù)據(jù)分析更為容易、便捷。最后,讀者也可以在 GitHub 項(xiàng)目中找到本文所用代碼的 Jupyter No
    的頭像 發(fā)表于 06-29 17:05 ?1464次閱讀

    十種pandas數(shù)據(jù)編碼的方法分享

    題主表示pandas用起來(lái)很亂,事實(shí)真的如此嗎?本文就將先如何利用pandas來(lái)行數(shù)據(jù)轉(zhuǎn)換/編碼的十種方案,最后再回答這個(gè)問題。
    的頭像 發(fā)表于 05-10 15:33 ?1240次閱讀

    超強(qiáng)圖解Pandas,建議收藏

    Pandas數(shù)據(jù)挖掘常見的工具,掌握使用過程中的函數(shù)是非常重要的。本文將借助可視化的過程,講解Pandas的各種操作。
    的頭像 發(fā)表于 08-29 15:15 ?580次閱讀
    超強(qiáng)圖解<b class='flag-5'>Pandas</b>,建議收藏

    盤點(diǎn)66個(gè)Pandas函數(shù)合集

    今天我們重新盤點(diǎn)66個(gè)Pandas函數(shù)合集,包括數(shù)據(jù)預(yù)覽、數(shù)值數(shù)據(jù)操作、文本數(shù)據(jù)操作、行/列操作等等,涉及“
    的頭像 發(fā)表于 10-30 09:58 ?1357次閱讀
    盤點(diǎn)66個(gè)<b class='flag-5'>Pandas</b><b class='flag-5'>函數(shù)</b>合集