关键词

python pandas 组内排序、单组排序、标号的实例

下面我将详细讲解Python Pandas中的组内排序(GroupBy Sorting)、单组排序(Single Group Sorting)以及带标号的实例。

组内排序(GroupBy Sorting)

在Pandas数据里面,我们通常使用groupby分组方法来进行数据分析,其中包含DataFrame.groupby(根据某一列分组)、DataFrame.groupby().sum()(对某一列进行求和)、DataFrame.groupby().mean()(对某一列进行求平均值)等等。 接下来,我们将介绍如何在分组后真正掌握数据,实现组内排序。

首先,我们使用Pandas的groupby函数来创建分组:

df = pd.DataFrame({'key':['A', 'B', 'C', 'A', 'B', 'C'], 
                   'data':[1, 2, 3, 4, 5, 6]})
grouped = df.groupby('key')

接下来,我们将对分组结果进行排序操作。我们可以使用DataFrame.sort_values()方法对每个组中的元素进行排序。比如,我们对分组后的数据按照data列进行从大到小排序:

result = grouped.apply(lambda x: x.sort_values(['data'], ascending=False))
print(result)

此时,你会发现print(result)的结果是:

      key  data
key           
A   3   A     4
    0   A     1
B   4   B     5
    1   B     2
C   5   C     6
    2   C     3

示例1:分组排序并返回指定数量的前几个元素

接下来,我们将演示如何使用组内排序的技术来返回每个组中前几个元素(如前三个):

def get_top_n(group, n=3):
    return group.sort_values(['data'], ascending=False)[:n]

grouped.apply(get_top_n)

此时,你会发现返回结果是:

     key  data
key          
A  3   A     4
   0   A     1
B  4   B     5
   1   B     2
C  5   C     6
   2   C     3

单组排序(Single Group Sorting)

现在,我们将介绍如何在一组数据中实现排序,例如列表、序列或数据框(DataFrames)。 下面是一个列表示例:

lst = [4, 7, 1, 3, 9, 2, 8, 5, 6]

对于这个列表,我们可以用下面的代码实现排序:

sorted(lst)

此时,你会发现返回的内容是:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

另一个示例是对一个DataFrame进行排序。假设这个数据集是这样的:

df = pd.DataFrame({'name':['Alice', 'Bob', 'Charlie', 'David', 'Emily'], 
                   'age':[25, 32, 18, 47, 35], 
                   'score':[12, 9, 16, 8, 13]})

现在,我们可以对这个数据框按照年龄进行升序排序:

df.sort_values(by=['age'])

此时,你会发现返回的结果是:

      name  age  score
2  Charlie   18     16
0    Alice   25     12
4    Emily   35     13
1      Bob   32      9
3    David   47      8

带标号的实例

我们还可以使用Pandas的sort_index()方法来对一个序列或数据框的标号(index)进行排序。 下面是一个列表示例:

lst = [4, 7, 1, 3, 9, 2, 8, 5, 6]
s = pd.Series(lst, index=[4, 2, 0, 1, 7, 6, 3, 5, 8])

我们现在可以使用sort_index()方法对序列进行标号排序:

s.sort_index()

此时,你会发现这个序列被按照标号进行了排序:

0    1
1    3
2    7
3    8
4    4
5    5
6    2
7    9
8    6
dtype: int64

同样,我们可以将sort_index()方法应用于数据框中:

df = pd.DataFrame({'name':['Alice', 'Bob', 'Charlie', 'David', 'Emily'], 
                   'age':[25, 32, 18, 47, 35], 
                   'score':[12, 9, 16, 8, 13]}, 
                  index=[2, 3, 1, 5, 4])
df.sort_index()

此时,你会发现按照标号对数据框进行了排序:

      name  age  score
1  Charlie   18     16
2    Alice   25     12
3      Bob   32      9
4    Emily   35     13
5    David   47      8

这便是Python Pandas中的组内排序、单组排序、带标号的实例攻略的完整内容。希望这篇文章对你有所帮助!

本文链接:http://task.lmcjl.com/news/17248.html

展开阅读全文