第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Pandas 查詢數(shù)據(jù)

1. 前言

通過前面幾個小節(jié)的學(xué)習(xí),我們掌握了 Pandas 解析不同數(shù)據(jù)文件以及讀取 MySQL 數(shù)據(jù)庫的操作方法,接著分析了 Pandas 庫中兩個核心的數(shù)據(jù)結(jié)構(gòu) Series 和 DataFrame ,并掌握了他們常用的屬性和操作方法。

前幾節(jié)的學(xué)習(xí)讓我們獲取了數(shù)據(jù),并認(rèn)識了這些數(shù)據(jù)的特點(diǎn),從這節(jié)開始,我們將學(xué)習(xí)如何對這些數(shù)據(jù)做進(jìn)一步的處理。本節(jié)我們將學(xué)習(xí) Pandas 查詢數(shù)據(jù),根據(jù)我們需要的條件,對已有的數(shù)據(jù)做查詢操作。

2. 查詢方法概述

Pandas 在解析數(shù)據(jù)時,會根據(jù)一定的條件進(jìn)行解析處理,這種方式雖然在源數(shù)據(jù)上做了篩選,但實(shí)際的業(yè)務(wù)需求中,對解析出來的數(shù)據(jù),我們會根據(jù)更加明確的條件和需要,去查詢數(shù)據(jù)內(nèi)容,為進(jìn)一步的數(shù)據(jù)操作和分析做好鋪墊。Pandas 中提供了多種查詢函數(shù),方便我們的數(shù)據(jù)查詢操作,我們需要查詢的數(shù)據(jù)條件不同,所采用的操作也有所不同,總的來說,我們的查詢條件可以為按單個值查詢、按值列表查詢、按值區(qū)間查詢、按條件表達(dá)式查詢和按函數(shù)查詢五種查詢的方式,接下來我們將以 loc() 查詢函數(shù)為例,詳細(xì)講解每種查詢的具體操作。

Tips:loc() 的查詢條件,可以使用label值,也可以使用布爾值,他豐富的傳值方式,以及簡潔的使用方式,成為 Pandas 數(shù)據(jù)查詢較為常用的方法。

查詢方法 簡述
loc( ) 通過標(biāo)簽或布爾數(shù)字查詢數(shù)據(jù)集 (推薦使用的查詢方法)
iloc( ) 通過索引位來查詢數(shù)據(jù)集
query( ) 通過布爾表達(dá)式查詢數(shù)據(jù)列

3. 查詢方法操作

這里我們通過解析 Excel 數(shù)據(jù)文件,獲得了數(shù)據(jù),具體數(shù)據(jù)解析內(nèi)容如下:

# 導(dǎo)入pandas包
import pandas as pd
# 指定導(dǎo)入的文件地址 默認(rèn)是file,這里的路徑中省略了 file:/
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小節(jié)/execl數(shù)據(jù)demo.xlsx"
data = pd.read_excel(data_path)
print(data)

# --- 輸出結(jié)果 ---
     編程語言   推出時間    價(jià)格                       主要創(chuàng)始人
0    java  199545.6               James Gosling
1  python  199167.0            Guido van Rossum
2       C  197233.9  Dennis MacAlistair Ritchie
3      js  199559.5                Brendan Eich
4     php  201269.9              Rasmus Lerdorf
5     C++  198375.0           Bjarne Stroustrup

輸出解析:可以看到解析后的數(shù)據(jù)結(jié)構(gòu)是 DataFrame 的二維數(shù)據(jù)表,有行索引和列索引,接下來我們將通過多種查詢方式,對該二維數(shù)據(jù)進(jìn)行查詢。

3.1 按單個值查詢

在 loc() 函數(shù)中按單個值查詢,我們的查詢條件參數(shù)傳入的是具體的單個 lable 值:

# 這里的 data 是上面我們從 Excel 中解析出來的數(shù)據(jù)
print(data.loc[1])

