import pandas as pd
        import numpy as np
        import matplotlib.pyplot as plt
        import seaborn as sns
        from datetime import datetime
        import warnings
        warnings.filterwarnings('ignore')
        
        # 设置中文字体
        plt.rcParams['font.sans-serif'] = ['SimHei']
        plt.rcParams['axes.unicode_minus'] = False
        
        print("✅ 环境设置完成")
        ✅ 环境设置完成
        # 生成模拟销售数据
        np.random.seed(42)
        
        # 创建日期范围
        dates = pd.date_range('2023-01-01', '2024-01-31', freq='D')
        
        # 生成销售数据
        data = {
            '订单ID': range(1, len(dates) + 1),
            '日期': dates,
            '产品类别': np.random.choice(['电子产品', '服装', '家居', '食品', '图书'], len(dates), p=[0.3, 0.25, 0.2, 0.15, 0.1]),
            '销售额': np.random.normal(500, 200, len(dates)).clip(50, 2000),
            '数量': np.random.randint(1, 20, len(dates)),
            '客户类型': np.random.choice(['新客户', '老客户', 'VIP客户'], len(dates), p=[0.4, 0.5, 0.1]),
            '地区': np.random.choice(['北京', '上海', '广州', '深圳', '杭州', '成都'], len(dates))
        }
        
        df = pd.DataFrame(data)
        df['月份'] = df['日期'].dt.to_period('M')
        df['季度'] = df['日期'].dt.quarter
        df['星期'] = df['日期'].dt.day_name()
        
        print("📊 数据概览:")
        print(f"数据形状: {df.shape}")
        print("\n前5行数据:")
        display(df.head())
        
        print("\n数据基本信息:")
        df.info()
        📊 数据概览:
数据形状: (396, 10)
前5行数据:
        |   | 订单ID |     日期     | 产品类别 |    销售额     | 数量 | 客户类型  | 地区 |   月份    | 季度 |    星期     |
| 0 |  1   | 2023-01-01 |  服装  | 456.463759 | 5  |  老客户  | 深圳 | 2023-01 | 1  |  Sunday   |
| 1 |  2   | 2023-01-02 |  图书  | 719.755370 | 5  |  新客户  | 北京 | 2023-01 | 1  |  Monday   |
| 2 |  3   | 2023-01-03 |  家居  | 665.083270 | 6  |  老客户  | 北京 | 2023-01 | 1  |  Tuesday  |
| 3 |  4   | 2023-01-04 |  家居  | 662.701927 | 9  |  新客户  | 成都 | 2023-01 | 1  | Wednesday |
| 4 | 5 | 2023-01-05 | 电子产品 | 761.095761 | 2 | VIP客户 | 杭州 | 2023-01 | 1 | Thursday | 
|---|
数据基本信息:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 396 entries, 0 to 395
Data columns (total 10 columns):
 #   Column  Non-Null Count  Dtype         
---  ------  --------------  -----         
 0   订单ID    396 non-null    int64         
 1   日期      396 non-null    datetime64[ns]
 2   产品类别    396 non-null    object        
 3   销售额     396 non-null    float64       
 4   数量      396 non-null    int32         
 5   客户类型    396 non-null    object        
 6   地区      396 non-null    object        
 7   月份      396 non-null    period[M]     
 8   季度      396 non-null    int64         
 9   星期      396 non-null    object        
dtypes: datetime64[ns](1), float64(1), int32(1), int64(2), object(4), period[M](1)
memory usage: 29.5+ KB
        # 生成模拟销售数据
        np.random.seed(42)
        
        # 创建日期范围
        dates = pd.date_range('2023-01-01', '2024-01-31', freq='D')
        
        # 生成销售数据
        data = {
            '订单ID': range(1, len(dates) + 1),
            '日期': dates,
            '产品类别': np.random.choice(['电子产品', '服装', '家居', '食品', '图书'], len(dates), p=[0.3, 0.25, 0.2, 0.15, 0.1]),
            '销售额': np.random.normal(500, 200, len(dates)).clip(50, 2000),
            '数量': np.random.randint(1, 20, len(dates)),
            '客户类型': np.random.choice(['新客户', '老客户', 'VIP客户'], len(dates), p=[0.4, 0.5, 0.1]),
            '地区': np.random.choice(['北京', '上海', '广州', '深圳', '杭州', '成都'], len(dates))
        }
        
        df = pd.DataFrame(data)
        df['月份'] = df['日期'].dt.to_period('M')
        df['季度'] = df['日期'].dt.quarter
        df['星期'] = df['日期'].dt.day_name()
        
        print("📊 数据概览:")
        print(f"数据形状: {df.shape}")
        print("\n前5行数据:")
        display(df.head())
        
        print("\n数据基本信息:")
        df.info()
        📊 数据概览:
