5、Pandas分组和排序

发布时间:2024年01月16日


分组和排序可以提升您的数据分析水平。数据集越复杂,这部分就越显得重要。

本节夸克网盘数据集链接:https://pan.quark.cn/s/07400ba46613 提取码:Z9sZ

简介

映射允许我们逐个值地对DataFrame或Series中的数据进行转换,作用于整个列。然而,通常我们希望对数据进行分组,然后针对数据所在的组执行特定操作。

正如您将了解到的,我们可以通过groupby()操作来实现这一点。我们还将涵盖一些其他主题,比如更复杂的DataFrame索引方式,以及如何对数据进行排序。

组内分析

到目前为止,我们已经大量使用的一个函数是value_counts()函数。我们可以通过以下方式复制value_counts()的功能:

In [1]:

import pandas as pd
reviews = pd.read_csv("../input/wine-reviews/winemag-data-130k-v2.csv", index_col=0)
pd.set_option("display.max_rows", 5)

In [2]:

reviews.groupby('points').points.count()

Out[2]:

points
80     397
81     692
      ... 
99      33
100     19
Name: points, Length: 21, dtype: int64

groupby()创建了一个将相同的分值分配给给定葡萄酒的评论组。然后,对于每个组,我们获取了points()列,并计算了它出现的次数。value_counts()只是这个groupby()操作的一个快捷方式。

我们可以使用之前用过的任何摘要函数来处理这些数据。例如,要获取每个分值类别中最便宜的葡萄酒,我们可以执行以下操作:

In [3]:

reviews.groupby('points').price.min()

Out[3]:

points
80      5.0
81      5.0
       ... 
99     44.0
100    80.0
Name: price, Length: 21, dtype: float64

您可以将我们生成的每个组视为DataFrame的一个切片,其中仅包含与值匹配的数据。我们可以直接使用apply()方法访问这个DataFrame,然后可以以任何我们认为合适的方式操作数据。例如,以下是从数据集中每个酿酒厂中评论的第一瓶葡萄酒中选择名称的一种方式:

In [4]:

reviews.groupby('winery').apply(lambda df: df.title.iloc[0])

Out[4]:

winery
1+1=3                          1+1=3 NV Rosé Sparkling (Cava)
10 Knots                 10 Knots 2010 Viognier (Paso Robles)
                                  ...                       
文章来源:https://blog.csdn.net/jiangxinufo00/article/details/135586399
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。