首頁 > 軟體

Pandas實現DataFrame的簡單運算、統計與排序

2022-03-31 16:01:16

在前面的章節中,我們討論了Series的計算方法與Pandas的自動對齊功能。不光是Series,DataFrame也是支援運算的,而且還是經常被使用的功能之一。

由於DataFrame的資料結構中包含了多行、多列,所以DataFrame的計算與統計可以是用行資料或者用列資料。為了更方便我們的使用,Pandas為我們提供了常用的計算與統計方法:

操作方法操作方法
求和sum最大值max
求均值mean最小值min
求方差var標準差std
中位數median眾數mode
分位數quantile  

一.運算

接上文的例子,我們已經有了N個學生的數學、語文、英語的成績表,現在,我們要算出每個學生的總成績,那麼我們就可以用以下的方法:

'''
行的求和以下演示兩種方法:
方法1:先把待求和的列資料刪選出來(剔除掉name列),然後使用sum函數求和
方法2:把待求和的列一個一個選出來然後使用運運算元求和
兩種方法最後的結果為像原有的DataFrame中新增一列,資料為每行資料的求和
'''
df['sum'] = df[['chinese', 'math', 'english']].sum(1)	#方法1

df['sum'] = df['chinese'] + df['math'] + df['english']	#方法2

Output:
        name  chinese  english  math  sum
0   XiaoMing       99      100    80  279
1      LiHua      102       79    92  273
2  HanMeiNei      111      130   104  345

在sum方法中我們傳入了引數1,代表的是我們使用的軸(axis)為行(對行資料進行求和),如果想要計算出每列的求和我們只用傳入0即可(sum函數預設引數為0,所以也可不傳):

df[['chinese', 'math', 'english']].sum(0)

Output:
chinese    312
math       276
english    309
dtype: int64

現在有了總成績,那麼數學老師或者語文老師就會關心本班學生的資料平均分是多少,同樣的,我們可以非常快速的計算出來:

df['math'].mean()		#方法一:直接使用Pandas提供的mean求均值方法

df['math'].sum() / df.shape[0]	#方法二:使用求和方法算出總和後除以總人數(行數)

Output:
92.0


IT145.com E-mail:sddin#qq.com