数据形状: (396, 10)
前5行数据:
        |   | 订单ID |     日期     | 产品类别 |    销售额     | 数量 | 客户类型  | 地区 |   月份    | 季度 |    星期     |
| 0 |  1   | 2023-01-01 |  服装  | 456.463759 | 5  |  老客户  | 深圳 | 2023-01 | 1  |  Sunday   |
| 1 |  2   | 2023-01-02 |  图书  | 719.755370 | 5  |  新客户  | 北京 | 2023-01 | 1  |  Monday   |
| 2 |  3   | 2023-01-03 |  家居  | 665.083270 | 6  |  老客户  | 北京 | 2023-01 | 1  |  Tuesday  |
| 3 |  4   | 2023-01-04 |  家居  | 662.701927 | 9  |  新客户  | 成都 | 2023-01 | 1  | Wednesday |
| 4 | 5 | 2023-01-05 | 电子产品 | 761.095761 | 2 | VIP客户 | 杭州 | 2023-01 | 1 | Thursday | 
|---|
数据基本信息:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 396 entries, 0 to 395
Data columns (total 10 columns):
 #   Column  Non-Null Count  Dtype         
---  ------  --------------  -----         
 0   订单ID    396 non-null    int64         
 1   日期      396 non-null    datetime64[ns]
 2   产品类别    396 non-null    object        
 3   销售额     396 non-null    float64       
 4   数量      396 non-null    int32         
 5   客户类型    396 non-null    object        
 6   地区      396 non-null    object        
 7   月份      396 non-null    period[M]     
 8   季度      396 non-null    int64         
 9   星期      396 non-null    object        
dtypes: datetime64[ns](1), float64(1), int32(1), int64(2), object(4), period[M](1)
memory usage: 29.5+ KB
        print("📈 基础统计分析")
        print("=" * 50)
        
        # 总体统计
        print("总体销售统计:")
        print(f"总销售额: {df['销售额'].sum():,.2f}元")
        print(f"平均订单额: {df['销售额'].mean():.2f}元")
        print(f"总订单数: {df.shape[0]:,}笔")
        print(f"平均每单数量: {df['数量'].mean():.1f}件")
        
        print("\n月度销售趋势:")
        monthly_sales = df.groupby('月份')['销售额'].agg(['sum', 'count', 'mean']).round(2)
        display(monthly_sales)
        📈 基础统计分析
==================================================
总体销售统计:
总销售额: 196,690.15元
平均订单额: 496.69元
总订单数: 396笔
平均每单数量: 10.1件
月度销售趋势:
        |         |   sum    | count |  mean  |
