pandas 分组聚合

基础

数据链接
https://wws.lanzous.com/i8oZGgjqvbi

在这里插入图片描述

统计每个国家的星巴克的数量

按照单字段聚合

# -*- codeing = utf-8 -*-
import pandas as pd
import numpy as np

df = pd.read_csv("../data/starbucks_store_worldwide.csv")
# 按国家进行分组后会有很多列 然后取Brand列进行统计,结果是各个国家的星巴克的数量
all_country_data_count = df.groupby(by="Country")["Brand"].count()
print(all_country_data_count )
统计美国的星巴克的数量
# -*- codeing = utf-8 -*-
import pandas as pd
import numpy as np

df = pd.read_csv("../data/starbucks_store_worldwide.csv")
# 按国家进行分组后会有很多列 然后取Brand列进行统计,结果是各个国家的星巴克的数量
all_country_data = df.groupby(by="Country")["Brand"].count()
# 统计美国的星巴克的数量
us_data_count= all_country_data["US"]
print(us_data_count)
统计美国每个省份星巴克的数量
# -*- codeing = utf-8 -*-
import pandas as pd
import numpy as np

df = pd.read_csv("../data/starbucks_store_worldwide.csv")
#  选国家家为美国的,然后按照省份进行分组,取星巴克这一列,进行统计
us_province_data = df[df["Country"] == "US"].groupby(by="State/Province")["Brand"].count()
print(us_province_data)
统计美国AK省份星巴克的数量 法1

按照多字段聚合

# -*- codeing = utf-8 -*-
import pandas as pd
import numpy as np

df = pd.read_csv("../data/starbucks_store_worldwide.csv")
# 按照国家和国家中的省份进行分组 然后取品牌这一列进行统计
# 分组后形成的是series
all_country_count = df.groupby(by=["Country","State/Province])["Brand"].count()
print(all_country_count["US"]["AK"])  # 第一种索引方式
#print(all_country_count["US", "AK"])  # 第二种索引方式
统计美国AK省份星巴克的数量 法2
# -*- codeing = utf-8 -*-
import pandas as pd
import numpy as np

df = pd.read_csv("../data/starbucks_store_worldwide.csv")
# 按照国家和国家中的省份进行分组 然后取品牌这一列进行统计
# 分组后形成的是DataFrame 索引是复合索引
all_country_count = df.groupby(["Country", "State/Province"])[["Brand"]].count()
print(all_country_count.loc["US"].loc["AK"])

综合使用

分组之后,往往会进行后续的处理,所以搭配一些函数介绍

数据创建连接 :从高级创建部分看
数据创建好后的部分内容如下

卖菜人一个月的卖菜情况

item:菜名 salesman:卖菜人 weight:进菜重量 price:卖菜价格
在这里插入图片描述

分组之后普通函数的使用

统计这一个月,张大妈,李大妈,赵大爷,销售了多少斤蔬菜

ret = df.groupby(['salesman'])['weight']
ret.sum()

在这里插入图片描述

分组之后 apply() 函数的使用

apply方法每次处理数据是一组一组进行处理的
统计出摊次数 卖菜总重量 一个月平均每天卖菜的重量(保留2位小数)
出摊次数举例:例如张大妈卖菜 100 200 300 斤, 总共买了三次,所以出摊次数为3次

# 出摊次数 卖菜总重量 一个月平均每天卖菜的重量(保留2位小数)
def analysis(x):
    return (x.count(),x.sum(),np.round(x.mean(),decimals=2))

ret.apply(analysis)

在这里插入图片描述

分组之后 agg() 函数的使用

统计每个销售人员一个月卖的3种菜的总重量和每种菜的平均价格

g = df.groupby(['salesman','item'])
g.agg({'weight':'sum','price':'mean'}).round(2)

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值