Python Pandas - การเรียงลำดับ

Pandas มีให้เลือกสองแบบ พวกเขาคือ -

  • ตามฉลาก
  • ตามมูลค่าจริง

ให้เราพิจารณาตัวอย่างที่มีผลลัพธ์

import pandas as pd
import numpy as np

unsorted_df=pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],colu
mns=['col2','col1'])
print unsorted_df

มัน output มีดังนี้ -

col2       col1
1  -2.063177   0.537527
4   0.142932  -0.684884
6   0.012667  -0.389340
2  -0.548797   1.848743
3  -1.044160   0.837381
5   0.385605   1.300185
9   1.031425  -1.002967
8  -0.407374  -0.435142
0   2.237453  -1.067139
7  -1.445831  -1.701035

ใน unsorted_df, labels และ valuesไม่ได้เรียงลำดับ ให้เราดูว่าสามารถจัดเรียงได้อย่างไร

ตามฉลาก

ใช้ sort_index()วิธีการโดยการส่งผ่านอาร์กิวเมนต์แกนและลำดับของการเรียงลำดับ DataFrame สามารถจัดเรียงได้ โดยค่าเริ่มต้นการเรียงลำดับจะกระทำบนป้ายชื่อแถวตามลำดับจากน้อยไปมาก

import pandas as pd
import numpy as np

unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],colu
   mns = ['col2','col1'])

sorted_df=unsorted_df.sort_index()
print sorted_df

มัน output มีดังนี้ -

col2       col1
0   0.208464   0.627037
1   0.641004   0.331352
2  -0.038067  -0.464730
3  -0.638456  -0.021466
4   0.014646  -0.737438
5  -0.290761  -1.669827
6  -0.797303  -0.018737
7   0.525753   1.628921
8  -0.567031   0.775951
9   0.060724  -0.322425

ลำดับการเรียงลำดับ

การส่งผ่านค่าบูลีนไปยังพารามิเตอร์จากน้อยไปหามากสามารถควบคุมลำดับของการเรียงลำดับได้ ขอให้เราพิจารณาตัวอย่างต่อไปนี้เพื่อทำความเข้าใจเช่นเดียวกัน

import pandas as pd
import numpy as np

unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],colu
   mns = ['col2','col1'])

sorted_df = unsorted_df.sort_index(ascending=False)
print sorted_df

มัน output มีดังนี้ -

col2        col1
9    0.825697    0.374463
8   -1.699509    0.510373
7   -0.581378    0.622958
6   -0.202951    0.954300
5   -1.289321   -1.551250
4    1.302561    0.851385
3   -0.157915   -0.388659
2   -1.222295    0.166609
1    0.584890   -0.291048
0    0.668444   -0.061294

จัดเรียงคอลัมน์

โดยการส่งอาร์กิวเมนต์แกนที่มีค่า 0 หรือ 1 การเรียงลำดับสามารถทำได้บนป้ายชื่อคอลัมน์ ตามค่าเริ่มต้นแกน = 0 เรียงตามแถว ขอให้เราพิจารณาตัวอย่างต่อไปนี้เพื่อทำความเข้าใจเช่นเดียวกัน

import pandas as pd
import numpy as np
 
unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],colu
   mns = ['col2','col1'])
 
sorted_df=unsorted_df.sort_index(axis=1)

print sorted_df

มัน output มีดังนี้ -

col1        col2
1   -0.291048    0.584890
4    0.851385    1.302561
6    0.954300   -0.202951
2    0.166609   -1.222295
3   -0.388659   -0.157915
5   -1.551250   -1.289321
9    0.374463    0.825697
8    0.510373   -1.699509
0   -0.061294    0.668444
7    0.622958   -0.581378

ตามมูลค่า

เช่นเดียวกับการจัดเรียงดัชนี sort_values()เป็นวิธีการจัดเรียงตามค่า ยอมรับอาร์กิวเมนต์ 'โดย' ซึ่งจะใช้ชื่อคอลัมน์ของ DataFrame ซึ่งจะเรียงลำดับค่า

import pandas as pd
import numpy as np

unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
   sorted_df = unsorted_df.sort_values(by='col1')

print sorted_df

มัน output มีดังนี้ -

col1  col2
1    1    3
2    1    2
3    1    4
0    2    1

สังเกตค่า col1 จะถูกจัดเรียงและค่า col2 และดัชนีแถวตามลำดับจะเปลี่ยนไปพร้อมกับ col1 ดังนั้นจึงดูไม่เรียงลำดับ

'by' อาร์กิวเมนต์รับรายการค่าคอลัมน์

import pandas as pd
import numpy as np

unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
   sorted_df = unsorted_df.sort_values(by=['col1','col2'])

print sorted_df

มัน output มีดังนี้ -

col1 col2
2   1   2
1   1   3
3   1   4
0   2   1

การเรียงลำดับอัลกอริทึม

sort_values()จัดเตรียมข้อกำหนดในการเลือกอัลกอริทึมจากการผสานพอร์ตฮีปพอร์ตและ Quicksort Mergesort เป็นอัลกอริทึมเดียวที่เสถียร

import pandas as pd
import numpy as np

unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
sorted_df = unsorted_df.sort_values(by='col1' ,kind='mergesort')

print sorted_df

มัน output มีดังนี้ -

col1 col2
1    1    3
2    1    2
3    1    4
0    2    1