“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ẽ:
- Biết cách đọc file dữ liệu phổ biến (CSV, Excel, JSON, TXT).
- Biết cách ghi dữ liệu trở lại file sau khi xử lý.
-
Hiểu về thư viện
pandas– công cụ mạnh nhất cho phân tích dữ liệu trong Python. - Làm được mini project: thống kê doanh thu từ file CSV.
- Nắm được cách xử lý lỗi và encoding khi đọc file thực tế.
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
pandasdù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.
0 Nhận xét