一、基礎查詢
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-hant/n/367984.html