使用Pandas计算各产品类别平均售价时的分组错误问题
解决按产品类别计算平均售价的问题
你的代码核心问题是搞反了分组逻辑:你用groupby(["Sale Price"])是按售价列分组,完全偏离了需求——我们需要按产品类别列分组,再对售价列计算均值。
修正后的代码
先确认你表格里产品类别对应的列名(比如常见的Product Category,如果你的列名不同,直接替换即可),然后修改average_price函数:
import pandas as pd def read_data(): df = pd.read_csv('sales_dataset.csv') # 可以加这行查看所有列名,避免列名写错 print("表格列名:", df.columns.tolist()) print(df) return df def average_price(): df = read_data() # 替换成你实际的产品类别列名,比如"Product Category" category_avg_price = df.groupby(["Product Category"])["Sale Price"].mean().reset_index() print("各产品类别平均售价:") print(category_avg_price) return category_avg_price average_price()
关键逻辑说明
groupby(["Product Category"]):按产品类别把数据分成不同的组,每个组对应一个类别下的所有销售记录["Sale Price"].mean():对每个分组里的售价列计算平均值,只针对数值类型的售价列运算,不会触碰字符串类型的类别列reset_index():把分组后的类别索引转换成普通列,让输出的表格格式更直观,方便查看
另外注意:你之前单独调用了read_data(),这会导致表格被读取两次,删掉那行单独的调用,让average_price()里调用一次即可。
内容的提问来源于stack exchange,提问作者Karyn
相关产品推荐
相关产品推荐

