[Tin tức] [Data] Làm Báo cáo & Phân tích Doanh số Bán hàng của Doanh nghiệp với Python, Pandas, và Matplotlib



DỮ LIỆU & CODE:
Github:
(Nếu bạn không biết tải file từ Github thì tải từ drive nhé:

CHƯƠNG TRÌNH TRẢ LỜI CÁC BÀI TOÁN THỰC TẾ CỦA MỘT DOANH NGHIỆP:
– Tháng nào có doanh số tốt nhất? Doanh số tháng đó là bao nhiêu?
– Thành phố nào có doanh số cao nhất?
– Doanh nghiệp cần chiếu quảng cáo vào khung thời gian nào để tăng khả năng mua hàng của khách hàng?
– Những sản phẩm nào thường được bán cùng nhau?
– Sản phẩm nào được bán nhiều nhất? Giả thiết của bạn về lý do sản phẩm này được bán nhiều nhất là gì?

CÓ THỂ BẠN QUAN TÂM:
Lập trình Bot kéo Dữ liệu Người dùng Linkedin (Python & BeautifulSoup):
Lập trình Bot tự động Kết nối & Gửi tin nhắn trên Linkedin (Python & Selenium):
Lập trình Bot Đổi tên & Sắp xếp Files trong máy tính (Python & module OS):

GROUP HỎI ĐÁP:

Group hỏi đáp Python ứng dụng:
Group hỏi đáp Python cơ bản:

TIMESTAMP:
0:17 Giới thiệu Vấn đề
1:14 Demo Chương trình
2:27 Giới thiệu Dữ liệu và Code Editor
3:43 Lên kế hoạch cho chương trình, chia nhỏ vấn đề
4:00 Giới thiệu sự khác biệt giữa Báo cáo dữ liệu và Phân tích dữ liệu
4:36 Task 1: Thiết lập môi trường và Load dữ liệu
4:46 Cài đặt và Import pandas
5:42 Giới thiệu về Dataframe và Series trong pandas
5:59 Tải dữ liệu lên chương trình. Xác định đường dẫn tương đối (relative path) và đường dẫn tuyệt đối (absolute path) đến tập tin
9:03 Task 2: Clean and Preprocess data
9:09 Task 2.1: Tải 12 files dữ liệu lên chương trình. Gộp 12 dataframes lại làm 1
13:11 Task 2.2: Thêm cột “Month” cho dataframes
16:31 Task 2.3: Loại bỏ giá trị “nan” và giá trị “Or”
17:55 Task 3: Reporting & Data Analysis
17:55 Task 3.1: Tháng nào có doanh số tốt nhất? Doanh số tháng đó là bao nhiêu?
22:30 Task 3.2: Thành phố nào có doanh số cao nhất?
27:39 Task 3.3: Doanh nghiệp cần chiếu quảng cáo vào khung thời gian nào để tăng khả năng mua hàng của khách hàng?
31:14 Task 3.4: Những sản phẩm nào thường được bán cùng nhau?
25:18 Task 3.5: Sản phẩm nào được bán nhiều nhất? Giả thiết của bạn về lý do sản phẩm này được bán nhiều nhất là gì?
38:07 Dọn dẹp chương trình và Thêm câu lệnh input ở đầu chương trình để truyền dữ liệu cho lần sử dụng sau

Inspired by:

If you are looking to future proof your career, let’s get your hands on our Real-world Coding Problems to start building up your Portfolio. In this series of tutorials, you will get a chance to “live the life” of an industry practitioner to solve real-world problems using Python.

27 bình luận về “[Tin tức] [Data] Làm Báo cáo & Phân tích Doanh số Bán hàng của Doanh nghiệp với Python, Pandas, và Matplotlib”

  1. Hello các bạn, có một số chia sẻ thêm về Câu 2 và Câu 4 từ các bạn trong cộng đồng, mình pin lên đây để cùng học hỏi nhé:
    ————————————————–
    CÂU 4: Cách tiếp cận dùng value_counts của mình là không chính xác vì value_counts chỉ đếm các giá trị duy nhất nên sẽ bỏ sót những order mua từ 2 sản phẩm trở lên.
    Cách tiếp cận này trên Stackoverflow dùng itertools https://stackoverflow.com/questions/52195887/counting-unique-pairs-of-numbers-into-a-python-dictionary thì chính xác hơn. Các bạn lặp qua df['All Products'], cho sản phẩm của từng đơn hàng vào một list, và dùng itertools cho các list đó. Code như bên dưới bạn nhé:

    from itertools import combinations
    from collections import Counter

    count = Counter()

    for products in df_dup['All Products']:
    product_list = products.split(",")
    count.update(Counter(combinations(product_list, 2)))

    print(count)

    ————————————————–
    CÂU 4: Nếu bạn muốn lấy giá trị ra để vẽ có thể dùng hàm .most_common() lên giá trị count

    for key, value in count.most_common(10):
    print(key, value)

    key sẽ trả về cho tên của hàng, còn value là số lượng

    ————————————————–
    CÂU 2: (Chia sẻ từ bạn @Bao Thai Vuong)
    Thay vì phải dùng vòng loop thì chỉ cần thay đòng plt.bar(x = sorted(cities), height = sales_value_city) là sẽ khớp giá trị sale với giá trị city vì khi dùng groupby cho cột City để tính giá trị sales của từng thành phố thì kết quả trả về theo thứ tự bảng chữ cái từ A-Z, nên dùng sorted cho tên thành phố cũng sẽ trả về giá trị theo thứ tự A-Z, tức là nó sẽ khớp với giá trị trả về trong groupby.

    ————————————————–
    CÂU 1:
    Nếu bạn muốn in ra luôn tháng có doanh thu lớn nhất thì dùng hàm max() lấy ra giá trị tháng lớn nhất xong lặp qua series để lấy tháng của giá trị lớn nhất ra nhé:

    max_value = sales_value.max()
    for month, sales in sales_value.items():
    if sales == max_value:
    print(month, sales)

    Trả lời
  2. Phần Task 2 mình cố gắng viết y chang như bạn nhưng nó báo lỗi như sau

    File "C:UsershomeAppDataLocalPackagesPythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0LocalCachelocal-packagesPython39site-packagespandascoreapply.py", line 1082, in apply

    return self.apply_standard()

    File "C:UsershomeAppDataLocalPackagesPythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0LocalCachelocal-packagesPython39site-packagespandascoreapply.py", line 1137, in apply_standard

    mapped = lib.map_infer(

    File "pandas_libslib.pyx", line 2870, in pandas._libs.lib.map_infer

    File "c:PyThonSecond.py", line 31, in <lambda>

    address_to_city = lambda address: address.split(',')[1]

    AttributeError: 'float' object has no attribute 'split'

    phần code thì mình viết không gì khác bạn
    import pandas as pd

    import os as os

    import matplotlib.pyplot as plt

    folder ='C:Data'

    filename ='Sales2019_1.csv'

    path=folder+filename

    listfile = os.listdir(folder)

    frames =[]

    for file in listfile :

    if file.endswith('.csv'):

    filepath = folder+ '\'+ file

    df1= pd.read_csv(filepath)

    frames.append(df1)

    result = pd.concat(frames)

    df = result

    df.to_csv(folder +"Sales2019.csv",index=False)

    #def getCity(address: str):

    # return address.split(',')[1]

    #print(df['Purchase Address'])

    #print(df['Purchase Address'].dtype)

    #df =df[df['Purchase Address'].dtype!=str]

    address_to_city = lambda address: address.split(',')[1]

    df['City'] = df['Purchase Address'].apply(address_to_city)

    print(df.head())

    Cái lỗi như trên có phải mình dùng Visual Studio code không nhỉ? Cảm ơn bạn nhiều

    Trả lời
  3. Mình viết như sau về getCity nhưng nó không chạy. Sửa làm sao ạ:
    def getCity(address: str):

    return address.split(',')[1]

    df['City']= getCity(df['Purchase Address'])

    nó báo Error như sau:
    return object.__getattribute__(self, name)

    AttributeError: 'Series' object has no attribute 'split'

    Trả lời

Viết một bình luận

bahis10bets.com betvole1.com casinomaxi-giris.com interbahis-giris1.com klasbahis1.com mobilbahisguncelgiris1.com piabetgiris1.com tipobettgiris.com tumbetgiris1.com betboro 1xbet giriş
bahis10bets.com betvole1.com casinomaxi-giris.com interbahis-giris1.com klasbahis1.com mobilbahisguncelgiris1.com piabetgiris1.com tipobettgiris.com tumbetgiris1.com betboro 1xbet giriş
antalya bayan escort
antalya bayan escort
antalya bayan escort