Case Study: Phân tích 10k đơn hàng bán lẻ với Python Pandas

 

1. Chuẩn bị dữ liệu

  • File dữ liệu: orders.csv (10.000 dòng, mỗi dòng = 1 đơn hàng)
  • Các cột ví dụ:
    • order_id – mã đơn hàng
    • order_date – ngày đặt hàng
    • customer_id – mã khách hàng
    • product_id, product_name, category – sản phẩm
    • quantity, unit_price, discount – chi tiết đơn hàng
    • payment_method – COD, credit, e-wallet
    • city, region – thông tin địa lý
    • status – delivered / returned / cancelled
Dữ liệu thật có thể export từ: Shopify, WooCommerce, Shopee/Lazada, ERP nội bộ.

2. Mục tiêu phân tích

  • Doanh thu & lợi nhuận: Tổng doanh thu theo ngày/tháng/quý, biên lợi nhuận theo danh mục.
  • Khách hàng: RFM Analysis (Recency, Frequency, Monetary).
  • Sản phẩm: Top sản phẩm bán chạy, sản phẩm mang lại lợi nhuận cao nhất.
  • Địa lý: Doanh thu theo khu vực/thành phố.
  • Kênh thanh toán: Tỷ lệ COD vs e-wallet, ảnh hưởng tới tỷ lệ huỷ/trả.
  • Tình trạng đơn hàng: Tỷ lệ thành công vs huỷ/hoàn.

    3. Các bước phân tích với Pandas

    3.1 Đọc dữ liệu

    import pandas as pd orders = pd.read_csv("orders.csv", parse_dates=["order_date"]) orders.head()

    3.2 Thêm cột tính toán

    orders["revenue"] = orders["quantity"] * orders["unit_price"] * (1 - orders["discount"])

    3.3 Doanh thu theo tháng

    orders.groupby(orders["order_date"].dt.to_period("M"))["revenue"].sum()

    3.4 Top sản phẩm

    orders.groupby("product_name")["revenue"].sum().sort_values(ascending=False).head(10)

    3.5 RFM Analysis

    snapshot_date = orders["order_date"].max() + pd.Timedelta(days=1) rfm = orders.groupby("customer_id").agg({ "order_date": lambda x: (snapshot_date - x.max()).days, "order_id": "count", "revenue": "sum" }).rename(columns={ "order_date": "Recency", "order_id": "Frequency", "revenue": "Monetary" })

    3.6 Doanh thu theo khu vực

    orders.groupby("city")["revenue"].sum().sort_values(ascending=False).head(5)

    3.7 Payment method analysis

    orders.groupby("payment_method")["revenue"].sum()

    4. Kết quả trực quan hóa (Matplotlib/Seaborn)

    • Line chart: Doanh thu theo tháng
    • Bar chart: Top 10 sản phẩm
    • Heatmap: RFM segmentation
    • Pie chart: Payment methods

      5. Bài học kinh doanh

      • Xác định khách hàng VIP (RFM) → ưu tiên chăm sóc.
      • Sản phẩm mang lợi nhuận cao nhưng ít bán → chiến lược khuyến mãi.
      • Thành phố nào chiếm tỷ trọng doanh thu lớn nhất → mở rộng logistics.
      • COD có tỷ lệ huỷ cao → đẩy mạnh e-wallet discount.

        Đăng nhận xét

        0 Nhận xét