在工作中,效率是一個很關(guān)鍵的因素,一個人做事的效率高低,決定了花費(fèi)時間的多少。所以當(dāng)我們項目涉及到一些基礎(chǔ)編碼時,使用pandas
庫就能大大的節(jié)省你的時間,提高你的工作效率。
Pandas
是一個開源包。它有助于用Python
語言執(zhí)行數(shù)據(jù)分析和數(shù)據(jù)操作。此外,它還為我們提供了靈活的數(shù)據(jù)結(jié)構(gòu)。
接下來帶你們了解一下pandas
的幾個實用技巧
1.行的條件選擇
首先,數(shù)據(jù)探索是必要步驟。Pandas
為進(jìn)行各種分析提供了一種快速簡便的方法。其中一個非常重要的技巧是根據(jù)條件選擇行或過濾數(shù)據(jù)。
行的條件選擇可以基于由邏輯運(yùn)算符分隔的單個語句中的單個條件或多個條件。
例如,我使用一個關(guān)于貸款預(yù)測的數(shù)據(jù)集。
我們將挑選一排還沒有畢業(yè)、收入低于5400英鎊的客戶。讓我們看看我們該怎么做。
import pandas as pd
data = pd.read_csv('../Data/loan_train.csv')
data.head()
data2 = data.loc[(data['Education'] == 'Not Graduate') & (data['ApplicantIncome'] <= 5400)]
data2
注意:記住把每個條件放在括號內(nèi)。
2.數(shù)據(jù)的存儲
數(shù)據(jù)可以有兩種類型-連續(xù)的和離散的,這取決于我們的分析要求。有時我們不需要連續(xù)變量中的精確值,但需要它所屬的群體。
例如,你的數(shù)據(jù)中有一個連續(xù)變量,年齡。但你需要一個年齡組來進(jìn)行分析,比如兒童、青少年、成人、老年人。實際上,Binning
非常適合解決我們這里的問題。
為了執(zhí)行Binning
,我們使用cut()
函數(shù)。這對于從連續(xù)變量到離散變量非常有用。
import pandas as pd
df = pd.read_csv('titanic.csv')
from sklearn.utils import shuffle
# 隨機(jī)化
df = shuffle(df, random_state = 42)
df.head()
bins = [0,4,17,65,99]
labels =['Toddler','Child','Adult','Elderly']
category = pd.cut(df['Age'], bins = bins, labels = labels)
df.insert(2, 'Age Group', category)
df.head()
df['Age Group'].value_counts()
df.isnull().sum()
3.分組數(shù)據(jù)
這種操作在數(shù)據(jù)科學(xué)家和分析師的日常生活中經(jīng)常執(zhí)行。Pandas
提供了一個基本的函數(shù)來執(zhí)行數(shù)據(jù)分組,即Groupby
。
Groupby
操作包括根據(jù)特定條件拆分對象,應(yīng)用函數(shù),然后組合結(jié)果。
讓我們再看一次貸款預(yù)測數(shù)據(jù)集,假設(shè)我想看看給來自不同財產(chǎn)領(lǐng)域的人的平均貸款額,比如農(nóng)村、半城市和城市?;c時間來理解這個問題陳述并思考如何解決它。
嗯,Pandas
的groupby
可以非常有效地解決這個問題。首先根據(jù)屬性區(qū)域劃分?jǐn)?shù)據(jù)。其次,我們將mean()
函數(shù)應(yīng)用于每個類別。最后,我們將它們組合在一起,并將其打印為新的數(shù)據(jù)幀。
#導(dǎo)入數(shù)據(jù)集
import pandas as pd
df = pd.read_csv('../Data/loan_train.csv')
df.head()
# 男女平均收入
df.groupby(['Gender'])[['ApplicantIncome']].mean()
# 平均貸款金額不同的財產(chǎn)地區(qū),如城市,農(nóng)村
df.groupby(['Property_Area'])[['LoanAmount']].mean()
# 比較不同教育背景的貸款狀況
df.groupby(['Education'])[['Loan_Status']].count()
4.Pandas map
map
是另一個提供高度靈活性和實際應(yīng)用的重要操作。
Pandas map()
用于根據(jù)輸入對應(yīng)關(guān)系將序列中的每個值映射到其他值。實際上,這個輸入可以是一個序列、字典,甚至是一個函數(shù)。
讓我們舉一個有趣的例子。我們有一個虛擬的雇員數(shù)據(jù)集。此數(shù)據(jù)集由以下列組成–姓名、年齡、職業(yè)、城市。
現(xiàn)在需要添加另一列,說明相應(yīng)的狀態(tài)。你會怎么做?如果數(shù)據(jù)集的范圍是10行,你可以手動執(zhí)行,但是如果有數(shù)千行呢?使用Pandas map
會更有利。
#樣本數(shù)據(jù)
data = {'name': ['A', 'B', 'C', 'D', 'E'],
'age': [22, 26, 33, 44, 50],
'profession' : ['data engineer', 'data scientist', 'entrepreneur', 'business analyst', 'self-employed'],
'city': ['Gurgaon', 'Bangalore', 'Gurgaon', 'Pune', 'New Delhi']}
df = pd.DataFrame(data)
df
# 城市與州
map_city_to_states = { 'Gurgaon' : 'Haryana',
'Bangalore' : 'Karnataka',
'Pune' : 'Maharashtra',
'New Delhi' : 'Delhi'}
# 將城市列映射為州
df['state'] = df['city'].map(map_city_to_states)
df
5.Pandas DataFrame的條件格式化
這是我最喜歡的Pandas
技巧之一。這個技巧讓我有能力直觀地定位特定條件下的數(shù)據(jù)。
可以使用Pandas
的style
屬性將條件格式應(yīng)用于數(shù)據(jù)框。事實上,條件格式是根據(jù)某種條件對數(shù)據(jù)幀應(yīng)用視覺樣式的操作。
雖然Pandas
提供了大量的操作,但我將在這里向你展示一個簡單的操作。例如,我們有對應(yīng)于每個銷售人員的銷售數(shù)據(jù)。我想查看的是銷售價值高于80的。
import pandas as pd
data = pd.read_excel("../Data/salesman_performance.xlsx")
data
data.style
def highlight_green(sales):
color = 'green' if sales > 80 else 'black'
return 'color: %s' % color
formatting = data.iloc[:,1:6].style.applymap(highlight_green)
formatting
(推薦教程:Pandas中文教程)
結(jié)尾
以上就是關(guān)于Pandas
的5個實用技巧的介紹了,希望這些技巧能幫大家更好更快的完成工作。