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 인 축 인수를 전달하면 열 레이블에서 정렬을 수행 할 수 있습니다. 기본적으로 axis = 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의 열 이름을 사용하는 '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')
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()mergesort, heapsort 및 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