Jupyter Notebook – Công Cụ Python Cơ Bản Cho Beginner

Khi làm quen với ngôn ngữ Python chắc chắn bạn sẽ gặp công cụ Jupyter, đây là một công cụ quen thuộc với cả người mới học và các kỹ sư lập trình, data science. Vậy Jupyter là gì? tại sao Jupyter notebook là một công cụ không thể thiếu cho lập trình Python.

Jupyter là gì?

Jupyter là một nền tảng tính toán khoa học mã nguồn mở, với khả năng nổi bật cho phép tương tác trực tiếp với từng dòng code (interactive), hỗ trợ hơn 40 ngôn ngữ lập trình, trong đó tập trung vào 3 ngôn ngữ là Julia, Python và R, cái tên Jupyter bắt nguồn từ cách chơi chữ I Python, You R, We Julia, hay một công thức ngắn gọn Jupyter = Julia + Python + R. Bên cạnh đó, Jupyter cũng là một công cụ hoàn toàn miễn phí, được tạo ra với mục đích nhắm đến khoa học dữ liệu và giáo dục, giúp mọi người cùng học lập trình dễ dàng hơn (cụ thể ở đây là Python). Jupyter có tính tương tác nên có thể sử dụng làm môi trường chạy thử và giảng dạy.

Jupyter Notebook là gì?

Trước đây là nó có tên là IPython Notebook, đến năm 2014 lại đổi tên thành Jupyter Notebook. Jupyter hỗ trợ rất nhiều các kernel cho các ngôn ngữ khác nhau, khoảng trên 40 ngôn ngữ trong đó có Python. Việc đổi tên từ IPython sang Jupyter cũng là vì mục đích hỗ trợ đa ngôn ngữ.

Phần cơ bản của nó là một ứng dụng chạy trên nền web cho phép chạy Interactive Python (hay IPython), bạn có thể đưa cả code Python và các thành phần văn bản phức tạp như hình ảnh, công thức, video, biểu thức… vào trong cùng một file giúp cho việc trình bày trở lên dễ hiểu, giống như một file trình chiếu nhưng lại có thể thực hiện chạy code tương tác trên đó, cốt lõi của việc này chính là Markdown. Các file “notebook” này có thể được chia sẻ với mọi người và có thể thực hiện lại các công đoạn một cách nhanh chóng và chính xác như những gì bạn đã làm trong quá trình tạo ra file.

Cài đặt Jupyter Notebook

Mình sẽ hướng dẫn các bạn cài đặt Jupyter Notebook trong hệ điều hành Windows, việc đầu tiên là bạn cần phải chắc chắn rằng mình đã cài đặt Python trong máy.

Bạn có thể kiểm tra bằng cách vào Terminal hoặc là Command Prompt và nhập lệnh sau:

python -version

Nếu hiện ra phiên bản Python đang dùng, vậy là bạn đã cài đặt rồi. Nếu không, hãy vào Microsoft Store hoặc trang gốc của Python để tải về và cài đặt.

Tiếp theo, để cài đặt Jupyter Notebook, bạn chỉ cần dùng lệnh pip đơn giản sau

pip install jupyter

Cài đặt xong sẽ có thông báo tương tự như thế này

