python import pandas as pd import numpy as np from datetime import datetime # ---------- 1. 模拟原始销售数据(不用改,直接用) ---------- np.random.seed(42)# 固定随机种子,保证每次生成的数据一致 dates = pd.date_range('2024-01-01', periods=200, freq='D')# 生成200天的日期 products = ['产品A', '产品B', '产品C', '产品D']# 产品列表 categories = ['电子产品', '家居用品', '服装', '食品']# 产品类别 # 生成500行销售数据,包含日期、产品名称、类别、销量、单价 data = { '日期': np.random.choice(dates, 500), '产品名称': np.random.choice(products, 500), '产品类别': np.random.choice(categories, 500), '销量': np.random.randint(1, 100, 500),# 销量1-99随机 '单价': np.random.uniform(10, 500, 500).round(2)# 单价10-500随机,保留2位小数 } df_sales = pd.DataFrame(data)# 把数据转换成pandas表格(DataFrame) df_sales['销售额'] = (df_sales['销量'] * df_sales['单价']).round(2)# 计算销售额,保留2位小数 # ---------- 2. 数据汇总分析(核心步骤,自动计算) ---------- # 2.1 按产品类别汇总(比如“电子产品”整体销量/销售额) category_summary = df_sales.groupby('产品类别').agg( 总销量=('销量', 'sum'), 总销售额=('销售额', 'sum'), 平均单价=('单价', 'mean'), 订单数=('产品名称', 'count') ).round(2).reset_index()# 保留2位小数,把“产品类别”从分组键转为普通列 # 2.2 按产品名称汇总(细化到单个产品,含所属类别) product_summary = df_sales.groupby(['产品名称', '产品类别']).agg( 总销量=('销量', 'sum'), 总销售额=('销售额', 'sum'), 平均单价=('单价', 'mean'), 订单数=('产品名称', 'count') ).round(2).reset_index() # 2.3 月度销售趋势(按月份汇总,看每月变化) df_sales['月份'] = df_sales['日期'].dt.to_period('M').astype(str)# 把日期转换成“2024-01”这样的月份格式 monthly_trend = df_sales.groupby('月份').agg( 总销售额=('销售额', 'sum'), 总销量=('销量', 'sum') ).round(2).reset_index() # ---------- 3. 导出到Excel(自动生成多个工作表) ---------- output_file = '产品分析报告.xlsx'# 导出的Excel文件名 with pd.ExcelWriter(output_file, engine='openpyxl') as writer: # 分别写入4个工作表 category_summary.to_excel(writer, sheet_name='按类别汇总', index=False) product_summary.to_excel(writer, sheet_name='按产品汇总', index=False) monthly_trend.to_excel(writer, sheet_name='月度趋势', index=False) df_sales.to_excel(writer, sheet_name='原始销售数据', index=False) print(f"报告已生成:{output_file}")# 运行完成后,提示文件已生成 |