3.Pandas应用 GroupBy

1.GroupBy对象创建

# 测试数据
import pandas as pd
fortune = pd.read_csv("fortune1000.csv")
fortune.head()

在这里插入图片描述

创建单列GroupBy对象,使用get_group()提取数据

# 创建单列GroupBy对象,使用get_group()提取数据
sector = fortune.groupby("Sector")
sector.get_group("Apparel")

在这里插入图片描述

创建多列的GroupBy对象,使用元组提取数据

# 创建多列的GroupBy对象,使用元组提取数据
sector2 = fortune.groupby(["Sector","Industry"])
sector2.get_group(("Energy","Petroleum Refining"))

在这里插入图片描述

2.GroupBy对象属性

len()

sector = fortune.groupby("Sector")
# len属性 表示 fortune 里 Sector的类型数量 
len(sector), fortune["Sector"].nunique() == len(sector)

(21, True)

.size()

# size() 每种类型的数量
sector.size()

在这里插入图片描述

3.GroupBy对象方法

提取数据方法(注意:提取前一般先排序)

# first() 提取类型第一条数据
sector.first()
# last() 提取类型最后一条数据
sector.last()
# nth(n) 提取类型第n条数据,第一条n为0
sector.nth(5)
# head(n) 提取类型前n条数据,默认n=5
sector.head(3)
# tail(n) 提取类型最后n条数据,默认n=5
sector.tail(3)

聚合方法

max:求最大
min:求最小
mean:求平均值
sum:求和 等等
注意:结果是每列上的最大值,他们之间没有联系

# 注意:结果是每列上的最大值 他们之间没有联系
sector.max().head()

在这里插入图片描述

选取指定列

# 单列
sector["Employees"].max()
# 多列
sector[["Employees", "Profits", "Revenues"]].max()
# 所有列
sector.max()

agg() 传入一个字典参数,为指定列提供指定的聚合方法

agg_dict = {
    "Employees":"min",
    "Profits":"mean",
    "Revenues":"sum"
}
sector.agg(agg_dict).head()

在这里插入图片描述

apply() 传入一个自定义函数,对GroupBy对象每个分组进行操作

注意:自定义函数只接受一个DataFrame参数

## 分组前三Profits翻倍
def double_Profits(df):
    df_3 = df.head(3)
    df_3['Profits'] = df_3['Profits']*2
    return df_3

sector.apply(double_Profits)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值