Collecting jupyter Using cached jupyter-1.0.0-py2.py3-none-any.whl (2.7 kB) Requirement already satisfied: qtconsole in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from jupyter) (4.7.6) Requirement already satisfied: jupyter-console in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from jupyter) (6.2.0) Collecting notebook Using cached notebook-6.1.3-py3-none-any.whl (9.4 MB) Requirement already satisfied: nbconvert in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from jupyter) (5.6.1) Requirement already satisfied: ipywidgets in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from jupyter) (7.5.1) Requirement already satisfied: ipykernel in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from jupyter) (5.3.4) Requirement already satisfied: pyzmq>=17.1 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from qtconsole->jupyter) (19.0.2) Requirement already satisfied: traitlets in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from qtconsole->jupyter) (5.0.0) Requirement already satisfied: jupyter-client>=4.1 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from qtconsole->jupyter) (6.1.7) Requirement already satisfied: jupyter-core in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from qtconsole->jupyter) (4.6.3) Requirement already satisfied: pygments in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from qtconsole->jupyter) (2.6.1) Requirement already satisfied: ipython-genutils in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from qtconsole->jupyter) (0.2.0) Requirement already satisfied: qtpy in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from qtconsole->jupyter) (1.9.0) Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from jupyter-console->jupyter) (3.0.7) Requirement already satisfied: ipython in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from jupyter-console->jupyter) (7.18.1) Requirement already satisfied: nbformat in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from notebook->jupyter) (5.0.7) Requirement already satisfied: Send2Trash in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from notebook->jupyter) (1.5.0) Requirement already satisfied: terminado>=0.8.3 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from notebook->jupyter) (0.8.3) Requirement already satisfied: argon2-cffi in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from notebook->jupyter) (20.1.0) Requirement already satisfied: tornado>=5.0 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from notebook->jupyter) (6.0.4) Requirement already satisfied: prometheus-client in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from notebook->jupyter) (0.8.0) Requirement already satisfied: jinja2 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from notebook->jupyter) (2.11.2) Requirement already satisfied: mistune<2,>=0.8.1 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from nbconvert->jupyter) (0.8.4) Requirement already satisfied: pandocfilters>=1.4.1 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from nbconvert->jupyter) (1.4.2) Requirement already satisfied: bleach in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from nbconvert->jupyter) (3.1.5) Requirement already satisfied: defusedxml in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from nbconvert->jupyter) (0.6.0) Requirement already satisfied: testpath in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from nbconvert->jupyter) (0.4.4) Requirement already satisfied: entrypoints>=0.2.2 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from nbconvert->jupyter) (0.3) Requirement already satisfied: widgetsnbextension~=3.5.0 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from ipywidgets->jupyter) (3.5.1) Requirement already satisfied: python-dateutil>=2.1 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from jupyter-client>=4.1->qtconsole->jupyter) (2.8.1) Requirement already satisfied: pywin32>=1.0; sys_platform == “win32” in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from jupyter-core->qtconsole->jupyter) (228) Requirement already satisfied: wcwidth in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->jupyter-console->jupyter) (0.2.5) Requirement already satisfied: jedi>=0.10 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from ipython->jupyter-console->jupyter) (0.17.2) Requirement already satisfied: pickleshare in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from ipython->jupyter-console->jupyter) (0.7.5) Requirement already satisfied: backcall in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from ipython->jupyter-console->jupyter) (0.2.0) Requirement already satisfied: decorator in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from ipython->jupyter-console->jupyter) (4.4.2) Requirement already satisfied: colorama; sys_platform == “win32” in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from ipython->jupyter-console->jupyter) (0.4.3) Requirement already satisfied: setuptools>=18.5 in c:program fileswindowsappspythonsoftwarefoundation.python.3.8_3.8.1520.0_x64__qbz5n2kfra8p0libsite-packages (from ipython->jupyter-console->jupyter) (47.1.0) Requirement already satisfied: jsonschema!=2.5.0,>=2.4 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from nbformat->notebook->jupyter) (3.2.0) Requirement already satisfied: pywinpty>=0.5; os_name == “nt” in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from terminado>=0.8.3->notebook->jupyter) (0.5.7) Requirement already satisfied: cffi>=1.0.0 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from argon2-cffi->notebook->jupyter) (1.14.2) Requirement already satisfied: six in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from argon2-cffi->notebook->jupyter) (1.15.0) Requirement already satisfied: MarkupSafe>=0.23 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from jinja2->notebook->jupyter) (1.1.1) Requirement already satisfied: packaging in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from bleach->nbconvert->jupyter) (20.4) Requirement already satisfied: webencodings in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from bleach->nbconvert->jupyter) (0.5.1) Requirement already satisfied: parso<0.8.0,>=0.7.0 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from jedi>=0.10->ipython->jupyter-console->jupyter) (0.7.1) Requirement already satisfied: pyrsistent>=0.14.0 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from jsonschema!=2.5.0,>=2.4->nbformat->notebook->jupyter) (0.16.0) Requirement already satisfied: attrs>=17.4.0 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from jsonschema!=2.5.0,>=2.4->nbformat->notebook->jupyter) (20.1.0) Requirement already satisfied: pycparser in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from cffi>=1.0.0->argon2-cffi->notebook->jupyter) (2.20) Requirement already satisfied: pyparsing>=2.0.2 in c:usersadminappdatalocalpackagespythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0localcachelocal-packagespython38site-packages (from packaging->bleach->nbconvert->jupyter) (2.4.7) Installing collected packages: notebook, jupyter Successfully installed jupyter-1.0.0 notebook-6.1.3

Dùng Jupyter Notebook như thế nào?

Sau khi cài đặt xong Jupyter Notebook trong các bước ở trên, chúng ta có thể bắt đầu chạy Jupyter bằng câu lệnh trong Terminal hoặc Command Prompt:

jupyter notebook

Sau đó, trình thông dịch lệnh sẽ hiển thị ra thông báo sau

