Pandas 计算多行子集的平均值
我有一个csv文件,其中包含每个省份的门店销售数据,包括门店ID。我已经找到了如何获取销售额最多的省份列表和销售额最多的门店列表,但现在我需要计算:1)每个省的平均商店销售额,2)每个省最畅销的商店,然后3)它们之间的差异。数据如下所示:Pandas 计算多行子集的平均值,pandas,apache-spark,dataframe,Pandas,Apache Spark,Dataframe,我有一个csv文件,其中包含每个省份的门店销售数据,包括门店ID。我已经找到了如何获取销售额最多的省份列表和销售额最多的门店列表,但现在我需要计算:1)每个省的平均商店销售额,2)每个省最畅销的商店,然后3)它们之间的差异。数据如下所示: >>> store_sales sales store_num province 1396 ONTARIO 2
>>> store_sales
sales
store_num province
1396 ONTARIO 223705.21
1891 ONTARIO 71506.85
4823 MANITOBA 114692.70
4861 MANITOBA 257.69
6905 ONTARIO 19713.24
6973 ONTARIO 336392.25
7104 BRITISH COLUMBIA 32233.31
7125 BRITISH COLUMBIA 11873.71
7167 BRITISH COLUMBIA 87488.70
7175 BRITISH COLUMBIA 14096.53
7194 BRITISH COLUMBIA 6327.60
7238 ALBERTA 1958.75
7247 ALBERTA 6231.31
7269 ALBERTA 451.56
7296 ALBERTA 184410.04
7317 SASKATCHEWAN 43491.55
8142 ONTARIO 429871.74
8161 ONTARIO 6479.71
9604 ONTARIO 20823.49
9609 ONTARIO 148.02
9802 ALBERTA 54101.00
9807 ALBERTA 543703.84
我可以通过以下方式到达那里:
import pandas as pd
df = pd.read_csv('/path/to/sales.csv')
store_sales = df.groupby(['store_num', 'province']).agg({'sales': 'sum'})
我认为3)可能很简单,但对于1)我不确定如何将平均值应用于特定行的子集(我想这涉及到使用“groupby”),对于2)虽然我能够生成一个畅销商店的列表,但我不确定如何为每个省显示一个顶级商店(虽然有些东西告诉我它应该比看起来更简单。)对于(1),只需将列名传递给groupby
:
df.groupby("province).mean()
df.groupby("province).max()
对于(2),您只需将不同的函数应用于groupby
:
df.groupby("province).mean()
df.groupby("province).max()
对于(3),可以通过减去(1)和(2)轻松计算差值:
对于(1),只需将列名传递给groupby
:
df.groupby("province).mean()
df.groupby("province).max()
对于(2),您只需将不同的函数应用于groupby
:
df.groupby("province).mean()
df.groupby("province).max()
对于(3),可以通过减去(1)和(2)轻松计算差值: