Pandas按州Group by聚合统计销量与销售额结果一致问题咨询
问题原因
你两类统计的代码逻辑本质都是统计每个州的订单条目数(即销售商品件数),所以结果完全一致:
- 按商品件数统计的
df["State"].value_counts()逻辑正确,统计每个州的销售记录行数,对应销售商品总件数 - 你写的按销售额统计代码误用了
count()聚合函数:df.groupby("State", as_index=False)["Sales"].count()的作用是统计每个州Sales列的非空值数量,本质还是统计行数,和value_counts的计算逻辑完全一致,并没有对销售金额做求和计算。另外你代码里的df.groupby(["Customer ID","State"])["Sales"].sum()是按客户+州维度统计单个客户的消费总额,和你需要的州维度总销售额无关,可以直接删除。
修正后代码
import pandas as pd # 加载数据 df = pd.read_csv('https://raw.githubusercontent.com/michalis0/DataMining_and_MachineLearning/master/data/sales.csv') # 1. 按销售商品件数统计Top50州 count_rank = df["State"].value_counts().head(50) print("按商品件数销量Top50州:") print(count_rank) # 2. 按销售总金额统计Top50州,用sum()做求和聚合 amount_rank = df.groupby("State", as_index=False)["Sales"].sum() amount_rank.sort_values(by="Sales", ascending=False, inplace=True) print("\n按销售金额Top50州:") print(amount_rank.head(50))
内容的提问来源于stack exchange,提问作者cped
相关产品推荐
相关产品推荐

