25个例子学会PandasGroupby操作!转载
原创点击上面的“菜鸟学习”,点击上面的“菜鸟学习”,点击上面的“菜鸟学习”Python“,选择”明星“公共号码”,选择“明星”公共号码“,选择”明星“公共号码
超级无敌干货,先送到!超级无与伦比的干货,首发!
来源丨DeepHub IMBA
大家好,我是菜鸟兄弟。大家好,我是菜鸟兄弟。大家好,我是菜鸟兄弟。大家好,我是菜鸟兄弟。
groupby是Pandas数据分析中最常用的函数之一。它用于基于给定列中不同值的数据点(即行)执行分组,并且可以计算分组的数据以生成该组的聚合值。
如果我们有一个包含汽车品牌和价格信息的数据集,那么我们可以使用groupby函数来计算每个品牌的平均价格。
在本文中,我们将使用本文中的,我们将在本文中使用,我们将使用25下面提供了详细的示例groupby函数的用法。这25这些示例还包括不太常用但在各种任务中可能有用的操作。
这里使用的数据集是随机生成的,我们将其视为销售数据集。
import pandas as pd
sales = pd.read_csv("sales_data.csv")
sales.head()
1,单列聚合
我们可以计算每个商店的平均库存量如下:
sales.groupby("store")["stock_qty"].mean()
#输出
store
Daisy 1811.861702
Rose 1677.680000
Violet 14622.406061
Name: stock_qty, dtype: float64
2、多列聚合、多列聚合
一次操作中的多个聚合。下面是我们如何计算每家商店的平均库存数量和价格。
sales.groupby("store")[["stock_qty","price"]].mean()
3、多列多聚合、多列多聚合
我们也可以用我们也可以用agg函数计算多个聚合值。
sales.groupby("store")["stock_qty"].agg(["mean", "max"])
4,命名聚合结果,命名聚合结果
在前面的两个示例中,不清楚聚合列代表什么。例如,“mean“没有告诉我们它是什么的平均值。在这种情况下,我们可以命名聚合的结果。
sales.groupby("store").agg(
avg_stock_qty = ("stock_qty", "mean"),
max_stock_qty = ("stock_qty", "max")
)
要聚合的列名和函数名需要写入元组中。
5、多聚合、多功能
sales.groupby("store")[["stock_qty","price"]].agg(["mean", "max"])
6命名不同列的聚合,命名不同列的聚合
sales.groupby("store").agg(
avg_stock_qty = ("stock_qty", "mean"),
avg_price = ("price", "mean")
)
7、as_index参数
如果groupby运算的输出是运算的输出是DataFrame,可以使用可以使用的,可以使用的,可以使用as_index参数使它们成为参数使它们成为参数DataFrame在一栏中。在其中一列中。中的列
sales.groupby("store", as_index=False).agg(
avg_stock_qty = ("stock_qty", "mean"),
avg_price = ("price", "mean")
)
8,多列用于分组,多列用于分组,多列用于分组
正如我们可以聚合多个列一样,我们也可以使用多个列进行分组。
sales.groupby(["store","product_group"], as_index=False).agg(
avg_sales = ("last_week_sales", "mean")
).head()
为商店和产品的每个组合生成一个组。
9,排序输出,排序输出
可以使用sort_values该函数根据聚合列对输出进行排序。
sales.groupby(["store","product_group"], as_index=False).agg( avg_sales = ("last_week_sales", "mean")
).sort_values(by="avg_sales", ascending=False).head()
这些行根据平均销售额按降序排序。
10、最大的Top N
max函数返回每个组的最大值。如果我们需要n最大值可按以下方式使用。最大值可按如下方式使用。最大值可按如下方式使用。
sales.groupby("store")["last_week_sales"].nlargest(2)
store
Daisy 413 1883
231 947
Rose 948 883
263 623
Violet 991 3222
339 2690
Name: last_week_sales, dtype: int64
11、最小的Top N
与最大值类似,也可以找到最小值
sales.groupby("store")["last_week_sales"].nsmallest(2)
12、第n个值
除上面2除了第一个,还可以找到组中的第一个n个值。
sales_sorted = sales.sort_values(by=["store","last_month_sales"], ascending=False, ignore_index=True)
找出每个商店上个月销售额排名第五的产品如下:
sales_sorted.groupby("store").nth(4)
输出包含每个组的第一个数字5排好了。因为这些行是根据上个月的销售额进行排序的,所以我们将得到上个月销售额排名第五的行。
13、第n值,向后排序的值,按逆序排序的值,向后排序
也可以先用否定词也可以先用否定词n项目。例如。" nth(-2) "返回从末尾开始的第二行。
sales_sorted.groupby("store").nth(-2)
14、唯一值
unique函数可用于查找每个组中的唯一值。例如,每组中唯一的产品编码如下所示:
sales.groupby("store", as_index=False).agg(
unique_values = ("product_code","unique")
)
15,唯一值的数量,唯一值的数量唯一值的数量
您也可以使用也可以使用您也可以使用nunique函数查找每个组中唯一值的数量。
sales.groupby("store", as_index=False).agg(
number_of_unique_values = ("product_code","nunique")
)
16、Lambda表达式
可以在agg使用函数Using函数使用lambda表达式作为自定义聚合操作。表达式作为自定义聚合操作。表达式作为自定义聚合操作。表达式作为自定义聚合操作。
sales.groupby("store").agg(
total_sales_in_thousands = (
"last_month_sales",
lambda x: round(x.sum() / 1000, 1)
)
)
17、apply函数
使用apply函数将Lambda将表达式应用于每个组。例如,我们可以计算每个商店上周的销售额与上个月的季度销售额之间的差值的平均值,如下所示:
sales.groupby("store").apply(
lambda x: (x.last_week_sales - x.last_month_sales / 4).mean()
)
store
Daisy 5.094149
Rose 5.326250
Violet 8.965152
dtype: float64
18、dropna
默认情况下,默认情况下groupby该函数会忽略缺少的值。如果用于分组的列中缺少某个值,则该值不会包含在任何组中,也不会单独显示。因此,您可以使用dropna参数来更改此行为。参数来更改此行为。参数来更改此行为。参数来更改行为。
让我们从添加一个缺少存储值的新行开始。
sales.loc[1000] = [None, "PG2", 10000, 120, 64, 96, 15, 53]
然后用以下公式计算数值dropna参数和不带参数以及不带参数和不带参数dropna看看各家门店的平均价格参数有何不同。
sales.groupby("store")["price"].mean()
store
Daisy 69.327426
Rose 60.513700
Violet 67.808727
Name: price, dtype: float64
查看设置了Missing Value参数的结果。
sales.groupby("store", dropna=False)["price"].mean()
store
Daisy 69.327426
Rose 60.513700
Violet 67.808727
NaN 96.000000
Name: price, dtype: float64
groupby函数的dropna参数,使用参数,使用pandas版本1.1.0或者更高。或者晚些时候。
19组数由以下公式确定
有时有必要知道已生成了多少个组,这可以使用ngroups。
sales.groupby(["store", "product_group"]).ngroups
18
在商店和产品组列中,商店和产品组列中有18不同价值的不同组合。不同价值的不同组合。
20,获取特定组,获取特定分组
get_group函数获取特定组并返回函数获取特定组并返回函数获取特定组并返回DataFrame。
例如,我们可以获取属于该商店的文件数量。Daisy和产品组“”和产品组“PG1行“的行如下”的行:
aisy_pg1 = sales.groupby(
["store", "product_group"]).get_group(("Daisy","PG1")
)
daisy_pg1.head()
21、rank函数
rank函数用于根据给定列中的值为行分配排名。我们可以使用rank和groupby函数分别对每个组中的行进行排序。函数分别对每个组中的行进行排序。
sales["rank"] = sales.groupby("store"["price"].rank(
ascending=False, method="dense"
)
sales.head()
22、累计操作、累计操作
我们可以计算出每组的累加和。
import numpy as npdf = pd.DataFrame(
{
"date": pd.date_range(start="2022-08-01", periods=8, freq="D"),
"category": list("AAAABBBB"),
"value": np.random.randint(10, 30, size=8)
}
)
我们可以创建一个单独的列,其中包含值列的累加和,如下所示:
df["cum_sum"] = df.groupby("category")["value"].cumsum()
23、expanding函数
expanding函数提供展开转换。但对于展开后的操作,您仍然需要一个累积函数来堆积区域操作。例如,它与cumsum 函数,则结果将与与sum功能是相同的。功能是相同的。功能相同。
df["cum_sum_2"] = df.groupby(
"category"
)["value"].expanding().sum().values
24、累计平均值、累计平均值
使用展开函数和平均值函数计算累积平均值。
df["cum_mean"] = df.groupby(
"category"
)["value"].expanding().mean().values
25,扩展后的最大值,扩展后的最大值扩展后的最大值
可以使用expand和max该功能记录该组当前的最大值。
df["current_highest"] = df.groupby(
"category"
)["value"].expanding().max().values
在Pandas中groupby函数与aggregate这些功能共同构成了一个高效的数据分析工具。本文中提供的示例包括groupby我们希望您会发现该功能的大多数用例都很有帮助。
推荐阅读:
入门: 最完整的零基学习最全面的零基学习最完整的零基学习Python的问题 | 从零开始学习从零基础学习从零基础学习8个月的Python | 实战项目 |学Python这是捷径,这是捷径,这是捷径
干货:爬行豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析最佳球员分析 | 从万众期待到口碑惨败!唐探3令人失望 | 笑新一天图龙记笑新一天图龙集 | 谜语之王回答灯谜之王灯谜之王谜语之王 |用Python人山人海素描图人山人海素描图人山人海 Dishonor太火了,我用机器学习做了一个迷你推荐系统电影
趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python日常酷跑游戏日常酷跑游戏日常酷跑游戏!
AI: 会写诗的机器人会写诗的机器人会写诗的机器人 | 给图片上色给图片上色给图片上色 | 预测收入 | 《耻辱》太火了,我用机器学习做了一部迷你推荐系统电影
小工具: Pdf转Word易于修复表单和水印!易于处理的表单和水印!易于修复表单和水印!简单的表格和水印! | 一键把html将页面另存为网页另存为网页另存为pdf!| 再见PDF提款费!提款费!提款费!提款费用! | 用90构建最强大的代码行构建最强大的代码行构建最强大的代码行PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一个固定的低成本机票提醒!制作一张别针的低价机票提醒! |60代码行做了一个语音墙纸切换,天天见女士!
年度弹出文案年度弹出文案年度爆炸性文案
-
1). 卧槽!Pdf转Word用Python轻松搞定 !
-
2).学Python闻起来好香!我用100一行代码做了一个网站,帮助人们做了一行代码,做了一个网站,帮助了人们做了一行代码,帮助了人们PS旅行图片赚鸡腿吃旅行图片赚鸡腿
-
3).第一次播放量过亿,火爆全网,我分析了《顺风车妹妹》,发现了这些秘密
-
4). 80一行行代码!使用Python让救济金做正确的事做做的人做好事的人A梦分身
-
5).你必须掌握的东西你必须掌握20个python代码,简短而紧凑,永无止境的有用代码,简短而甜蜜,永无止境的有用的代码,简短而紧凑,永无止境的使用代码,简短而甜蜜,永无止境的用途
-
6). 30个Python古怪技能集古怪小贴士收藏古怪技能集
-
7). 我总结的80《菜鸟学习专页》《菜鸟学习专页》《菜鸟学习》Python精选干货.pdf》,都是干货
-
8). 再见Python!我要学Go了!2500词深度分析词深度分析词深度分析 !
-
9).发现一只舔狗的福利!这Python爬虫神器太酷了,不能自动下载女孩的照片
点击阅读原文点击查看点击点击阅读点击阅读原文点击查看B放我鸽子看录像!站在我的录像带上!在视频里放我鸽子!站在我的录像带上!
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除