Python Pandas - Menyortir

Ada dua jenis penyortiran yang tersedia di Panda. Mereka adalah -

  • Menurut label
  • Dengan Nilai Aktual

Mari kita pertimbangkan contoh dengan output.

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

Nya output adalah sebagai berikut -

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

Di unsorted_df, itu labels dan valuestidak disortir. Mari kita lihat bagaimana ini dapat diurutkan.

Dengan Label

Menggunakan sort_index()metode, dengan meneruskan argumen sumbu dan urutan pengurutan, DataFrame dapat diurutkan. Secara default, pengurutan dilakukan pada label baris dalam urutan menaik.

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

Nya output adalah sebagai berikut -

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

Urutan Penyortiran

Dengan meneruskan nilai Boolean ke parameter menaik, urutan pengurutan dapat dikontrol. Mari kita perhatikan contoh berikut untuk memahami hal yang sama.

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

Nya output adalah sebagai berikut -

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

Sortir Kolom

Dengan meneruskan argumen sumbu dengan nilai 0 atau 1, pengurutan dapat dilakukan pada label kolom. Secara default, axis = 0, urutkan berdasarkan baris. Mari kita perhatikan contoh berikut untuk memahami hal yang sama.

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

Nya output adalah sebagai berikut -

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

Dengan Nilai

Seperti pengurutan indeks, sort_values()adalah metode untuk mengurutkan berdasarkan nilai. Ini menerima argumen 'oleh' yang akan menggunakan nama kolom dari DataFrame yang nilainya akan diurutkan.

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

Nya output adalah sebagai berikut -

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

Perhatikan, nilai col1 diurutkan dan nilai col2 dan indeks baris masing-masing akan berubah bersama dengan col1. Jadi, mereka terlihat tidak disortir.

'by' argumen mengambil daftar nilai kolom.

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

Nya output adalah sebagai berikut -

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

Algoritma Pengurutan

sort_values()menyediakan ketentuan untuk memilih algoritma dari mergesort, heapsort dan quicksort. Mergesort adalah satu-satunya algoritme yang stabil.

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

Nya output adalah sebagai berikut -

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