Phần 2 – Đọc & ghi file dữ liệu

 

“Một Data Analyst giỏi không chỉ biết code, mà còn biết nói chuyện với dữ liệu.”
Rabit Learn Data

Mục tiêu bài học

Sau khi hoàn thành phần này, bạn sẽ:

1. Tổng quan về làm việc với file dữ liệu

Trong thực tế, dữ liệu đến từ nhiều nguồn:

  • Báo cáo Excel từ kế toán.
  • File CSV export từ hệ thống ERP.
  • File JSON từ API.
  • Log text từ server.

    Python hỗ trợ bạn đọc, ghi, làm sạch, và kết hợp các file này một cách linh hoạt.

    Thư viện “vàng” cho mọi việc đó chính là pandas.

    2. Cài đặt và import thư viện

    Mở terminal và chạy:

    pip install pandas openpyxl
    

    Rồi import vào code:

    import pandas as pd
    

    pd là alias ngắn của pandas – tiêu chuẩn chung toàn thế giới.

    3. Đọc file CSV

    File CSV (Comma Separated Values) là định dạng phổ biến nhất – gần như mọi nền tảng đều có “Export to CSV”.

    Ví dụ:

    import pandas as pd
    
    df = pd.read_csv("sales.csv")
    print(df.head())
    

    Hàm read_csv() sẽ:

    • Tự động nhận diện header.
    • Dùng dấu phẩy , làm phân cách.
    • Trả về DataFrame (bảng dữ liệu dạng Excel trong Python).

      Một vài tham số quan trọng:

      df = pd.read_csv("sales.csv", sep=",", encoding="utf-8", na_values=["NA", "null"])
      

      Tham số Ý nghĩa
      sep Dấu phân cách cột (; hoặc \t với file TSV).
      encoding Kiểu mã hóa. Ở VN thường cần "utf-8-sig" hoặc "cp1258".
      na_values Chuỗi được xem như giá trị rỗng.

      4. Đọc file Excel

      Nếu bạn đang làm trong doanh nghiệp VN – Excel là “quốc ngữ”.

      Ví dụ:

      df = pd.read_excel("doanh_thu.xlsx", sheet_name="Thang1")
      print(df.head())
      
      • Mặc định pandas dùng openpyxl để đọc.
      • Có thể chọn sheet, range, hoặc đọc nhiều sheet cùng lúc:

        dfs = pd.read_excel("bao_cao.xlsx", sheet_name=None)
        print(dfs.keys())  # liệt kê tên sheet
        

        5. Đọc file JSON và TXT

        JSON (định dạng API trả về):

        df = pd.read_json("data.json")
        

        TXT (phân cách bằng tab):

        df = pd.read_csv("data.txt", sep="\t")
        

        Khi file bị lỗi format, dùng error_bad_lines=False để bỏ qua dòng sai.

        6. Xem và khám phá dữ liệu

        Khi đã đọc file thành DataFrame → bạn có thể:

        df.head()       # 5 dòng đầu
        df.tail()       # 5 dòng cuối
        df.shape        # (số_dòng, số_cột)
        df.columns      # danh sách cột
        df.info()       # thông tin kiểu dữ liệu
        df.describe()   # thống kê cơ bản
        
        Mẹo: dùng df.sample(10) để xem ngẫu nhiên 10 dòng – rất hữu ích khi file quá lớn.

        7. Ghi file CSV và Excel

        Sau khi xử lý, bạn có thể ghi ngược lại file.

        Ghi CSV:

        df.to_csv("output.csv", index=False, encoding="utf-8-sig")
        

        Ghi Excel:

        df.to_excel("output.xlsx", index=False)
        

        index=False để không ghi cột STT mặc định.

        8. Kết hợp và nối nhiều file

        Trong doanh nghiệp, bạn thường có hàng chục file (VD: doanh thu tháng 1, 2, 3…).

        Nối nhiều file CSV trong một folder:

        import os
        import pandas as pd
        
        files = [f for f in os.listdir("data") if f.endswith(".csv")]
        
        dfs = []
        for file in files:
            df = pd.read_csv(os.path.join("data", file))
            dfs.append(df)
        
        combined = pd.concat(dfs, ignore_index=True)
        combined.to_csv("tong_hop.csv", index=False)
        

        Chỉ với vài dòng code, bạn đã gộp toàn bộ báo cáo tháng thành một file chuẩn dữ liệu.

        9. Xử lý lỗi encoding & dữ liệu thực tế

        Lỗi Nguyên nhân Cách khắc phục
        UnicodeDecodeError File không phải UTF-8 Dùng encoding='utf-8-sig' hoặc 'cp1258'
        ParserError File bị lỗi format Dùng error_bad_lines=False để bỏ qua
        FileNotFoundError Sai đường dẫn Kiểm tra path hoặc sử dụng os.path.abspath()

        10. Mini Project: Thống kê doanh thu bán hàng

        Yêu cầu

        Cho file sales.csv gồm các cột:

        order_id date product quantity price
        1 2025-10-01 A 3 50000
        2 2025-10-02 B 2 70000
        3 2025-10-02 A 1 50000

        Tính tổng doanh thu theo sản phẩm và ghi kết quả ra Excel.

        Code mẫu

        import pandas as pd
        
        # Đọc file dữ liệu
        df = pd.read_csv("sales.csv")
        
        # Tính doanh thu từng dòng
        df["revenue"] = df["quantity"] * df["price"]
        
        # Tổng doanh thu theo sản phẩm
        report = df.groupby("product")["revenue"].sum().reset_index()
        
        # Ghi ra file Excel
        report.to_excel("revenue_report.xlsx", index=False)
        
        print("Báo cáo doanh thu đã được lưu thành công!")
        

        Kết quả revenue_report.xlsx:

        product revenue
        A 200000
        B 140000

        11. Bước nâng cao – Tự động hoá đọc ghi file

        Bạn có thể đóng gói toàn bộ thành hàm:

        def read_and_save(input_path, output_path):
            df = pd.read_csv(input_path)
            df["revenue"] = df["quantity"] * df["price"]
            report = df.groupby("product")["revenue"].sum().reset_index()
            report.to_excel(output_path, index=False)
            print(f"Đã lưu báo cáo tại: {output_path}")
        
        read_and_save("data/sales.csv", "output/report.xlsx")
        

        12. Mẹo chuyên nghiệp với pandas

        Tình huống Hàm hữu ích
        Đọc file lớn chunksize=100000
        Chỉ đọc một vài cột usecols=["col1","col2"]
        Đổi tên cột df.rename(columns={"old":"new"})
        Lọc dòng trống df.dropna()
        Xuất nhiều sheet Excel with pd.ExcelWriter("file.xlsx"):

        13. Bài tập thực hành

        Bài Yêu cầu Gợi ý
        1 Đọc file CSV và in 5 dòng đầu pd.read_csv()
        2 Đọc Excel với nhiều sheet → ghép lại pd.concat()
        3 Thêm cột “Doanh thu” = price × quantity df["new"] = ...
        4 Tính tổng doanh thu theo ngày groupby("date")
        5 Lưu ra Excel với tên “report_thang10.xlsx” to_excel()

        14. Tổng kết

        Trong bài này, bạn đã học được:

        • Đọc và ghi file CSV, Excel, JSON.
        • Làm quen với pandas – thư viện phân tích dữ liệu chuẩn nhất.
        • Kết hợp nhiều file, xử lý lỗi thực tế.
        • Thực hành qua mini project tính doanh thu.

        📦 Download File Python (.zip)

        Đăng nhận xét

        0 Nhận xét