iT邦幫忙

2024 iThome 鐵人賽

DAY 30
0

來到了鐵人賽的最後一天,
昨天學會了用index來排序,
而今天要來講講Pandas使用sort_values排序,
也就是依照資料的值來排序。

範例

首先,先建立一個DataFrame結構的資料,
或是有匯入的資料轉成DataFrame結構也行。
這邊為了方便對照,先印出完整的資料來看。

studentsData = {
    'studentId': ['001', '002', '003'],
    'Name': ['A', 'B', 'C'],
    'Height': [175, 153, 164],
    'Weight': [80, 45, 75],
    'City': ['New York', 'Los Angeles', 'Chicago']
}
students = pd.DataFrame(studentsData)
print(students)

印出資料如下。

  studentId Name  Height  Weight         City
0       001    A     175      80     New York
1       002    B     153      45  Los Angeles
2       003    C     164      75      Chicago
values排序 遞增(由小到大)

概念上values排序與index排序都是相同的

當資料values已經可以辨識順序時,
可以使用sort_values語法自動排序,
在資料後加上.sort_values([欄位名稱])
其中ascending項是可被省略的。
稍微複習一下,與昨日的相同
True代表了遞增(由小到大)(預設),
False代表了遞減(由大到小);

使用方式如下。

print(students.sort_values(["Height"])) # ascending預設為True
# print(students.sort_values(["Height"], ascending=True)) # 與上列相同

印出資料如下,
可以看到欄位Height依照順序遞增(由小到大)排列,
而資料順序也隨之移動。

  studentId Name  Height  Weight         City
1       002    B     153      45  Los Angeles
2       003    C     164      75      Chicago
0       001    A     175      80     New York
values排序 遞減(由大到小)

如同前面所述,
這裡加上ascending=False
使排序遞減(由大到小),
使用方式如下。

print(students.sort_values(["Height"], ascending=False))

印出資料如下,
可以看到欄位Height依照順序序遞減(由大到小)排列,
而資料順序也隨之移動。

  studentId Name  Height  Weight         City
0       001    A     175      80     New York
2       003    C     164      75      Chicago
1       002    B     153      45  Los Angeles

今日結語

這兩天學會了排序的兩種方式,
index與values,
這裡要特別注意的是values可以依照多個欄位做排序,
若是要排序多的欄位時,
在資料間用,隔開即可。

最後,
希望這系列的分享有幫助到想學習Pandas的所有人,
雖然都是很粗淺的知識,
但只要有基本的了解,
我相信在後續要再精進肯定很快就能步上軌道。

我今年的鐵人賽就此落幕,
期望大家都能在這領域上一同進步、共同成長、開心學習,
期待明年再相會。


上一篇
DAY29 Pandas使用sort_index排序
系列文
走在Pandas資料操縱與分析的路上持續前進30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言