Thursday, September 22, 2022

Cách phân tích số liệu bán hàng sử dụng Python

Khi đánh giá tình hình kinh doanh thì thông thường sẽ dựa vào số liệu tháng (month to date) và số liệu từ đầu năm tới tháng (year to date). Các sản phẩm còn được phân chia vào các segments.

Ví dụ theo số liệu bán hàng tháng 2 (month to date) tổng doanh số tháng 2 và tháng 2 (year to date) tổng doanh số từ đầu năm tới tháng 2. 

Với công cụ matplotlib thì bạn có thể thể hiện doanh số bán hàng của các sản phẩm trên cùng một biểu đồ. Nhìn qua sẽ biết sản phẩm nào đang tăng trưởng, sản phẩm nào bán chậm và thêm những sản phẩm phát triển mới. 


Trước hết mình sử dụng các thư viện dưới đây

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Đọc các csv file, so sánh doanh số bán hàng tháng 4 năm 2020 và tháng 4 năm 2019
apr_2019 = pd.read_csv(r'D:\Sales_Data/Sales_April_2019.csv')
apr_2020 = pd.read_csv(r'D:\Sales_Data/Sales_April_2020.csv')

# Thông thường nếu file xuất từ hệ thống bán hàng, sẽ hiếm khi có số liệu thiếu ở các hàng hay cột, tuy nhiên vẫn có tình huống xảy tới. Khi đó bạn sử dụng

apr_2019 = apr_2019.dropna(how='any')
apr_2020 = apr_2020.dropna(how='any')

# Tiếp theo là chuyển kiểu dữ liệu từ các cột để tính toán, ở đây có 2 cột là Quantity (Số lượng) và Price giá bán. 

apr_2019['Quantity Ordered'] = pd.to_numeric(apr_2019['Quantity'], errors='coerce')
apr_2020['Price Each'] = pd.to_numeric(apr_2020['Price'], errors='coerce')

# Giờ mình tiến hành groupby theo sản phẩm theo số lượng bán được (Quantity).
apr_2019_group = apr_2019_group.groupby('Product')
apr_2019_quatity = apr_2019_group.sum()['Quantity']
# Tính luôn tổng số lượng các sản phẩm.
apr_2019_order = apr_2019['Quantity Ordered'].sum()

# Làm tương tự cho tháng 4/2020
apr_2020_group = apr_2020_group.groupby('Product')
apr_2020_quatity = apr_2020_group.sum()['Quantity']
# Tính luôn tổng số lượng các sản phẩm.
apr_2020_order = apr_2020['Quantity Ordered'].sum()

# Và so sanh peformance cho từng sản phẩm. 

width = 0.8
# trục x là tên sản phẩm
indices = [pair for pair, value in apr_2019_quatity]

plt.bar(indices, apr_2019_quatity, width=width, 
        color='b', label='2019 performance {}'.format(apr_2019_order))

plt.bar([i+0.25*width for i in np.arange(len( apr_2019_quatity))], apr_2020_quatity, 
        width=0.75*width, color='r', alpha=0.5, label='2020 performance {}'.format(apr_2020_order))
# Dùng rotation để chuyển chữ ngang thành dọc.
plt.xticks(np.arange(len(apr_2019_quatity))+width/2., 
           indices, rotation='vertical', size=8)

plt.legend()

plt.show()


No comments:

Post a Comment

Bạn cần thêm thông tin hay có câu hỏi vui lòng comment