|   月份    |          |       |        |
| 2023-01 | 16411.57 |  31   | 529.41 |
| 2023-02 | 13914.87 |  28   | 496.96 |
| 2023-03 | 16591.17 |  31   | 535.20 |
| 2023-04 | 15971.49 |  30   | 532.38 |
| 2023-05 | 13672.78 |  31   | 441.06 |
| 2023-06 | 14891.61 |  30   | 496.39 |
| 2023-07 | 14779.17 |  31   | 476.75 |
| 2023-08 | 13753.22 |  31   | 443.65 |
| 2023-09 | 14863.39 |  30   | 495.45 |
| 2023-10 | 16057.34 |  31   | 517.98 |
| 2023-11 | 15521.43 |  30   | 517.38 |
| 2023-12 | 14851.44 |  31   | 479.08 |
| 2024-01 | 15410.67 | 31 | 497.12 | 
|---|
# 创建可视化图表
        fig, axes = plt.subplots(2, 3, figsize=(18, 12))
        fig.suptitle('销售数据多维度分析', fontsize=16, fontweight='bold')
        
        # 1. 月度销售趋势
        monthly_trend = df.groupby(df['日期'].dt.to_period('M'))['销售额'].sum()
        monthly_trend.plot(kind='line', ax=axes[0,0], marker='o', color='#2E86AB')
        axes[0,0].set_title('月度销售趋势')
        axes[0,0].set_ylabel('销售额(元)')
        axes[0,0].tick_params(axis='x', rotation=45)
        
        # 2. 产品类别销售分布
        category_sales = df.groupby('产品类别')['销售额'].sum().sort_values(ascending=True)
        category_sales.plot(kind='barh', ax=axes[0,1], color='#A23B72')
        axes[0,1].set_title('各产品类别销售额')
        axes[0,1].set_xlabel('销售额(元)')
        
        # 3. 地区销售分布
        region_sales = df.groupby('地区')['销售额'].sum().sort_values(ascending=True)
        region_sales.plot(kind='barh', ax=axes[0,2], color='#F18F01')
        axes[0,2].set_title('各地区销售额')
        axes[0,2].set_xlabel('销售额(元)')
        
        # 4. 客户类型分析
        customer_sales = df.groupby('客户类型').agg({
            '销售额': ['sum', 'mean', 'count']
        }).round(2)
        customer_sales.columns = ['总销售额', '平均订单额', '订单数量']
        customer_sales['总销售额'].plot(kind='pie', ax=axes[1,0], autopct='%1.1f%%')
        axes[1,0].set_title('客户类型销售额分布')
        
        # 5. 星期销售分析
        weekday_sales = df.groupby('星期')['销售额'].mean()
        weekday_order = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
        weekday_sales = weekday_sales.reindex(weekday_order)
        weekday_sales.plot(kind='bar', ax=axes[1,1], color='#C73E1D')
        axes[1,1].set_title('各星期平均销售额')
        axes[1,1].set_ylabel('平均销售额(元)')
        axes[1,1].tick_params(axis='x', rotation=45)
        
        # 6. 销售额分布直方图
        axes[1,2].hist(df['销售额'], bins=30, alpha=0.7, color='#3F7CAC', edgecolor='black')
        axes[1,2].set_title('销售额分布')
        axes[1,2].set_xlabel('销售额(元)')
        axes[1,2].set_ylabel('频次')
        
        plt.tight_layout()
        plt.show()
        
        
# 客户价值分析
        print("👥 客户价值分析")
        print("=" * 50)
        
        customer_analysis = df.groupby('客户类型').agg({
            '销售额': ['sum', 'mean', 'count'],
            '数量': 'mean'
        }).round(2)
        
        customer_analysis.columns = ['总销售额', '平均订单额', '订单数量', '平均数量']
        display(customer_analysis)
        
        # RFM 分析(简化版)
        print("\n📊 RFM分析 (Recency, Frequency, Monetary)")
        print("=" * 50)
        
        # 假设最近日期为分析日期
        analysis_date = df['日期'].max()
        
        rfm = df.groupby('客户类型').agg({
            '日期': lambda x: (analysis_date - x.max()).days,  # 最近购买时间
            '订单ID': 'count',  # 购买频次
            '销售额': 'sum'     # 购买金额
        }).round(2)
        
        rfm.columns = ['最近购买天数', '购买频次', '总金额']
        display(rfm)
        👥 客户价值分析
==================================================
        |       |   总销售额    | 平均订单额  | 订单数量 | 平均数量  |
| 客户类型  |           |        |      |       |
| VIP客户 | 18691.46  | 519.21 |  36  | 10.78 |
|  新客户  | 73050.71  | 490.27 | 149  | 9.93  |
| 老客户 | 104947.98 | 497.38 | 211 | 10.10 | 
|---|
📊 RFM分析 (Recency, Frequency, Monetary)
==================================================
        |       | 最近购买天数 | 购买频次 |    总金额    |
