從多個方面詳解pandas查詢

一、基礎查詢

pandas作為Python數據分析的重要庫,提供了豐富的數據操作和查詢功能,但需要一定的基礎和經驗。pandas最基礎的查詢功能是根據索引號或者列名進行查詢。

import pandas as pd

df = pd.DataFrame({
    'name':['Amy','Bob','Cathy','David','Eric'],
    'age':[22,35,28,30,25],
    'score':[80,95,85,75,70]
})

# 按照索引號查詢,輸出第2行(索引號為1)到第4行(索引號為3)
print(df.iloc[1:4])

# 按照列名查詢,輸出「name」列和「score」列
print(df[['name','score']])

可以看到,基礎查詢可以根據行索引號和列名進行數據的切片和篩選,但是如果需要進行更為複雜的數據篩選和過濾,則需要使用更高級的查詢方法。

二、布爾索引

布爾索引是一種通過真假值進行數據篩選和過濾的方法,在pandas中使用較為普遍。通過布爾索引,可以根據某些條件來選取數據,比如選擇所有大於某個值的數據,或者根據多重條件選擇數據。

import pandas as pd

df = pd.DataFrame({
    'name':['Amy','Bob','Cathy','David','Eric'],
    'age':[22,35,28,30,25],
    'score':[80,95,85,75,70]
})

# 選擇age大於等於30的行
print(df[df['age'] >= 30])

# 選擇age大於等於30且score大於等於80的行
print(df[(df['age'] >= 30) & (df['score'] >= 80)])

可以看到,在使用布爾索引時,需要使用[]來包裹篩選條件,多個條件之間使用&(與)或|(或)進行連接。布爾索引有很強的靈活性,可以通過不同的條件組合篩選出複雜的數據。

三、apply查詢

apply是pandas中一個非常重要的數據查詢和轉換函數,它可以對數據進行自定義操作,比如對一列數據進行字符串拼接、轉換成大寫或小寫、計算列和等。apply主要有兩種用法,一種是對一列數據進行apply操作,另一種是對整個數據進行apply操作。

import pandas as pd

df = pd.DataFrame({
    'name':['Amy','Bob','Cathy','David','Eric'],
    'age':[22,35,28,30,25],
    'score':[80,95,85,75,70]
})

# 將score值大於80的行的"score"列和"age"列相加作為新列"sum"存儲
df['sum'] = df.apply(lambda x: x['score'] + x['age'] if x['score'] > 80 else 0, axis=1)
print(df)

# 將"name"列的值全部轉化為小寫字母
df['name'] = df['name'].apply(lambda x: x.lower())
print(df)

可以看到,在apply中,需要使用lambda表達式對數據進行處理,axis參數表示對數據進行apply操作的方向,0表示列,1表示行。

四、Groupby查詢

Groupby是pandas中一個非常常用的數據分組和查詢函數,它可以對數據進行分組後進行聚合和操作,比如統計不同類別的數量、計算某個指標的平均值。Groupby函數需要將數據進行分組,分成多個子集,然後對每個子集進行聚合。

import pandas as pd

df = pd.DataFrame({
    'name':['Amy','Bob','Cathy','David','Eric'],
    'gender':['F','M','F','M','M'],
    'score':[80,95,85,75,70]
})

# 按照gender分組,統計各個分組中的平均分數
grouped = df.groupby('gender')['score'].mean()
print(grouped)

# 按照多個列進行分組,統計各個分組中的平均分數和數量
grouped = df.groupby(['gender','name'])['score'].agg(['mean','count'])
print(grouped)

可以看到,Groupby函數的用法較為簡單,但是具有很強的統計和計算能力,可以對數據進行高效地分組、聚合和統計。需要注意的是,Groupby函數需要先進行數據分組,然後才能對每個子集進行聚合和操作,需要根據具體需求進行合理的操作。

五、Merging和Join查詢

Merging和Join是pandas中常用的將兩個或多個數據集合併和連接的函數,可以將兩個不同數據源的數據進行合併。Merging和Join的主要區別在於,Merging是根據兩個數據集中的某個列的值進行合併,而Join則是根據索引進行連接。

import pandas as pd

data1 = pd.DataFrame({
    'name':['Amy','Bob','Cathy','David','Eric'],
    'age':[22,35,28,30,25],
    'score':[80,95,85,75,70]
})

data2 = pd.DataFrame({
    'name':['Amy','Bob','Cathy','Michael','Tom'],
    'income':[5000,8000,6000,6500,7000],
    'address':['Beijing','Shanghai','Guangzhou','Beijing','Shanghai']
})

# Merging函數,以"name"列的值為鍵值,合併兩個數據集,相同的鍵值列合併在一個行中
merged = pd.merge(data1,data2,on='name')
print(merged)

data1.set_index('name',inplace=True)
data2.set_index('name',inplace=True)

# Join函數,以索引為鍵值,按照列名進行連接,將兩個數據集中的列合併在一起
joined = data1.join(data2)
print(joined)

可以看到,在數據集合併和連接方面,pandas提供了兩種常見的函數,可根據不同的需求選用合適的函數。

六、Conclusion

pandas是Python數據分析非常重要的庫之一,具有豐富的數據查詢和操作功能。本文從多個方面對pandas的查詢進行了詳細闡述,包括基礎查詢、布爾索引、apply查詢、Groupby查詢和Merging和Join查詢。不同的查詢方法可以根據具體的數據分析需求進行靈活的運用,為數據分析工作提供有效的幫助。

原創文章,作者:IRAFA,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/367984.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
IRAFA的頭像IRAFA
上一篇 2025-04-02 01:28
下一篇 2025-04-02 01:28

相關推薦

發表回復

登錄後才能評論