Trong bài đăng trước, tôi đã chỉ cho bạn cách cài đặt Python và thiết lập Stata để sử dụng Python. Bây giờ, chúng ta đã sẵn sàng để sử dụng Python. Có ba cách để sử dụng Python trong Stata: gọi Python một cách tương tác, đưa mã Python vào các do-file và ado-file, và thực thi các tệp script Python. Mỗi cách hữu ích trong những trường hợp khác nhau, vì vậy tôi sẽ trình bày cả ba. Các ví dụ được cố tình đơn giản và đôi khi mang tính minh họa. Tôi sẽ trình bày một số ví dụ phức tạp hơn trong các bài đăng sau, nhưng trong bài này, tôi muốn giữ mọi thứ đơn giản.
Gọi Python Tương Tác
Bạn có thể sử dụng Python một cách tương tác trong Stata bằng cách gõ `python` vào cửa sổ lệnh của Stata.
1. python
2----------------------------------------------- python (type end to exit) ------Stata nhắc nhở bạn rằng bạn có thể gõ `end` để thoát Python khi hoàn tất. Bây giờ bạn có thể gõ mã Python vào cửa sổ lệnh. Ví dụ, bạn có thể hướng dẫn Python in ra một cụm từ.
1>>> print("Hello Stata, I am Python")
2Hello Stata, I am PythonBạn cũng có thể sử dụng Python như một máy tính tương tác.
1>>> 2*3
26
3>>> 3*4
412Sau đó, bạn có thể gõ `end` để thoát khỏi Python và quay lại Stata.
1>>> end
2--------------------------------------------------------------------------------Bạn cũng có thể chỉ cần gõ `python:` theo sau là một câu lệnh Python. Python sẽ chạy câu lệnh đó và sau đó quay lại Stata. Đây là một ví dụ đơn giản:
1. python: print("Hello Stata, I am Python")
2Hello Stata, I am PythonBạn cũng có thể sử dụng cú pháp này cho các phép tính nhanh:
1. python: 2*3
26Python Trong Do-file Và Ado-file
Bạn có thể sử dụng `python:` theo sau là một lệnh đơn giản như
1. python: print("Hello Stata, I am Python")trong các do-file và ado-file, giống như khi bạn làm việc tương tác.
Bạn cũng có thể sử dụng các khối mã Python để chạy nhiều câu lệnh Python trong các do-file và ado-file. Một khối mã Python bắt đầu bằng `python` và kết thúc bằng `end`, như chúng ta đã thấy trong ví dụ tương tác ở trên. Ví dụ 1 dưới đây là một do-file bắt đầu bằng lệnh `display` của Stata, mở một khối mã Python bằng `python`, thực thi hai câu lệnh `print()` của Python, kết thúc khối mã Python bằng `end` và kết thúc bằng một lệnh `display` của Stata.
Ví dụ 1: hello.do
1display "Hello Python, I am Stata."
2print("Hello Stata.")
3print("I am Python.")display "Nice to meet you Python!"
end
Khi chúng ta gõ `do hello`, dễ dàng thấy khối mã Python trong kết quả đầu ra vì khối mã bắt đầu và kết thúc bằng các dòng dấu gạch ngang.
1. display "Hello Python, I am Stata."
2Hello Python, I am Stata.
3. python
4----------------------------------------------- python (type end to exit) ------
5>>> print("Hello Stata.")
6Hello Stata.
7>>> print("I am Python.")
8I am Python.
9>>> end
10--------------------------------------------------------------------------------
11. display "Nice to meet you Python!"
12Nice to meet you Python!Có hai điều quan trọng cần biết về các khối mã. Thứ nhất, bạn có thể bắt đầu một khối mã bằng `python` hoặc `python:`. Cả hai đều sẽ chạy khối mã, nhưng chúng hoạt động khác nhau nếu Python gặp lỗi trong khối mã. Nếu bạn bắt đầu khối mã bằng `python` và Python gặp lỗi, Python sẽ tiếp tục thực thi các mã còn lại trong khối. Nếu bạn bắt đầu khối mã bằng `python:` và Python gặp lỗi, Python sẽ trả quyền điều khiển về Stata mà không thực thi các mã Python còn lại. Một thông báo lỗi chi tiết sẽ được in ra, và một mã lỗi sẽ được ban hành trong cả hai trường hợp.
Thứ hai, thụt lề trong các khối mã Python có chức năng chứ không chỉ mang tính thẩm mỹ. Ví dụ, bạn có thể bị cám dỗ viết một khối mã Python và thụt lề mã trong khối như trong Ví dụ 2.
Ví dụ 2: hello2.do
1display "Hello Python, I am Stata."
2python:
3 print("Hello Stata.")
4 print("I am Python.")display "Nice to meet you Python!"
end
Nhưng Python sử dụng thụt lề để “xác định nhóm các câu lệnh” (Python Documentation 2.1.7). Python trả về lỗi thụt lề (IndentationError) khi chúng ta chạy Ví dụ 2.
1. display "Hello Python, I am Stata."
2Hello Python, I am Stata.
3. python:
4----------------------------------------------- python (type end to exit) ------
5>>> print("Hello Stata.")
6File "
7", line 1
8 print("Hello Stata.")
9 ^
10IndentationError: unexpected indent
11(1 line skipped)
12--------------------------------------------------------------------------------
13r(7102);Bạn có thể đọc thêm về việc sử dụng thụt lề trong tài liệu Python.
Chạy Các Tệp Script Python
Bạn cũng có thể chạy các tệp script Python trong Stata. Một tệp script Python chỉ đơn giản là tập hợp các câu lệnh Python được lưu trong một tệp với phần mở rộng .py. Ví dụ 3 cho thấy nội dung của một tệp script Python có tên `hello.py`.
Ví dụ 3: hello.py
1print("Hello Stata.")
2print("I am Python.")Chúng ta có thể chạy tệp script Python bằng cách gõ `python script` theo sau là tên của tệp script chúng ta muốn chạy.
1. python script hello.py
2Hello Stata.
3I am Python.Phương pháp chạy Python trong Stata này hữu ích khi bạn gặp một tệp script Python do người khác viết. Nó cũng hữu ích để lưu một tập hợp các hàm Python. Tôi sẽ chỉ cho bạn cách truyền đối số từ Stata sang các tệp script Python trong một bài đăng blog sắp tới.
Bạn có thể sử dụng `python script` trong cửa sổ lệnh, do-file hoặc ado-file.
Trong bài đăng blog này, tôi đã trình bày cho bạn ba cách khác nhau để chạy Python trong Stata. Mỗi cách đều hữu ích trong những trường hợp khác nhau, và tôi sẽ minh họa cách sử dụng chúng trong các bài đăng blog sắp tới. Lần tới, tôi sẽ chỉ cho bạn cách tải xuống và cài đặt các gói Python.
✨ Việc tích hợp Python vào Stata mang lại sự linh hoạt đáng kể, giúp người dùng tận dụng sức mạnh của cả hai công cụ phân tích dữ liệu hàng đầu, từ thực thi nhanh chóng các câu lệnh đơn lẻ đến quản lý các tác vụ phức tạp qua script và do-file.
Câu Hỏi Tư Duy Hoặc Bài Tập Ứng Dụng
Hãy thử viết một do-file trong Stata để:
1. Hiển thị thông báo "Chào mừng đến với tích hợp Stata-Python!" bằng lệnh `display` của Stata.
2. Sử dụng một khối mã Python để tính tổng của 5 và 7, sau đó in kết quả ra màn hình.
3. Hiển thị thông báo "Kết thúc quá trình tích hợp." bằng lệnh `display` của Stata.
Bạn sẽ sử dụng `python` hay `python:` để bắt đầu khối mã Python trong trường hợp này, và tại sao?