(base) C:UsersAdmin> jupyter notebook [I 22:21:38.614 NotebookApp] Serving notebooks from local directory: C:UsersAdmin [I 22:21:38.616 NotebookApp] Jupyter Notebook 6.1.3 is running at: [I 22:21:38.617 NotebookApp] http://localhost:8888/?token=383e608d432953b5b1e06f6ace604ba466cd310e2d7981bb [I 22:21:38.617 NotebookApp] or http://127.0.0.1:8888/?token=383e608d432953b5b1e06f6ace604ba466cd310e2d7981bb [I 22:21:38.618 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [C 22:21:38.973 NotebookApp] To access the notebook, open this file in a browser: file:///C:/Users/Admin/AppData/Roaming/jupyter/runtime/nbserver-884-open.html Or copy and paste one of these URLs: http://localhost:8888/?token=383e608d432953b5b1e06f6ace604ba466cd310e2d7981bb or http://127.0.0.1:8888/?token=383e608d432953b5b1e06f6ace604ba466cd310e2d7981bb [I 22:22:33.947 NotebookApp] 302 GET /?token=383e608d432953b5b1e06f6ace604ba466cd310e2d7981bb (::1) 2.00ms

Ngoài ra, trình duyệt cũng sẽ bật ra với đường dẫn http://localhost:8888/tree như hình dưới đây:

Vậy là các bạn xong các bước cơ bản để sử dụng Jupyter Notebook rồi !

Sử dụng Jupyter cơ bản

1. Tạo một notebook cơ bản

Trong giao diện trang chủ, để tạo một tài liệu Notebook mới click vào New và chọn loại tài liệu như Python, Text file, Folder…

Notebook khi mới được tạo có tên mặc định là Untitled. Bạn có thể click vào chữ “Untitled” phía trên cũng, bên phải logo Jupyter để tự thay đổi tên theo ý của bạn. Ví dụ ở đây tôi đổi tên thành Hello World

Chuyển về Tab quản lý file của Jupyter, bạn sẽ thấy một file mới có tên notebook01.ipynb với trạng thái là Running vì notebook này đang được mở. Bạn cũng có thể tắt một notebook bằng cách nhấn Shutdown.

2. Làm việc với notebook

Một notebook bao gồm nhiều cell (ô). Khi tạo mới một notebook, bạn luôn được tạo sẵn một cell rỗng đầu tiên.

Cell trên có kiểu là “Code”, điều đó có nghĩa là bạn có thể gõ code Python và thực thi ngay lập tức. Để thực thi code, bạn có thể nhấn nút Run cell hoặc nhấn Ctrl + Enter.

Giải thích về các phần được khoanh đỏ:

Phần 1: Tiêu đề tài liệu, mặc định chưa nhập tiêu đề là Untitled. Khi nhấp chuột vào phần này, một cửa sổ sẽ hiện ra để bạn nhập tên file. Phần 2: Thanh menu bao gồm các menu như: File: các menu thao tác với file như tạo mới, lưu trữ, save as… Edit: các menu thao tác với nội dung file như copy, paste văn bản, cell, tìm kiếm và thay thế một nội dung trong file, chèn hình ảnh… View: menu điều chỉnh giao diện, hiển thị hoặc ẩn các thành phần giao diện trong Jupyter Notebook. Insert, Cell: các hành động liên quan đến Cell là thành phần cơ bản của một tài liệu. Kernel: các thao tác với kernel hiện hành như thay đổi nếu muốn sử dụng ngôn ngữ khác, restart, shutdown Một số các menu khác. Phần 3: Thanh menu nhanh (shortcut menu) bao gồm các thao tác nhanh mà bạn thường làm với một tài liệu, có một số nút trên đó chúng ta hay dùng nhất như: Save file Copy, paste Thay đổi thứ tự các cell trong tài liệu Chạy code trong tài liệu Lựa chọn loại văn bản trong cell: Code: Cell này chứa mã Python và có thể thực hiện được. Markdown: Cell này chứa văn bản diễn giải. Phần 4: Nội dung tài liệu chứa các cell có nội dung là code hoặc markdown, đây là vùng chúng ta sẽ làm việc chính.

Kết quả ngay lập tức được hiển thị tại ô bên dưới. Một cell rỗng sẽ được tạo sau khi bạn thực thi code. Hãy gõ tiếp một đoạn code Python để thử nghiệm nào:

Và đây là kết quả:

Có thể thấy, việc chạy và thực thi code, trình bày dữ liệu trong Jupyter không khác gì những IDE ngoài kia, ngoại trừ thiếu mất một số tính năng như debug, cài đặt môi trường, … Nhưng cũng không liên quan gì lắm, vì mục đích mà Jupyter được tạo ra là để tương tác và giáo dục, cho nên các tính năng được xây dựng bám sát theo tính tương tác và truyền tải thông tin đến người dùng sao cho dễ hiểu nhất có thể, vì vậy Jupyter đã làm thật sự rất tốt.

Tạm kết

Thông qua bài viết này, mình hi vọng bạn đã biết được thêm về một công cụ hữu ích hỗ trợ cho việc học Python, tuy không có gì là phức tạp, nhưng mọi thành công đều khởi đầu từ căn bản. Chúc mọi người học tốt !

(Chương sau mình sẽ đi sâu hơn vào cách sử dụng Jupyter Notebook)