使用Python進行快速覆盤「3」: 排序與分組統計

文章主要聊聊在Python中資料的排序與分組彙總

首先我們開啟上次寫好的 Notebook 檔案,點選Cell -> Run all 命令將程式碼重新執行一次,把所需的軟體包及寫好的自定義函式執行裝入到記憶體中,然後繼續進行操作。

按照索引進行排序:df。sort_index(ascending=True|False)

使用Python進行快速覆盤「3」: 排序與分組統計

如圖所示,索引為資料集(DataFrame)最左側的列,預設情況下為該行行號並升序排序。以下示例將資料集按照索引降序排列:df。sort_index(ascending=False)

使用Python進行快速覆盤「3」: 排序與分組統計

注:因為這裡索引為行編號,因此重新排序沒有太大的必要,但可能在有些場合可能會用到這個功能,比如索引列為時間,則可以按照索引列進行時間先後排列。

按照資料列進行排序:df。sort_values(“列名”, ascending=True|False)

以下程式碼將兩市股票按照市值從大到小排列

使用Python進行快速覆盤「3」: 排序與分組統計

以下程式碼截取出市值最大的10只個股

使用Python進行快速覆盤「3」: 排序與分組統計

資料的分組及聚合運算groupby與agg

上面我們已經學會如何對資料進行排序,快些獲取處於市場前列的的個股資料,但如果我們需要按照行業進行分組統計應該怎麼辦呢,這就涉及到分組與統計功能了。資料集分組與統計功能簡單用法如下df。groupby(“列名”)。agg(“聚合函式”),可靠的聚合函式如下:

統計數量:count

求和:sum

求平均值:mean

求中位數、最大值、最小值: median, max, min

以下程式碼求取所有行業總市值

使用Python進行快速覆盤「3」: 排序與分組統計

注意:如果使用內建函式統計的話,直接使用df。groupby(“行業”)。sum()也是可以的。

以下程式碼統計兩市所有行業可統計列中位數

使用Python進行快速覆盤「3」: 排序與分組統計

注意,可以同時進行多項統計。比如:我們可以同時統計最大值與最小值。

使用Python進行快速覆盤「3」: 排序與分組統計

大家可以看到,此時輸出就有些亂了,因此建議只統計希望統計的列,以下程式碼只按照行業統計市盈率最大值,最小值,中位數

使用Python進行快速覆盤「3」: 排序與分組統計

注:df[[“行業”,”滾動市盈”]] 這個操作選取出用於分組的列

行業

以及用於統計的列

滾動市盈率

然後再對返回的資料集進行分組與統計即可。

自定義統計

除了根據預設聚合函式外,還可以自行編制聚合函式,比如:我們可以按照行業統計市值大於100億的股票數量

# 自定義統計函式# 注意:該函式傳的是分好組的資料,需要返回一個數據,這也就是稱之為聚合函式的意義所在def count100plus(arr): c = 0 try: for x in arr: if x > 1。0e+10 : c = c + 1 except: passreturn c#注意下面agg函式引數,呼叫自定義函式是沒有引號存在的。df[[‘行業’,‘總市值’]]。groupby(“行業”)。agg(count100plus)

使用Python進行快速覆盤「3」: 排序與分組統計

總結

我們簡單瞭解瞭如果針對資料進行分組與排序,透過分組與排序,我們對兩市資料進行簡單的統計與彙總,下一篇我們聊聊資料集的聯接與列運算,週末愉快。

該文涉及到的Notebook檔案見評論區。