Vnstock Logo
Thành thạo pandas: Chuyển đổi tư duy Excel sang Python trong phân tích tài chính

Thành thạo pandas: Chuyển đổi tư duy Excel sang Python trong phân tích tài chính

Mục lục

Từ Excel sang Python: Chuyển đổi tư duy cho người làm tài chính

Giới thiệu

Tư duy từ Exel sang Python
Trong bối cảnh dữ liệu tài chính ngày càng nhiều, khả năng xử lý nhanh chóng là lợi thế cạnh tranh quan trọng. Đối với nhiều chuyên gia tài chính, Excel vẫn là công cụ phân tích quen thuộc hàng ngày. Tuy nhiên, để tự động hóa và xử lý quy mô lớn hơn, Python là một lựa chọn tối ưu. Hành trình chuyển từ thao tác ô tính sang viết các dòng lệnh giúp thay đổi cách chúng ta tiếp cận và xử lý dữ liệu.

Rào cản lớn nhất khi chuyển đổi từ Excel sang Python chính là thay đổi tư duy: từ việc định vị dữ liệu theo từng ô cụ thể (địa chỉ vật lý) sang quản lý dữ liệu theo cấu trúc bảng (dữ liệu trừu tượng) trên Python. Tôi cũng từng trải qua cảm giác thiếu trực quan khi mới bắt đầu tiếp cận. Nhưng khi thích nghi với lối tư duy của Python – kết hợp với sử dụng Jupyter Notebook1 – quy trình xử lý dữ liệu trở nên mạch lạc và tập trung hơn.


Hai triết lý xử lý dữ liệu khác nhau

Excel: “Mọi dữ liệu đều cần ‘địa chỉ’ vật lý”

  • Giá trị trung gian phải nằm trong ô, cột hoặc sheet cụ thể.

  • Quy trình phức tạp thường phân tán trên nhiều worksheet, dễ dẫn đến nhầm lẫn địa chỉ ô khi thao tác.

  • Dễ phát sinh lỗi khi sửa đổi công thức do dữ liệu gốc và các phép toán logic nằm chung trên một giao diện.

Python: “Dữ liệu tồn tại dưới dạng trừu tượng trong bộ nhớ”

  • Biến (variable) và DataFrame2 là các bảng ảo lưu trữ kết quả trong bộ nhớ máy tính.

  • Cho phép xử lý dữ liệu tập trung, không cần hiển thị kết quả trung gian ra từng ô cụ thể.


Minh họa: Chuyển đổi bộ lọc cổ phiếu từ Excel sang Python

Giả sử bạn có danh sách 1.000 cổ phiếu và muốn lọc theo ba tiêu chí cùng lúc:

  • P/E < 10

  • ROE > 20%

  • Tăng trưởng doanh thu 3 năm > 20%

Với Excel, bạn cần thực hiện các thao tác thủ công như thiết lập vùng lọc, tạo các cột phụ hoặc sheet trung gian, dễ dẫn đến nhầm lẫn tham chiếu khi cập nhật dữ liệu mới.

Với Python và pandas3, bạn chỉ cần một đoạn code ngắn để tải dữ liệu trực tiếp từ API4 và thực hiện phép lọc:

Python
from vnstock import Vnstock
# Nạp dữ liệu bộ lọc cổ phiếu từ Vnstock, biến screener_df trả về là một Pandas DataFrame
stock = Vnstock().stock(symbol='ACB', source='TCBS')
screener_df = stock.screener.stock(params={"exchangeName": "HOSE,HNX,UPCOM"}, limit=1700)

# Thực hiện phép lọc
filtered = screener_df \
    .query('pe < 10') \
    .query('roe > 0.2') \
    .query('revenue_growth_5y > 0.2') \
    .reset_index()
filtered.head()

Toàn bộ quá trình lọc diễn ra trực tiếp trong bộ nhớ máy tính, giúp loại bỏ các thao tác sao chép thủ công.


Thao tác theo chuỗi trong Python (Method Chaining5)

Một ưu điểm của Python và thư viện pandas là khả năng kết hợp các thao tác xử lý dữ liệu theo chuỗi. Thay vì phải xuất dữ liệu ra các bảng phụ ở mỗi bước trung gian như Excel, bạn có thể:

  1. Chuỗi các phép biến đổi liên tục ngay trên đối tượng DataFrame.

  2. Duy trì luồng xử lý liền mạch mà không cần ghi nhận dữ liệu trung gian ra file vật lý.

  3. Giữ code gọn gàng và dễ gỡ lỗi bằng cách chạy thử từng phần trong Jupyter Notebook.

Trong Excel, để có quy trình tương tự, bạn thường phải:

  • Tạo các vùng dữ liệu đệm trên sheet để theo dõi kết quả từng bước.

  • Thiết lập các liên kết công thức phức tạp để chuẩn bị gỡ lỗi khi có sai sót.

Thao tác chuỗi trong Python giúp dữ liệu luân chuyển mượt mà, giảm bớt các file phụ và sheet trung gian, trong khi vẫn đảm bảo tính trực quan trong quá trình phân tích.

Nhận bài viết mới nhất

Hãy là người đầu tiên nhận những bài viết mới và thông tin bổ ích từ Vnstock.


Minh họa tính trung bình động

Tính trung bình động 20 ngày cho giá cổ phiếu:

  • Excel: Tạo cột mới, viết công thức AVERAGE cho 20 ô đầu rồi kéo xuống, dễ sai sót nếu vùng tham chiếu bị lệch.

  • Python:

    Python
    df['MA_20'] = df['Price'].rolling(window=20).mean()

