Pandas是一种常用的数据处理库,可以对数据进行各种操作,其数据排序功能在数据处理过程中十分常用。下面我将详细讲解如何使用 Pandas 进行数据排序,并提供两个实际案例。
Pandas排序的基础用法
在 Pandas 中,可以使用 sort_values()
函数进行排序,默认按照升序排序。基本的语法和参数如下:
df.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')
参数说明:
by
:用于排序的列或者列的列表。如果是多列,需要使用列表进行传递。axis
:指定按照行还是列进行排序,默认为按照行进行排序。ascending
:指定是否升序排序,默认为 True,即升序排序。inplace
:是否在原 DataFrame 上进行修改,默认为 False。如果为 True,则在原 DataFrame 上进行修改。kind
:指定排序算法,值为quicksort
、mergesort
、heapsort
中的一个,默认是quicksort
。na_position
:缺失值的处理方式,值为last
或first
。默认是last
,代表将缺失值放到末尾。
Pandas按照指定列排序
下面的示例使用的是 Kaggle 平台上 Iris 数据集,首先读取数据:
import pandas as pd
data = pd.read_csv('/kaggle/input/iris/Iris.csv')
查看数据集:
data.head()
输出:
Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
0 1 5.1 3.5 1.4 0.2 Iris-setosa
1 2 4.9 3.0 1.4 0.2 Iris-setosa
2 3 4.7 3.2 1.3 0.2 Iris-setosa
3 4 4.6 3.1 1.5 0.2 Iris-setosa
4 5 5.0 3.6 1.4 0.2 Iris-setosa
我们可以根据 SepalLengthCm 列的数据进行升序或降序排序。首先根据 SepalLengthCm 列进行升序排序:
data.sort_values(by='SepalLengthCm')
输出:
Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
13 14 4.3 3.0 1.1 0.1 Iris-setosa
42 43 4.4 3.2 1.3 0.2 Iris-setosa
38 39 4.4 3.0 1.3 0.2 Iris-setosa
8 9 4.4 2.9 1.4 0.2 Iris-setosa
41 42 4.5 2.3 1.3 0.3 Iris-setosa
.. ... ... ... ... ... ...
122 123 7.7 2.8 6.7 2.0 Iris-virginica
118 119 7.7 2.6 6.9 2.3 Iris-virginica
135 136 7.7 3.0 6.1 2.3 Iris-virginica
131 132 7.9 3.8 6.4 2.0 Iris-virginica
117 118 7.9 3.8 6.7 2.2 Iris-virginica
[150 rows x 6 columns]
然后根据 SepalLengthCm 列进行降序排序:
data.sort_values(by='SepalLengthCm', ascending=False)
输出:
Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
131 132 7.9 3.8 6.4 2.0 Iris-virginica
117 118 7.9 3.8 6.7 2.2 Iris-virginica
118 119 7.7 2.6 6.9 2.3 Iris-virginica
122 123 7.7 2.8 6.7 2.0 Iris-virginica
105 106 7.6 3.0 6.6 2.1 Iris-virginica
.. ... ... ... ... ... ...
41 42 4.5 2.3 1.3 0.3 Iris-setosa
8 9 4.4 2.9 1.4 0.2 Iris-setosa
38 39 4.4 3.0 1.3 0.2 Iris-setosa
42 43 4.4 3.2 1.3 0.2 Iris-setosa
13 14 4.3 3.0 1.1 0.1 Iris-setosa
[150 rows x 6 columns]
Pandas按照多个列排序
如果希望按照多个列进行排序,可以将列名放在一个列表中进行传递。下面的示例按照 SepalLengthCm 和 SepalWidthCm 两列进行排序。
data.sort_values(by=['SepalLengthCm', 'SepalWidthCm'])
输出:
Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
13 14 4.3 3.0 1.1 0.1 Iris-setosa
42 43 4.4 3.2 1.3 0.2 Iris-setosa
8 9 4.4 2.9 1.4 0.2 Iris-setosa
38 39 4.4 3.0 1.3 0.2 Iris-setosa
41 42 4.5 2.3 1.3 0.3 Iris-setosa
.. ... ... ... ... ... ...
131 132 7.9 3.8 6.4 2.0 Iris-virginica
117 118 7.9 3.8 6.7 2.2 Iris-virginica
122 123 7.7 2.8 6.7 2.0 Iris-virginica
135 136 7.7 3.0 6.1 2.3 Iris-virginica
131 132 7.9 3.8 6.4 2.0 Iris-virginica
[150 rows x 6 columns]
从上述示例可以看出,按照多列排序时,前一列排序相同的行在后一列排序时会按照前一列的顺序进行排列。
综上所述,通过以上两个实际案例我们详细讲解了 Pandas 如何进行单列或多列排序,你可以根据实际需求使用 Pandas 完成数据排序操作。