Tự Học Data Science · 14/08/2023 0

Chương 1 – Bài 3 – Jupyter Notebook Magic Commands

Magic commands là gì?

Magic command là một cú pháp đặc biệt có thể giúp bạn chạy và phân tích dữ liệu trong jupyter notebook. Nó thêm vào một vài tính năng đặc biệt mà Python tự nó không thể làm được.

Magic command rất dễ nhận thấy khi ở trong code, nó thường bắt đầu với % hoặc %% trong trường hợp viết 1 dòng hay nhiều dòng tương ứng.

Trong bài này mình sẽ hướng dẫn các bạn cách sử dụng các magic command phổ biến trong quá trình sử dụng Jupyter Notebook và cách tận dụng các tính năng đó khi làm việc với data

Danh sách tất cả các magic commands

%lsmagic

Nếu bạn chạy dòng lệnh trên bạn sẽ nhận được list tất cả các magiccommands có trong jupyter notebook như hình bên dưới. Bài này mình sẽ chỉ đi qua những câu lệnh thường dùng nhất.

Chạy một file .py

Bạn có thể chạy một file python trong jupyter notebook với lệnh sau:

%run <file_name>

Giả sử bạn có một file hello.py trong cùng thư mục, có nội dung như sau:

def hello_world():
    print('Hello, world')
hello_world()

Sau đó, bạn có thể dùng lệnh run để chạy file này:

%run hello.py

Đo thời gian chạy cell

Bạn có thể đo được thời gian chạy của một cell bằng phương pháp như hình bên dưới với lệnh %%time, bạn chỉ cần đặt nó ở đầu cell mà bạn muốn xử lý

%%time
import random
for i in range(0, 1000000):
    random.random()

Danh sách tất cả các biến

Để liệt kê tất cả các biến đã được định nghĩa trong notebook, bạn có thể sử dụng lệnh %who, Bạn cũng có thể thêm vào sau lệnh này một kiểu dữ liệu để hiển thị các biến với kiểu dữ liệu tương ứng

%who int

Thông tin chi tiết của một biến

Sau khi đã biết tên biến, ta có thể xem tất cả các thông tin của biến này bằng lệnh %pinfo <variable>

%pinfo var_1

Như bạn thấy, nó sẽ hiển thị cho bạn tất cả các info quan trọng về biến này ví dụ như kiểu, docstring, giá trị,…

Kiểm tra các biến môi trường environment variables

%env

Bạn cũng có thể dùng lệnh này để tạo ra các biến môi trường mới như bên dưới

%env NEW_VAR=Users/konki

Và có thể kiểm tra giá trị của một biến môi trường bằng lệnh

%env NEW_VAR

Lịch sử code

%history sẽ liệt kê tất cả các đoạn code bạn đã chạy trước đó

Gần giống với nó, bạn cũng có lệnh %rerun%save để chạy lại và lưu những đoạn code nhất định

Quản lý các ngoại lệ: %xmode

Hầu hết thời gian khi một đoạn mã Python thất bại, nó sẽ gây ra một Exception.Khi bộ thông dịch gặp một trong những ngoại lệ này, thông tin về nguyên nhân của lỗi có thể được tìm thấy trong traceback, mà có thể được truy cập từ bên trong Python.Với chức năng phép thần hoạt %xmode, IPython cho phép bạn điều khiển lượng thông tin được in ra khi ngoại lệ được gây ra.Xem xét đoạn mã sau:

def func1(a, b):
    return a / b

def func2(x):
    a = x
    b = x - 1
    return func1(a, b)
func2(1)
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-2-b2e110f6fc8f> in <module>()
----> 1 func2(1)

<ipython-input-1-d849e34d61fb> in func2(x)
      5     a = x
      6     b = x - 1
----> 7     trả về func1(a, b)

<ipython-input-1-d849e34d61fb> in func1(a, b)
      1 định nghĩa func1(a, b):
----> 2     trả về a / b
      3 
      4 định nghĩa func2(x):
      5     a = x

ZeroDivisionError: chia cho số không

Gọi func2 sẽ dẫn đến một lỗi, và đọc trace được in sẽ giúp chúng ta thấy chính xác điều gì đã xảy ra.Mặc định, trace này bao gồm một số dòng hiển thị ngữ cảnh của mỗi bước dẫn đến lỗi. Sử dụng hàm magic %xmode (viết tắt của Exception mode), chúng ta có thể thay đổi thông tin được in ra.

%xmode nhận một tham số là chế độ, và có ba khả năng: Plain, ContextVerbose. Mặc định là Context, và hiển thị thông tin như thể hiện trước đó. Plain gọn hơn và cung cấp ít thông tin hơn, verbose cung cấp nhiều chi tiết hơn

%xmode Verbose