Có hai cách phân loại có sẵn trong Panda:
- Theo nhãn
- Theo giá trị
Xem xét ví dụ sau :
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
Kết quả :
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 nhãn và giá trị không được sắp xếp. Ta sẽ xem qua các cách sắp xếp
1. Theo nhãn [ Label ]
Sử dụng phương thức sort_index [], bằng cách chuyể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
Kết quả :
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 kiểm tra. Chúng ta hãy xem xét ví dụ tương tự sau để hiểu.
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
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 theo 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
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
Kết quả :
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
2. Theo giá trị [Value]:
Giống như sắp xếp theo chỉ mục, sort_values [] là phương thức để sắp xếp theo giá trị. Nó dùng đố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
Kết quả :
col1 col2
1 1 3
2 1 2
3 1 4
0 2 1
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, nó không được sắp xếp.
đối số 'by' 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
Kết quả :
col1 col2
2 1 2
1 1 3
3 1 4
0 2 1
3. Thuật toán sắp xếp :
sort_values [] cung cấp thuật toán như mergesort, heapsort và quicksort. Mergesort là thuật toán ổn định nhất.
Ví dụ :
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
Kết quả :
col1 col2
1 1 3
2 1 2
3 1 4
0 2 1
Có hai cách phân loại có sẵn trong Panda:
- Theo nhãn
- Theo giá trị
Xem xét ví dụ sau :
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
Kết quả :
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 nhãn và giá trị không được sắp xếp. Ta sẽ xem qua các cách sắp xếp
1. Theo nhãn [ Label ]
Sử dụng phương thức sort_index [], bằng cách chuyể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
Kết quả :
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 kiểm tra. Chúng ta hãy xem xét ví dụ tương tự sau để hiểu.
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
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 theo 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
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
Kết quả :
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
2. Theo giá trị [Value]:
Giống như sắp xếp theo chỉ mục, sort_values [] là phương thức để sắp xếp theo giá trị. Nó dùng đố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
Kết quả :
col1 col2
1 1 3
2 1 2
3 1 4
0 2 1
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, nó không được sắp xếp.
đối số 'by' 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
Kết quả :
col1 col2
2 1 2
1 1 3
3 1 4
0 2 1
3. Thuật toán sắp xếp :
sort_values [] cung cấp thuật toán như mergesort, heapsort và quicksort. Mergesort là thuật toán ổn định nhất.
Ví dụ :
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
Kết quả :
col1 col2
1 1 3
2 1 2
3 1 4
0 2 1
Có vẻ như bạn phải có các loại hỗn hợp trong cột Education
trong DataFrame của bạn. Thông báo lỗi cho bạn biết rằng nó không thể so sánh các chuỗi với số float trong cột của bạn. Giả sử bạn muốn sắp xếp các giá trị bằng số, bạn có thể chuyển đổi chúng thành loại số nguyên và sắp xếp sau đó. Tôi khuyên bạn nên làm điều này bằng
mọi cách, vì các loại hỗn hợp sẽ không quá hữu ích cho bất kỳ hoạt động nào trong DataFrame của bạn. Sau đó sử dụng DataFrame.sort_values
.
suicide_data['Education'] = suicide_data['Education'].astype['int']
suicide_data.sort_values[by='Education']
Nó cũng có giá trị chỉ ra rằng nỗ lực đầu tiên của bạn,
suicide_data.sort_index[axis=0, kind='mergesort']
sẽ sắp xếp DataFrame của bạn theo chỉ mục mà bạn không muốn và lần thử thứ hai của bạn
suicide_data.Education.sort_values[]
sẽ chỉ trả về Sê-ri đã sắp xếp - chúng là các cách tiếp cận hoàn toàn không hợp lệ.