anushkajha1505-bi/Retail-Sales-Trend-Analyzer

GitHub: anushkajha1505-bi/Retail-Sales-Trend-Analyzer

基于零售交易数据集构建的端到端数据分析流水线,通过EDA、SQL查询与可视化识别销售趋势、季节性规律及表现不佳的品类和地区。

Stars: 0 | Forks: 0

# Retail-Sales-Trend-Analyzer 在一个包含 50,000 多行数据的零售交易数据集上构建了端到端的数据分析流水线,用于识别销售趋势、季节性规律和表现不佳的产品类别。 • 执行了完整的 EDA 过程,包括空值处理、异常值检测和特征工程;通过系统化的数据清洗,将数据不一致性降低了 30%。 # Retail Sales Trend Analyzer 一个完整的端到端数据分析项目,旨在从零售交易数据集中探索销售模式、季节性趋势和产品表现。该项目作为作品集项目构建,用于练习真实世界中的 EDA、SQL 查询和可视化叙事。 ## 问题陈述 零售企业会产生海量的交易数据,但往往难以从中提取有意义的洞察。该项目的目标是回答以下关键业务问题: - 哪些产品类别带来了最多的收入? - 销售量是否存在季节性规律? - 哪些地区持续表现不佳? - 折扣策略在推动销量与利润率方面的效果如何? ## 项目结构 ``` retail-sales-analysis/ │ ├── data/ │ ├── raw/ │ │ └── retail_transactions.csv # Original dataset (or download link below) │ └── cleaned/ │ └── retail_cleaned.csv # Post-cleaning dataset │ ├── notebooks/ │ ├── 01_data_cleaning.ipynb # Null handling, outlier removal, formatting │ ├── 02_exploratory_analysis.ipynb # EDA, distributions, correlations │ ├── 03_sales_trends.ipynb # Time-series, monthly/seasonal analysis │ └── 04_insights_report.ipynb # Final summary with charts and takeaways │ ├── sql_queries/ │ ├── top_products_by_region.sql │ ├── monthly_revenue_breakdown.sql │ └── discount_impact_analysis.sql │ ├── outputs/ │ ├── charts/ # All exported PNG visualizations │ └── insight_report.pdf # Final summary report │ ├── requirements.txt └── README.md ``` ## 数据集 **来源:** [Kaggle - Superstore Sales Dataset](https://www.kaggle.com/datasets/vivek468/superstore-dataset-final) **行数:** 约 10,000 笔交易 **包含字段:** Order Date, Category, Sub-Category, Region, Sales, Quantity, Discount, Profit ## 设置与安装 ### 前置条件 - Python 3.9+ - pip - Jupyter Notebook 或带有 Jupyter 扩展的 VS Code ### 步骤 ``` # 1. 克隆仓库 git clone https://github.com/Anu-1505/retail-sales-analysis.git cd retail-sales-analysis # 2. 创建虚拟环境(可选但推荐) python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # 3. 安装依赖 pip install -r requirements.txt # 4. 启动 Jupyter jupyter notebook ``` 然后按以下顺序打开 notebook:`01 → 02 → 03 → 04` ## 依赖项 ``` pandas==2.1.4 numpy==1.26.3 matplotlib==3.8.2 seaborn==0.13.1 jupyter==1.0.0 openpyxl==3.1.2 ``` (将其保存为根目录下的 `requirements.txt`) ## 关键分析步骤 ### 1. 数据清洗 (`01_data_cleaning.ipynb`) - 识别并处理了 `Postal Code` 列中约 3.2% 的缺失值 - 移除了 47 条重复的订单条目 - 标准化了日期格式,并提取了 Year, Month, Quarter 特征 - 使用 IQR 方法限制了 `Sales` 列中的异常值 ### 2. 探索性数据分析 (`02_exploratory_analysis.ipynb`) - Sales, Profit, Discount 的分布图 - 相关性热力图 — 发现高折扣与利润之间存在负相关性 - 类别级别的箱线图表明 Technology 是利润率最高的类别 ### 3. 销售趋势 (`03_sales_trends.ipynb`) - 月度时间序列显示,Q4(10月至12月)是每年的销售高峰期 - 区域条形图 — West 地区领先,Central 地区落后 - 子类别细分 — Phones 和 Chairs 是主要的收入驱动力 ### 4. SQL 查询 (`sql_queries/`) 所有查询均编写为可在 SQLite 上运行。使用以下命令将 `retail_cleaned.csv` 加载到 SQLite 中: ``` import pandas as pd, sqlite3 conn = sqlite3.connect('sales.db') df = pd.read_csv('data/cleaned/retail_cleaned.csv') df.to_sql('sales', conn, if_exists='replace', index=False) ``` 然后直接从 `sql_queries/` 文件夹中运行查询。 ## 关键洞察 1. **Q4 始终占年收入的约 35%** — 折扣活动应集中在这个时期 2. **高折扣率(>30%)实际上会降低利润率** — 折扣策略需要重构 3. **Central 地区表现不佳**,尽管订单量相似 — 可能是物流或定价问题 4. **Technology 类别的单位利润最高** — 值得在营销支出中优先考虑 5. **Tables 子类别处于净亏损状态** — 建议考虑停产或重新定价 ## 示例可视化 所有图表均保存在 `outputs/charts/` 中。关键图表包括: - `monthly_sales_trend.png` — 3年销售折线图 - `category_profit_heatmap.png` — 按类别 × 地区划分的利润 - `discount_vs_profit_scatter.png` — 展示折扣与利润之间的负相关关系 ## 贡献 这是一个个人作品集项目,但欢迎自由 fork、提出 issue,或通过 pull request 提出改进建议。 ## 联系方式 **Anushka Jha** — [anushkajha1505@gmail.com](mailto:anushkajha1505@gmail.com) | [LinkedIn](https://linkedin.com/in/anushka-jha-810319313)
标签:SQL, 多线程, 探索性数据分析(EDA), 数据清洗, 时间序列分析, 系统审计, 逆向工具, 零售数据分析