Python Pandas - Sıralama

Pandalarda iki tür sıralama vardır. Onlar -

  • Etikete göre
  • Gerçek Değere Göre

Çıktısı olan bir örneği ele alalım.

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

Onun output aşağıdaki gibidir -

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

İçinde unsorted_df, labels ve valuessıralanmamış. Bakalım bunların nasıl sıralanabileceğini görelim.

Etikete Göre

Kullanmak sort_index()yönteminde, eksen bağımsız değişkenlerini ve sıralama sırasını ileterek DataFrame sıralanabilir. Varsayılan olarak sıralama, satır etiketlerinde artan sırada yapılır.

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

Onun output aşağıdaki gibidir -

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

Sıralama Düzeni

Boolean değerini artan parametreye geçirerek sıralamanın sırası kontrol edilebilir. Aynısını anlamak için aşağıdaki örneği ele alalım.

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

Onun output aşağıdaki gibidir -

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

Sütunları Sırala

0 veya 1 değerine sahip eksen bağımsız değişkenini ileterek, sütun etiketleri üzerinde sıralama yapılabilir. Varsayılan olarak, axis = 0, satıra göre sıralayın. Aynısını anlamak için aşağıdaki örneği ele alalım.

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

Onun output aşağıdaki gibidir -

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

Değere Göre

Dizin sıralaması gibi, sort_values()değerlere göre sıralama yöntemidir. Değerlerin sıralanacağı DataFrame'in sütun adını kullanacak bir 'by' argümanını kabul eder.

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

Onun output aşağıdaki gibidir -

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

Col1 değerlerinin sıralandığına ve ilgili col2 değerinin ve satır dizininin col1 ile birlikte değişeceğine dikkat edin. Böylece sıralanmamış görünüyorlar.

'by' argüman sütun değerlerinin bir listesini alır.

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

Onun output aşağıdaki gibidir -

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

Sıralama Algoritması

sort_values()algoritmayı birleştirme sıralaması, yığın sıralaması ve hızlı sıralama arasından seçmek için bir hüküm sağlar. Mergesort tek kararlı algoritmadır.

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

Onun output aşağıdaki gibidir -

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