Pandas Groupby 操作的25个示例

groupby函数是Pandas在数据分析中最常用的函数之一。它用于根据给定列中的不同值对数据点(即行)进行分组,分组后的数据可以计算生成组的聚合值。

如果我们有一个包含汽车品牌和价格信息的数据集,那么可以使用groupby功能来计算每个品牌的平均价格。

图片[1]-Pandas Groupby 操作的25个示例-山海云端论坛

在本文中,我们将使用25个示例来详细介绍groupby函数的用法。这些示例涵盖了一些不太常用但在各种任务中都能派上用场的操作。这里使用的数据集是随机生成的,我们将其视为一个销售数据集。

<code>import pandas as pd sales = pd.read_csv("sales_data.csv") sales.head()</code>
图片[2]-Pandas Groupby 操作的25个示例-山海云端论坛

1、单列聚合

我们可以计算出每个店铺的平均库存数量如下:

<code>sales.groupby("store")["stock_qty"].mean()</code>

2、多列聚合

在一个操作中进行多个聚合。以下是我们如何计算每个商店的平均库存数量和价格。

<code>sales.groupby("store")[["stock_qty","price"]].mean()</code>
图片[3]-Pandas Groupby 操作的25个示例-山海云端论坛

3、多列多个聚合

我们还可以使用agg函数来计算多个聚合值。

<code>sales.groupby("store")["stock_qty"].agg(["mean", "max"])</code>
图片[4]-Pandas Groupby 操作的25个示例-山海云端论坛

4、对聚合结果进行命名

在前面的两个示例中,聚合列表表示什么还不清楚。例如,“mean”并没有告诉我们它是什么的均值。在这种情况下,我们可以对聚合的结果进行命名。

<code>sales.groupby("store").agg( avg_stock_qty = ("stock_qty", "mean"), max_stock_qty = ("stock_qty", "max") )</code>

要聚合的列和函数名需要写在元组中。

5、多个聚合和多个函数

<code>sales.groupby("store")[["stock_qty","price"]].agg(["mean", "max"])</code>

6、对不同列的聚合进行命名

<code>sales.groupby("store").agg( avg_stock_qty = ("stock_qty", "mean"), avg_price = ("price", "mean") )</code>

7、as_index参数

如果groupby操作的输出是DataFrame,可以使用as_index参数使它们成为DataFrame中的一列。

<code>sales.groupby("store", as_index=False).agg( avg_stock_qty = ("stock_qty", "mean"), avg_price = ("price", "mean") )</code>

8、用于分组的多列

就像我们可以聚合多个列一样,我们也可以使用多个列进行分组。

<code>sales.groupby(["store","product_group"], as_index=False).agg( avg_sales = ("last_week_sales", "mean") ).head()</code>

9、排序输出

可以使用sort_values函数根据聚合列对输出进行排序。

<code>sales.groupby(["store","product_group"], as_index=False).agg( avg_sales = ("last_week_sales", "mean") ).sort_values(by="avg_sales", ascending=False).head()</code>

10、最大的Top N

<code>sales.groupby("store")["last_week_sales"].nlargest(2)</code>

11、最小的Top N

<code>sales.groupby("store")["last_week_sales"].nsmallest(2)</code>

12、第n个值

<code>sales_sorted = sales.sort_values(by=["store","last_month_sales"], ascending=False, ignore_index=True) sales_sorted.groupby("store").nth(4)</code>

13、第n个值,倒排序

<code>sales_sorted.groupby("store").nth(-2)</code>

14、唯一值

<code>sales.groupby("store", as_index=False).agg( unique_values = ("product_code","unique") )</code>

15、唯一值的数量

<code>sales.groupby("store", as_index=False).agg( number_of_unique_values = ("product_code","nunique") )</code>

16、Lambda表达式

<code>sales.groupby("store").agg( total_sales_in_thousands = ( "last_month_sales", lambda x: round(x.sum() / 1000, 1) ) )</code>

17、apply函数

<code>sales.groupby("store").apply( lambda x: (x.last_week_sales - x.last_month_sales / 4).mean() )</code>

18、dropna

<code>sales.groupby("store", dropna=False)["price"].mean()</code>

19、求组的个数

<code>sales.groupby(["store", "product_group"]).ngroups</code>

20、获得一个特定分组

<code>daisy_pg1 = sales.groupby(["store", "product_group"]).get_group(("Daisy","PG1")) daisy_pg1.head()</code>

21、rank函数

<code>sales["rank"] = sales.groupby("store")["price"].rank(ascending=False, method="dense") sales.head()</code>

22、累计操作

<code>df["cum_sum"] = df.groupby("category")["value"].cumsum()</code>

23、expanding函数

<code>df["cum_sum_2"] = df.groupby("category")["value"].expanding().sum().values</code>

24、累积平均

<code>df["cum_mean"] = df.groupby("category")["value"].expanding().mean().values</code>

25、展开后的最大值

<code>df["current_highest"] = df.groupby("category")["value"].expanding().max().values</code>

在Pandas中,groupby函数与aggregate函数共同构成了高效的数据分析工具。在本文所提供的示例中,涵盖了groupby功能的大多数用例,希望对你有所帮助。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容