Phép toán được thực hiện đồng loạt trên toàn bộ cột của DataFrame, giúp hạn chế sai lệch chỉ số.


Tính trực quan và tiện lợi của Jupyter Notebook

Python trở nên trực quan hơn khi kết hợp với Jupyter Notebook hoặc Google Colab6:

  1. Chạy từng ô lệnh độc lập để kiểm tra kết quả ngay lập tức.

  2. Hiển thị trực quan bảng dữ liệu và biểu đồ trực tiếp trên giao diện lập trình.

  3. Sử dụng Markdown để chèn ghi chú, giải thích luồng xử lý giúp tài liệu hóa quy trình công việc một cách khoa học.

Nhờ vậy, bạn không cần bận tâm về địa chỉ ô tính hay viết mã VBA7 phức tạp để cập nhật dòng/cột. Chỉ cần thực thi ô lệnh tiếp theo, dữ liệu trung gian đã sẵn sàng cho bước xử lý tiếp theo.


Chọn công cụ phù hợp

Chúng ta không so sánh Excel hay Python công cụ nào tốt hơn, mà lựa chọn dựa trên nhu cầu công việc:

  • Excel phù hợp làm công cụ phác thảo ý tưởng nhanh, kiểm tra dữ liệu quy mô nhỏ hoặc chia sẻ kết quả với đồng nghiệp không sử dụng lập trình.

  • Python tối ưu khi cần xử lý lượng dữ liệu lớn, tự động hóa các quy trình phân tích định kỳ và yêu cầu độ chính xác cao.

Bạn có thể kết hợp cả hai: dùng Excel để hình dung nhanh logic ban đầu, sau đó chuyển đổi quy trình sang Python để tự động hóa và mở rộng quy mô.


Hướng chuyển đổi tư duy

  1. Nhận diện các khái niệm tương đương

    • DataFrame tương tự như một sheet hoặc vùng bảng dữ liệu trong Excel.

    • Biến (variable) là vùng lưu trữ tạm thời trong bộ nhớ, linh hoạt hơn các ô tính cố định.

  2. Sử dụng Jupyter hoặc Colab

    • Chia nhỏ quy trình xử lý thành các ô lệnh riêng biệt để dễ kiểm soát.

    • Vừa giữ tính trực quan của bảng tính, vừa làm quen với cú pháp lập trình.

  3. Tập trung vào logic dữ liệu

    • Đặt tên biến rõ ràng và có ý nghĩa (ví dụ: filtered_stocks).

    • Tập trung vào luồng xử lý dữ liệu thay vì lo lắng công thức ở một ô thay đổi sẽ ảnh hưởng đến toàn bộ bảng tính.

  4. Thành thạo pandas trước khi mở rộng

    • Hãy tập trung làm chủ thư viện pandas để giải quyết tốt các bài toán xử lý dữ liệu bảng tính cơ bản.

    • Tránh sử dụng quá nhiều thư viện nâng cao khi logic cốt lõi chưa vững; pandas đã cung cấp đầy đủ công cụ phân tích cần thiết.

  5. Kinh nghiệm thực hành

    • Bắt đầu chuyển đổi từ một tác vụ nhỏ hàng ngày (ví dụ: gộp file báo cáo tháng).

    • Ghi chú rõ ràng từng bước thực hiện bằng Markdown trong Notebook để dễ dàng xem lại.


Bắt đầu ngay hôm nay

Hãy bắt đầu bằng một tệp dữ liệu nhỏ và chạy thử trên Jupyter hoặc Colab. Thực thi từng dòng lệnh, quan sát kết quả và điều chỉnh. Python sẽ giúp bạn nâng cao hiệu suất xử lý dữ liệu và tự động hóa các tác vụ lặp đi lặp lại một cách hiệu quả hơn.

Nếu bạn muốn chuyển đổi tư duy phân tích từ Excel sang thành thạo Python để tối ưu hóa công việc hàng ngày, hãy tham khảo khóa học Python chứng khoán tại Vnstock để trang bị thêm các kỹ năng cần thiết.



Footnotes

  1. Jupyter Notebook là ứng dụng web mã nguồn mở cho phép bạn tạo và chia sẻ tài liệu chứa mã nguồn chạy được trực tiếp, biểu đồ trực quan và văn bản giải thích.

  2. DataFrame là cấu trúc dữ liệu dạng bảng 2 chiều (gồm hàng và cột) trong thư viện Pandas, tương tự như một bảng tính Excel nhưng được xử lý trực tiếp trong bộ nhớ máy tính.

  3. Pandas là thư viện mã nguồn mở phổ biến của Python, cung cấp các cấu trúc dữ liệu hiệu năng cao để phân tích và thao tác dữ liệu dạng bảng.

  4. API (Application Programming Interface - Giao diện lập trình ứng dụng) là phương thức kết nối để các phần mềm hoặc hệ thống khác nhau có thể truyền nhận dữ liệu với nhau.

  5. Method Chaining (liên kết phương thức) là kỹ thuật viết code cho phép gọi liên tiếp nhiều hàm trên cùng một đối tượng trong một dòng lệnh duy nhất, giúp tối giản mã nguồn.

  6. Google Colab (Google Colaboratory) là dịch vụ chạy sổ tay lập trình Jupyter miễn phí trên nền tảng đám mây của Google, hỗ trợ viết và chạy mã Python trực tiếp qua trình duyệt web.

  7. VBA (Visual Basic for Applications) là ngôn ngữ lập trình được tích hợp sẵn trong các ứng dụng Microsoft Office như Excel để tự động hóa các tác vụ bảng tính.

Bình luận

Đang tải bình luận...