Pandas的排序方式介绍(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)
运行结果:
col2 col11 -2.063177 0.5375274 0.142932 -0.6848846 0.012667 -0.3893402 -0.548797 1.8487433 -1.044160 0.8373815 0.385605 1.3001859 1.031425 -1.0029678 -0.407374 -0.4351420 2.237453 -1.0671397 -1.445831 -1.701035
在unsorted_df中,标签和值未排序。让我们看看如何对它们进行排序。
按标签排序
使用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)
运行结果:
col2 col19 0.825697 0.3744638 -1.699509 0.5103737 -0.581378 0.6229586 -0.202951 0.9543005 -1.289321 -1.5512504 1.302561 0.8513853 -0.157915 -0.3886592 -1.222295 0.1666091 0.584890 -0.2910480 0.668444 -0.061294
排序的顺序
通过将布尔值传递给升序参数,可以控制排序的顺序。让我们考虑以下示例以了解相同的情况。
示例
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 col19 0.825697 0.3744638 -1.699509 0.5103737 -0.581378 0.6229586 -0.202951 0.9543005 -1.289321 -1.5512504 1.302561 0.8513853 -0.157915 -0.3886592 -1.222295 0.1666091 0.584890 -0.2910480 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)
运行结果:
col1 col21 -0.291048 0.5848904 0.851385 1.3025616 0.954300 -0.2029512 0.166609 -1.2222953 -0.388659 -0.1579155 -1.551250 -1.2893219 0.374463 0.8256978 0.510373 -1.6995090 -0.061294 0.6684447 0.622958 -0.581378
按值排序
与索引排序类似,sort_values()是按值排序的方法。它接受一个“ by”参数,该参数将使用要对值进行排序的DataFrame的列名。
示例
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)
运行结果:
col1 col21 1 32 1 23 1 40 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)
运行结果:
col1 col22 1 21 1 33 1 40 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)
运行结果:
col1 col21 1 32 1 23 1 40 2 1