# --- 輸出結(jié)果 ---
編程語言               python
推出時間                1991年
價(jià)格                     67
主要創(chuàng)始人    Guido van Rossum
Name: 1, dtype: object

輸出解析: 這里可以看到 loc() 函數(shù)中,我們查詢的數(shù)據(jù)條件是行索引值等于1的數(shù)據(jù)集,通過查詢結(jié)果我們可以看到,輸出的是 Series 一維數(shù)據(jù)結(jié)構(gòu),他列索引的值是我們二維數(shù)據(jù)的列索引值內(nèi)容。

我們也可以查詢出具體的單個數(shù)據(jù)值,通過傳入兩個 Label 值進(jìn)行數(shù)據(jù)值的查詢。

# 這里的 data 是上面我們從 Excel 中解析出來的數(shù)據(jù)
print(data.loc[1,"價(jià)格"])

# --- 輸出結(jié)果 ---
67.0    # 這里可以看到輸出結(jié)果為具體的數(shù)據(jù)項(xiàng)值

Tips:loc() 多個查詢值的傳遞,第一個參數(shù)選擇 index (行索引值,最左側(cè)一列),第二個參數(shù)選擇 column(列索引值,最上面一行),如果參數(shù)傳錯,查詢時匯報(bào)索引值查找錯誤。

如下面,我們將行索引和列索引的順序顛倒,則會報(bào)錯:

print(data.loc["價(jià)格",1])

# --- 輸出結(jié)果 ---
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-17-b625c01645c5> in <module>
----> 1 print(data.loc["價(jià)格",1])
……
……
KeyError: '價(jià)格'

3.2 按列表查詢

在 loc() 函數(shù)中,我們通過傳入要查詢的列表項(xiàng),可以查詢多個數(shù)據(jù)內(nèi)容,返回的數(shù)據(jù)結(jié)果是 Series 數(shù)據(jù)結(jié)構(gòu)或者 DataFrame 數(shù)據(jù)結(jié)構(gòu)。

# 這里的 data 是上面我們從 Excel 中解析出來的數(shù)據(jù)
print(data.loc[[1,2,5],["編程語言","價(jià)格"]])

# --- 輸出結(jié)果 ---
     編程語言    價(jià)格
1  python  67.0
2       C  33.9
5     C++  75.0

輸出解析: 我們傳入兩個查詢列表 [1,2,5] 和 [“編程語言”,“價(jià)格”],可以看到查詢的結(jié)果為二維數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)集。

3.3 按區(qū)間查詢

按區(qū)間查詢主要用到了英文狀態(tài)下的冒號 “ : ” ,冒號左側(cè)是區(qū)間的開始位置,右側(cè)是結(jié)束位置。

# 這里的 data 是上面我們從 Excel 中解析出來的數(shù)據(jù)
print(data.loc[0:5,["編程語言","價(jià)格"]])

# --- 輸出結(jié)果 ---
     編程語言    價(jià)格
0    java  45.6
1  python  67.0
2       C  33.9
3      js  59.5
4     php  69.9
5     C++  75.0

輸出解析: 這里的行索引我們傳入的是區(qū)間 0:5,從結(jié)果中可以看到數(shù)據(jù)內(nèi)容正是這5行的數(shù)據(jù),其中是包含區(qū)間兩端的值的。

這里的行索引和列索引都可以設(shè)置為區(qū)間查找:

# 這里的 data 是上面我們從 Excel 中解析出來的數(shù)據(jù)
print(data.loc[3:5,"推出時間":"主要創(chuàng)始人"])

# --- 輸出結(jié)果 ---
    推出時間    價(jià)格              主要創(chuàng)始人
3  199559.5       Brendan Eich
4  201269.9     Rasmus Lerdorf
5  198375.0  Bjarne Stroustrup

輸出解析:通過設(shè)置區(qū)間為條件,可以看到查詢的結(jié)果正是對應(yīng)行索引和列索引所包含內(nèi)的是數(shù)據(jù)。

3.4 按條件查詢

