0
点赞
收藏
分享

微信扫一扫

pandas 分组聚合

若如初梘 2022-12-28 阅读 90


目录

  • ​​基础​​
  • ​​统计每个国家的星巴克的数量​​
  • ​​统计美国的星巴克的数量​​
  • ​​统计美国每个省份星巴克的数量​​
  • ​​统计美国AK省份星巴克的数量 法1​​
  • ​​统计美国AK省份星巴克的数量 法2​​
  • ​​综合使用​​
  • ​​分组之后普通函数的使用​​
  • ​​分组之后 apply() 函数的使用​​
  • ​​分组之后 agg() 函数的使用​​

基础

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

pandas 分组聚合_多列

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

​按照单字段聚合​

# -*- 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:卖菜价格​

pandas 分组聚合_字段_02

分组之后普通函数的使用

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

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

pandas 分组聚合_ide_03

分组之后 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)

pandas 分组聚合_ide_04

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

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

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

pandas 分组聚合_多列_05


举报

相关推荐

0 条评论