Python Pandas - Sắp xếp
Có hai loại phân loại có sẵn trong Gấu trúc. Họ là -
- Theo nhãn
- Theo giá trị thực tế
Chúng ta hãy xem xét một ví dụ với một đầu ra.
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
Nó là output như sau -
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
Trong unsorted_df, các labels và valueskhông được sắp xếp. Hãy để chúng tôi xem chúng có thể được sắp xếp như thế nào.
Theo nhãn
Sử dụng sort_index(), bằng cách truyền các đối số trục và thứ tự sắp xếp, DataFrame có thể được sắp xếp. Theo mặc định, việc sắp xếp được thực hiện trên các nhãn hàng theo thứ tự tăng dần.
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
Nó là output như sau -
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
Thứ tự sắp xếp
Bằng cách chuyển giá trị Boolean cho tham số tăng dần, thứ tự sắp xếp có thể được kiểm soát. Chúng ta hãy xem xét ví dụ sau để hiểu tương tự.
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
Nó là output như sau -
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ắp xếp các cột
Bằng cách chuyển đối số trục với giá trị 0 hoặc 1, việc sắp xếp có thể được thực hiện trên các nhãn cột. Theo mặc định, axis = 0, sắp xếp theo hàng. Chúng ta hãy xem xét ví dụ sau để hiểu tương tự.
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
Nó là output như sau -
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
Theo giá trị
Giống như sắp xếp chỉ mục, sort_values()là phương pháp sắp xếp theo giá trị. Nó chấp nhận một đối số 'by' sẽ sử dụng tên cột của DataFrame mà các giá trị sẽ được sắp xếp.
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
Nó là output như sau -
col1 col2
1 1 3
2 1 2
3 1 4
0 2 1
Hãy quan sát, các giá trị col1 được sắp xếp và giá trị col2 và chỉ số hàng tương ứng sẽ thay đổi cùng với col1. Vì vậy, chúng trông không được sắp xếp.
'by' đối số nhận một danh sách các giá trị cột.
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
Nó là output như sau -
col1 col2
2 1 2
1 1 3
3 1 4
0 2 1
Thuật toán sắp xếp
sort_values()cung cấp một điều khoản để lựa chọn thuật toán từ mergesort, heapsort và quicksort. Mergesort là thuật toán ổn định duy nhất.
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
Nó là output như sau -
col1 col2
1 1 3
2 1 2
3 1 4
0 2 1