Python Pandas - Sortieren
In Pandas gibt es zwei Arten der Sortierung. Sie sind -
- Nach Etikett
- Nach tatsächlichem Wert
Betrachten wir ein Beispiel mit einer Ausgabe.
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
Es ist output ist wie folgt -
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
Im unsorted_df, das labels und die valuessind unsortiert. Lassen Sie uns sehen, wie diese sortiert werden können.
Nach Etikett
Verwendung der sort_index()Durch Übergeben der Achsenargumente und der Sortierreihenfolge kann DataFrame sortiert werden. Standardmäßig erfolgt die Sortierung nach Zeilenbeschriftungen in aufsteigender Reihenfolge.
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
Es ist output ist wie folgt -
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
Sortierreihenfolge
Durch Übergeben des Booleschen Werts an den aufsteigenden Parameter kann die Reihenfolge der Sortierung gesteuert werden. Betrachten wir das folgende Beispiel, um dasselbe zu verstehen.
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
Es ist output ist wie folgt -
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
Sortieren Sie die Spalten
Durch Übergeben des Achsenarguments mit dem Wert 0 oder 1 kann die Sortierung nach den Spaltenbeschriftungen erfolgen. Standardmäßig ist Achse = 0, nach Zeile sortieren. Betrachten wir das folgende Beispiel, um dasselbe zu verstehen.
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
Es ist output ist wie folgt -
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
Nach Wert
Wie die Indexsortierung, sort_values()ist die Methode zum Sortieren nach Werten. Es akzeptiert ein 'by'-Argument, das den Spaltennamen des DataFrame verwendet, mit dem die Werte sortiert werden sollen.
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
Es ist output ist wie folgt -
col1 col2
1 1 3
2 1 2
3 1 4
0 2 1
Beachten Sie, dass die Werte für col1 sortiert sind und sich der jeweilige Wert für col2 und der Zeilenindex zusammen mit col1 ändern. Sie sehen also unsortiert aus.
'by' Argument nimmt eine Liste von Spaltenwerten.
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
Es ist output ist wie folgt -
col1 col2
2 1 2
1 1 3
3 1 4
0 2 1
Sortieralgorithmus
sort_values()bietet eine Möglichkeit, den Algorithmus aus Mergesort, Heapsort und Quicksort auszuwählen. Mergesort ist der einzige stabile Algorithmus.
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
Es ist output ist wie folgt -
col1 col2
1 1 3
2 1 2
3 1 4
0 2 1