| 客户类型  |        |      |           |
| VIP客户 |   2    |  36  | 18691.46  |
|  新客户  |   1    | 149  | 73050.71  |
| 老客户 | 0 | 211 | 104947.98 | 
|---|
# 简单的移动平均预测
        print("🔮 销售预测分析")
        print("=" * 50)
        
        # 计算月度数据
        monthly_data = df.groupby(df['日期'].dt.to_period('M'))['销售额'].sum().reset_index()
        monthly_data['日期'] = monthly_data['日期'].dt.to_timestamp()
        
        # 计算移动平均
        monthly_data['3月移动平均'] = monthly_data['销售额'].rolling(window=3).mean()
        monthly_data['预测'] = monthly_data['3月移动平均'].shift(1)
        
        print("月度销售数据与预测:")
        display(monthly_data.tail(6))
        
        # 绘制预测图
        plt.figure(figsize=(12, 6))
        plt.plot(monthly_data['日期'], monthly_data['销售额'], marker='o', label='实际销售额', linewidth=2)
        plt.plot(monthly_data['日期'], monthly_data['3月移动平均'], marker='s', label='3月移动平均', linestyle='--')
        plt.plot(monthly_data['日期'], monthly_data['预测'], marker='^', label='预测', linestyle=':')
        plt.title('销售趋势与预测')
        plt.ylabel('销售额(元)')
        plt.xlabel('日期')
        plt.legend()
        plt.grid(True, alpha=0.3)
        plt.xticks(rotation=45)
        plt.tight_layout()
        plt.show()
        🔮 销售预测分析
==================================================
月度销售数据与预测:
        |    |     日期     |     销售额      |    3月移动平均    |      预测      |
| 7  | 2023-08-01 | 13753.219574 | 14474.665291 | 14447.852675 |
| 8  | 2023-09-01 | 14863.387926 | 14465.258330 | 14474.665291 |
| 9  | 2023-10-01 | 16057.341556 | 14891.316352 | 14465.258330 |
| 10 | 2023-11-01 | 15521.429799 | 15480.719761 | 14891.316352 |
| 11 | 2023-12-01 | 14851.437307 | 15476.736221 | 15480.719761 |
| 12 | 2024-01-01 | 15410.666148 | 15261.177751 | 15476.736221 | 
|---|

        print("📋 销售分析总结报告")
        print("=" * 60)
        
        # 计算关键指标
        total_sales = df['销售额'].sum()
        avg_order_value = df['销售额'].mean()
        total_orders = df.shape[0]
        top_category = df.groupby('产品类别')['销售额'].sum().idxmax()
        top_region = df.groupby('地区')['销售额'].sum().idxmax()
        best_weekday = df.groupby('星期')['销售额'].mean().idxmax()
        
        print(f"""
        📈 销售绩效总结:
        • 总销售额: {total_sales:,.2f} 元
        • 总订单数: {total_orders:,} 笔
        • 平均订单价值: {avg_order_value:.2f} 元
        • 最畅销品类: {top_category}
        • 最佳销售地区: {top_region}
        • 销售最佳星期: {best_weekday}
        
        🎯 业务洞察:
        1. 销售最高的产品类别是 {top_category},建议加大该品类库存和营销投入
        2. {top_region} 地区表现最佳,可考虑在该地区开设新店或增加营销预算
        3. {best_weekday} 的客单价最高,适合在这天推出促销活动
        
        💡 建议行动:
        • 针对 {top_category} 品类进行深度营销
        • 在 {top_region} 地区扩大市场份额
        • 优化 {best_weekday} 的库存和人员安排
        • 加强客户关系管理,提高复购率
        """)
        📋 销售分析总结报告
============================================================
📈 销售绩效总结:
• 总销售额: 196,690.15 元
• 总订单数: 396 笔
• 平均订单价值: 496.69 元
• 最畅销品类: 电子产品
• 最佳销售地区: 杭州
• 销售最佳星期: Wednesday
🎯 业务洞察:
1. 销售最高的产品类别是 电子产品,建议加大该品类库存和营销投入
2. 杭州 地区表现最佳,可考虑在该地区开设新店或增加营销预算
3. Wednesday 的客单价最高,适合在这天推出促销活动
💡 建议行动:
• 针对 电子产品 品类进行深度营销
• 在 杭州 地区扩大市场份额
• 优化 Wednesday 的库存和人员安排
• 加强客户关系管理,提高复购率