iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0
Python

30 天學會用 Python pandas 和 openpyxl 處理 Excel —— 成為用 Python 處理 Excel 檔案的高手系列 第 9

Python pandas 套件如何排序 DataFrame 資料?【Python 處理 Excel #9】

  • 分享至 

  • xImage
  •  

本篇文章同步發布於 Python pandas 套件如何排序 DataFrame 資料?【Python 處理 Excel #9】

前言

這篇文章介紹 Python pandas 如何排序 DataFrame 資料。


文章案例說明

文章中使用 example.xlsx 作為說明用的案例資料。example.xlsx 的內容如下:

material moq lead_time
PANEL001 100 60
LABLE001 20000 7
HINGE001 300 45
CHASSIS001 500 60
CARTON001 20000 7
CABLE002 20000 45
CABLE001 15000 45

單一排序方式

使用 sort_values() 進行單一排序

要對 DataFrame 進行單一欄位排序,可以使用 sort_values() 方法。以下是針對 lead_time 欄位進行升冪排序的例子:

import pandas as pd

# 從 Excel 檔案讀取資料
df = pd.read_excel('example.xlsx')

# 按照 lead_time 進行升冪排序
sorted_df = df.sort_values(by='lead_time', ascending=True)

print(sorted_df)

解釋

  • sort_values(by='lead_time', ascending=True):對 DataFrame 進行排序,by 參數指定要排序的欄位,ascending 參數指定排序方式,True 表示升冪排序。
  • 升冪排序lead_time 的值從小到大排序。最小的 lead_time 值是 7,然後是 45,最後是 60。 如果 lead_time 值相同,pandas 將根據原始資料中的列的先後順序排相對位置。

排序後的結果

material moq lead_time
LABLE001 20000 7
CARTON001 20000 7
HINGE001 300 45
CABLE002 20000 45
CABLE001 15000 45
PANEL001 100 60
CHASSIS001 500 60

多重排序方式

多重排序的概念

除了單一欄位排序,pandas 也支援多重排序。多重排序允許使用者依照多個欄位的組合來排序 DataFrame。 多重排序的運作方式如下:

  1. 首先,DataFrame 會根據第一個指定的欄位進行排序。
  2. 如果有多個值在第一個欄位中相等,則會根據第二個指定的欄位進一步排序這些列。
  3. 這個過程會一直持續到所有指定的欄位都用完或者已經沒有相等的值需要排序。

透過多重排序,使用者能更精確地控制 DataFrame 的排序順序。


使用 sort_values() 進行多重排序

若要對多個欄位進行排序,可以在 sort_values() 方法中傳入一個列表 (list)。以下是針對 materialmoqlead_time 進行排序的例子:

# 按照 material、moq 和 lead_time 進行排序
multi_sorted_df = df.sort_values(by=['material', 'moq', 'lead_time'], ascending=[True, False, True])

print(multi_sorted_df)

解釋

  • sort_values(by=['material', 'moq', 'lead_time'], ascending=[True, False, True]):對 DataFrame 進行多重排序,by 參數傳入一個包含多個欄位名稱的列表,ascending 參數也可以傳入一個列表,分別對應每個欄位的排序方式,True 表示升冪,False 表示降冪。

排序後的結果

material moq lead_time
CABLE001 15000 45
CABLE002 20000 45
CARTON001 20000 7
CHASSIS001 500 60
HINGE001 300 45
LABLE001 20000 7
PANEL001 100 60

總結

  • 使用 sort_values() 方法可以對 DataFrame 進行排序。
  • 單一排序只需指定一個欄位名稱,而多重排序則可以傳入多個欄位名稱的列表。
  • ascending 參數可以用來控制排序的方式,True 表示升冪,False 表示降冪。
  • 排序的結果可以幫助使用者更好地理解數據的結構和趨勢。

本篇文章同步發布於 Python pandas 套件如何排序 DataFrame 資料?【Python 處理 Excel #9】


上一篇
Python pandas 套件如何篩選 DataFrame 資料?【Python 處理 Excel #8】
下一篇
Python pandas 刪除 DataFrame 資料 【Python 處理 Excel #10】
系列文
30 天學會用 Python pandas 和 openpyxl 處理 Excel —— 成為用 Python 處理 Excel 檔案的高手27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言