按條件查詢是查詢數(shù)據(jù)符合一定條件的數(shù)據(jù)集,包括大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=)等條件。

# 這里的 data 是上面我們從 Excel 中解析出來的數(shù)據(jù)
print(data.loc[data["價(jià)格"]<60])

# --- 輸出結(jié)果 ---
   編程語言   推出時間    價(jià)格              主要創(chuàng)始人
0  java  199545.6               James Gosling
2     C  197233.9  Dennis MacAlistair Ritchie
3    js  199559.5                Brendan Eich

輸出解析:這里的查詢條件為價(jià)格小于60的數(shù)據(jù),可以看到結(jié)果查詢出了所有在價(jià)格上滿足該條件的數(shù)據(jù)。

Tips:注意條件等于,要用雙等于號 “ == ”,在程序中單個等于表示賦值,雙等于表示運(yùn)算。

除了單個條件,還可以傳入多個條件,并通過運(yùn)算符 &(與)表示兩邊條件都要滿足、| (或)表示兩邊條件有一個滿足就可以,進(jìn)行多條件組合查詢:

# 這里的 data 是上面我們從 Excel 中解析出來的數(shù)據(jù)
print(data.loc[(data["價(jià)格"]<=69.9) & (data["推出時間"]=="1972年") ])

# --- 輸出結(jié)果 ---
  編程語言   推出時間    價(jià)格         主要創(chuàng)始人
2    C  197233.9  Dennis MacAlistair Ritchie

輸出解析:我們這里設(shè)置了兩個條件,一個是價(jià)格小于等于69.9,另一個是推出時間等于1972年,這兩個數(shù)據(jù)進(jìn)行與運(yùn)算,表示這兩個條件都滿足的數(shù)據(jù)。可以看到數(shù)據(jù)結(jié)果是同時滿足了這兩個條件的所有數(shù)據(jù)集。

3.5 按函數(shù)查詢

函數(shù)查詢是在查詢的參數(shù)中傳入函數(shù),查詢使該函數(shù)返回為 True 的數(shù)據(jù)集。

# 這里的 data 是上面我們從 Excel 中解析出來的數(shù)據(jù)
print(data.loc[data["推出時間"].isin(["1972年","1995年","1983年"])])

# --- 輸出結(jié)果 ---
  編程語言   推出時間    價(jià)格             主要創(chuàng)始人
0  java  199545.6               James Gosling
2     C  197233.9  Dennis MacAlistair Ritchie
3    js  199559.5                Brendan Eich
5   C++  198375.0           Bjarne Stroustrup

輸出解析:這里我們傳入了一個函數(shù) isin( ) 該函數(shù)接受一個列表,判斷該列中元素是否在“推出時間 ”列表中 ,如果是就查詢出該數(shù)據(jù)集,從結(jié)果可以看出,查詢出了“推出時間”為1972年、1995年、1983年的數(shù)據(jù)集。當(dāng)然,我們除了可以使用 Pandas 自帶的一些函數(shù),我們也可以自定義一些條件函數(shù),傳入?yún)?shù)進(jìn)行查詢。

4.小結(jié)

本節(jié)課我們主要學(xué)習(xí)了對解析后的數(shù)據(jù),按照我們業(yè)務(wù)實(shí)際的需要進(jìn)行數(shù)據(jù)的查詢的方式,通過使用 loc() 查詢函數(shù),以及對應(yīng)的查詢參數(shù),可以很好的滿足我們數(shù)據(jù)的查詢需要。本節(jié)課程的重點(diǎn)如下:

  • 掌握 loc() 數(shù)據(jù)查詢函數(shù)的使用方法;
  • 掌握查詢條件的五種類別,結(jié)合實(shí)際業(yè)務(wù)需求進(jìn)行參數(shù)的傳入。

圖片描述

Tips:想要學(xué)習(xí)更多Pandas相關(guān)知識,可以點(diǎn)擊
Pandas 新增數(shù)據(jù)
Pandas 刪除數(shù)據(jù)
Pandas 修改數(shù)據(jù)