Bài viết này giới thiệu về tính ưu việt của phần mềm Jupyter Notebook kết hợp cùng ngôn ngữ Python. Cụ thể, bài viết dùng các thư viện trên để phân tích các biến số tăng trưởng, lạm phát, GDP bình quân, thất nghiệp trong kinh tế vĩ mô.
Trang 1ỨNG DỤNG PHẦN MỀM JUPYTER NOTEBOOK DÙNG NGÔN NGỮ LẬP TRÌNH PYTHON ĐỂ PHÂN TÍCH DỮ LIỆU KINH TẾ TRONG THỜI
ĐẠI KINH TẾ SỐ
TS Trần An Quân Phòng kinh doanh - quản lý dự án, Công ty TNHH Truyền Số Liệu Lotte Việt Nam
TÓM TẮT
Trong thời đại kinh tế số và cách mạng công nghiệp lần thứ 4 hiện nay, ứng dụng phần mềm và ngôn ngữ lập trình trong phân tích các hoạt động kinh tế đóng vai trò quan trọng Trên thế giới, ngôn ngữ lập trình Python dùng phần mềm viết mã Jupyter Notebook được sử dụng nhiều trong phân tích dữ liệu kinh tế và các ứng dụng có tính thực tiễn cao trong lĩnh vực marketing, kinh doanh, tài chính Bằng các thư viện (library) tích hợp sẵn trong phần mềm, ta có thể nhập (import) chúng bằng lệnh và sử dụng Các thư viện chính của Jupyter như Pandas (dùng để phân tích dữ liệu bảng), Nympy (dùng cho dữ liệu dãy), Sympy (dùng để tính toán), Matplotlib (dùng để xuất đồ thị), Seaborn(dùng để xuất đồ thị hồi quy và ma trận) có thể ứng dụng để phân tích dữ liệu kinh tế vĩ mô và dữ liệu tài chính, kinh doanh Bài viết này giới thiệu về tính ưu việt của phần mềm Jupyter Notebook kết hợp cùng ngôn ngữ Python Cụ thể, bài viết dùng các thư viện trên để phân tích các biến số tăng trưởng, lạm phát, GDP bình quân, thất nghiệp trong kinh tế vĩ mô.
Từ khóa: Jupyter Notebook, Python, Thư viện, Khoa học dữ liệu
1 GIỚI THIỆU
Jupyter Notebook là dự án mã nguồn mở phi lợi nhuận do Fernando Pérez và Brian Granger đồng sáng lập năm 2014 Phần mềm này hỗ trợ được cho nhiều ngôn ngữ lập trình khác nhau như: Julia, Python, R…, và là phấn mềm thuộc dạng môi trường phát triển tích hợp (IDE) Theo quan điểm của Jenny Palomino và Leah Wasser trên trang chuyên đào tạo khoa học dữ liệu Earthlab (thuộc đại học Colorado, Mỹ), Jupyter Notebook có ưu điểm lớn
là dễ sử dụng, có tính tương tác cao, trực quan do có đầu vào nhập mã(input) và đầu ra kết quả (output) rõ ràng Jupyter Notebook có dạng file Ipynb có thể dễ dàng chia sẻ với người khác Trong đó, ngôn ngữ được sử dụng phổ biến là Python thông qua nhân hệ điều hành (Kernel) iPython Phần mềm Jupyter Notebook là công cụ để thực hiện các tác vụ: tạo môi trường test cho các phần mềm hoặc đoạn code bằng ngôn ngữ Python, xử lý biến đổi dữ
Trang 2liệu, phân tích dữ liệu thông qua các hàm thống kê và tính toán, trực quan hóa dữ liệu bằng các dạng đồ thị, thực hiện tính toán hồi quy, ma trận, và học máy
Đi cùng với đó, Python là ngôn ngữ ngắn gọn và dễ sử dụng hơn so với Java, C, C++ với cùng một cú pháp… Nghiên cứu thực nghiệm của Lutz Prechelt(đại học Berlin, năm 2000) cho thấy độ dài chương trình viết bằng Python ngắn hơn một nửa so với Java hay C++ , tốc độ chạy chương trình của Python nhanh hơn và tiêu tốn tài nguyên bộ nhớ ít hơn
so với Java và C++, nhưng lại có độ phổ biến cao do nằm trong top 5 ngôn ngữ phổ biến (ngang với Java), là một trong những ngôn ngữ nhiều người học nhất (theo khảo sát của
KD Nugget và Stack Overflow), được kỳ vọng là ngôn ngữ lập trình trong kỷ nguyên số
Do những đặc điểm trên, Jupyter Notebook cùng với Python được nhiều nhà khoa học, sinh viên ưa thích sử dụng để phân tích dữ liệu trong nhiều lĩnh vực Ở Việt Nam, phân tích dữ liệu đã được ứng dụng nhiều trong các bộ phận công nghệ thông tin của ngân hàng, các công ty Fintech, và các trung tâm nghiên cứu dữ liệu như: Viettel Big Data Analytics, Vingroup Big Data Institute… Tuy nhiên, Việt Nam chưa đào tạo phổ biến hay ứng dụng nhiều khoa học dữ liệu vào lĩnh vực kinh tế, kinh doanh do đây còn là hướng đi mới Chính vì vậy, những ứng dụng của khoa học dữ liệu trong các ngành kinh tế tại Việt Nam còn hạn chế
2 PHƯƠNG PHÁP LUẬN VÀ CƠ SỞ NGHIÊN CỨU
Phần đầu bài viết nêu ra những đặc điểm của Jupyter Notebook và ngôn ngữ Python
và so sánh với các phần mềm khác để thấy được tính ưu việt của nó trong phân tích dữ liệu
và học máy Các thông tin so sánh này có phần là những thống kê, khảo sát của các website chuyên về khoa học dữ liệu như: Kaggle, KD Nuggets…, có phần định tính và mang tính trải nghiệm của người viết lẫn cộng đồng người sử dụng
Phần thứ hai, bài viết sử dụng phần mềm Jupyter Notebook và ngôn ngữ Python để phân tích dữ liệu kinh tế vĩ mô gồm các biến số tăng trưởng, GDP bình quân đầu người, tỉ
lệ lạm phát, thất nghiệp trong năm 2018 của 44 quốc gia thuộc khu vực Châu Á- Thái Bình Dương Dữ liệu được lấy từ bộ dữ liệu Databank của Ngân Hàng Thế Giới (World Bank) Bài viết sẽ trình bày quá trình nhập và mô tả dữ liệu, phân tích bằng các hàm thống kê, xuất đồ thị trực quan và tính hồi quy, ma trận bằng các thư viện Pandas, Nympy, Matplotlib, Seaborn tích hợp trong phần mềm
Trang 33 TIẾN HÀNH NGHIÊN CỨU VÀ KẾT QUẢ THU ĐƯỢC
3.1 Tính ưu việt của Jupyter Notebook và ngôn ngữ lập trình Python
3.1.1 Tính ưu việt của Jupyter notebook
Phần này sẽ giải thích tại sao chúng ta nên sử dụng Jupyter Notebook và ngôn ngữ lập trình Python để phân tích dữ liệu trong lĩnh vực khoa học dữ liệu Các phân tích dựa trên khảo sát thống kê của các website chuyên môn như Kaggle, Kd nuggets và dựa trên trải nghiệm trực tiếp từ người viết, từ cộng đồng người dùng
Khảo sát của Kaggle năm 2019 về các nhà khoa học dữ liệu và công cụ họ sử dụng IDE Jupyter (gồm Jupyter Lab và Jupyter Notebook) đứng đầu về độ phổ biến sử dụng với 83% nhà khoa học dữ liệu sử dụng nó như nền tảng thường dùng
Hình 1: Mức độ phổ biến của các IDE năm 2019 (Nguồn: Khảo sát của Kaggle, 2019)
Ta cùng điểm qua một số IDE khác phổ biến trong khoa học dữ liệu và so sánh với Jupyter Notebook:
Trang 4_Spyder: chuyên sâu cho tính toán khoa học, gồm 3 màn hình hiển thị: viết code, thông báo đặc tính dữ liệu, và bảng kết quả Tuy nhiên không hỗ trợ nhiều thư viện đồ thị trực quan như Jupyter notebook, các dòng code không thể chạy độc lập
_IDE Shell: là IDE gắn kèm khi cài đặt ngôn ngữ Python Điểm mạnh là giao diện đơn giản dễ sử dụng, nhưng có ít thư viện tích hợp sẵn, dẫn đến ít thư viện dùng cho khoa học dữ liệu và học máy
_Rodeo: IDE hiện chưa hoạt động ổn định, trong website chính thức của Rodeo hiện không download được IDE và cộng đồng sử dụng có ít forum để trao đổi
_Pycharm: Là phần mềm dành cho nhà phát triển Python chuyên nghiệp, cung cấp đầy đủ công cụ để lập trình Python Tuy nhiên Pycharm là ứng dụng phải trả phí, các tính năng không thân thiện cho người mới dùng và nhiều công cụ không cần thiết cho người chuyên về khoa học dữ liệu, ứng dụng cũng tiêu tốn nhiều tài nguyên máy tính
_Eclipse: IDE khá toàn diện khi hỗ trợ hầu hết ngôn ngữ Java, Python, C, C++, Fortran, Ruby…Tuy nhiên đây là IDE chuyên dùng để phát triển Java hơn, nên không hỗ trợ Python tốt bằng các IDE chuyên về Python Người sử dụng phải tự xây dựng và gắn các plug-in để sử dụng các thư viện code Python
_Cuối cùng Jupyter Notebook là IDE được thiết kế phù hợp nhất cho khoa học dữ liệu dùng ngôn ngữ Python, nó mang những tính ưu việt như sau:
+) Có dòng input nhập dữ liệu và output trả kết quả riêng biệt Giao diện gồm các nút
ấn và phím chức năng hỗ trợ chạy code, lưu, chỉnh sửa file…nên tiện sử dụng
+) Chạy và ra kết quả độc lập từng dòng code, có thể không theo logic từ trên xuống Tuy nhiên, máy luôn tự động lưu lại các đoạn code đã chạy Khi cần xây hệ thống lập trình, chỉ cần nhập lệnh, hàm muốn chạy để ra kết quả mà không cần xây lại cấu trúc từ đầu +) Hỗ trợ các thư viện chuyên biệt cho khoa học dữ liệu và học máy, như thư viện biểu đồ trực quan, kết nối được với các thư viện khác như Tensorflow, Keras…
+) Ứng dụng mã nguồn mở, dung lượng nhẹ, tốc độ xử lý nhanh, tối ưu cho khoa học
dữ liệu và học máy Dễ dàng cài đặt do tích hợp trong ứng dụng Anaconda hoặc trình quản
lý pip Các ứng dụng đều miễn phí
Vì vậy, Jupyter Notebook phù hợp nhất cho khoa học dữ liệu và học máy, lĩnh vực cần giao diện người dùng (GUI) đơn giản, có nhiều thư viện hỗ trợ, dễ cài đặt sử dụng và miễn phí
Trang 53.1.2 Tính ưu việt của ngôn ngữ Python
Theo như giới thiệu trên website chính thức, Python là ngôn ngữ lập trình hướng đối tượng, bậc cao và đa năng Chúng phổ biến dùng trong khoa học dữ liệu và AI do tính đơn giản và ngắn gọn trong cú pháp (syntax) Python thân thiện với nhiều người, nhất là với người mới học lập trình và không chuyên sâu về khoa học máy tính Python là ngôn ngữ tăng trưởng nhanh về số người dùng, là ngôn ngữ của nhiều phần mểm trong thời đại cách mạng công nghiệp lần thứ 4 Ngoài ra, có nhiều ứng dụng, website nổi tiếng được viết hoàn toàn hoặc một phần bằng ngôn ngữ Python như: Instagram, Spotify, Google, Netflix, Dropbox, Pinterest, Reddit…
Theo điều tra của KD Nuggets, website chuyên về khoa học dữ liệu với hơn 1800 nhà phát triển tham gia khảo sát, đã lựa chọn Python là ngôn ngữ phổ biến nhất trong ngành khoa học dữ liệu trong cả năm 2018 và 2019 Trên 65% nhà phát triển trong khảo sát đang
sử dụng ngôn ngữ này năm 2019 Còn theo điều tra của Stack Overflow Survey năm 2019, khảo sát 90000 nhà phát triển toàn cầu về các đặc điểm của họ và công cụ họ sử dụng, đã xếp hạng Python là ngôn ngữ lập trình phổ biến thứ 2 thế giới, chỉ sau Javascript, và là ngôn ngữ máy tính phổ biến thứ 4
Hình 2: Mức độ phổ biến của các ngôn ngữ lập trình năm 2017-2019 theo khảo sát
của KD Nuggets
(Nguồn: Khảo sát của KD Nuggets, 2017-2019)
Với những đặc tính ưu việt trên, sự kết hợp giữa ngôn ngữ Python với môi trường phát triển Jupyter Notebook là phù hợp với ngành khoa học dữ liệu và học máy
3.2 Jupyter Notebook dùng ngôn ngữ Python - ứng dụng phân tích dữ liệu kinh tế vĩ mô
Để minh họa cho ứng dụng Jupyter Notebook và Python trong ngành khoa học dữ liệu Chúng ta bắt đầu với dự án về phân tích dữ liệu kinh tế vĩ mô của các nước trong khu
Trang 6vực Châu Á và Thái Bình Dương năm 2018, dữ liệu được lấy từ Ngân Hàng Dữ Liệu (Data Bank) của Ngân Hàng Thế Giới (World Bank) Kích thước mẫu gồm 44 quan sát- là các quốc gia trong khu vực Châu Á- Thái Bình Dương, các biến số thống kê gồm: tăng trưởng, GDP bình quân đầu người, lạm phát (theo chỉ số giá tiêu dùng CPI) và thất nghiệp (theo
mô hình ước tính của ILO) Trước tiên ta cần nhập (import) dữ liệu vào IDE, do dữ liệu dùng để phân tích dạng bảng nên ta dùng thư viện Pandas
Hình 3: Nhập dữ liệu theo dạng bảng nhờ thư viện Pandas
(Nguồn: Dữ liệu lấy từ Data Bank, World Bank, 2018)
Dữ liệu nhập vào được hiển thị dưới dạng bảng, có thanh công cụ để kéo trượt theo dõi toàn bộ dữ liệu với những dữ liệu kích thước lớn (khoảng vài trăm phần tử), bảng sẽ chỉ hiện thị các phần tử có thứ tự phần đầu và cuối bộ dữ liệu
Khi mô tả thống kê (descriptive statistics) ta dùng hàm describe() Mô tả kích thước
dữ liệu (cột, hàng) bằng hàm shape cho thấy dữ liệu gồm 44 hàng và 6 cột Tiếp đó, mô tả thông tin của dữ liệu bằng hàm info() cho thấy các cột đều tương ứng với 44 phần tử của
bộ dữ liệu, không có giá trị khuyết thiếu và định dạng giá trị đều ở dạng số học 64 bit Khi kiểm tra dữ liệu lặp bằng gọi hàm duplicated(), kết quả trả về đều là False tức là không có
dữ liệu lặp
Ngoài ra, ta có thể tính phương sai, phân vị, tìm giá trị max, min…các hàm khác trong thống kê bằng các lệnh như hình 4)
Trang 7Hình 4: Thông tin về các biến của dữ liệu và tính toán các hàm thống kê (cực trị,
phương sai, phân vị…)
(Nguồn: Tác giả tự phân tích dữ liệu)
IDE có hỗ trợ đồ thị trực quan khi nhập thư viện Matplotlib, được tích hợp với thư viện Pandas, có thể tùy chỉnh dạng biểu đồ (cột, quạt, trục, phân tán…), các thuộc tính, kích thước, màu sắc Các biểu đồ ở dưới ở dạng cột về GDP đầu người giữa các quốc gia
và ở dạng phân tán về mối quan hệ giữa lạm phát và thất nghiệp
Trang 8Hình 5:Biểu đồ dạng cột và dạng phân tán
(Nguồn: Tác giả tự phân tích dữ liệu và xuất đồ thị) Tiếp theo, để vẽ đường hồi quy thể hiện mối quan hệ giữa 2 biến số và miền giá trị tập trung phân bố, ta có thể dùng thư viện Seaborn, chuyên dùng để tính và xuất đồ thị hồi quy và ma trận tương quan Cụ thể, bài viết dùng hàm regplot() biểu diễn mối quan hệ tương quan và đường hồi quy giữa biến tăng trưởng và lạm phát Ngoài ra, ta dùng hàm pairplot() thể hiện ma trận tương quan giữa tất cả các biến
Trang 9Hình 6: Biểu đồ đường hồi quy của biến tăng trưởng và biến lạm phát
(Nguồn: Tác giả tự phân tích dữ liệu và xuất đồ thị)
4 KẾT LUẬN VÀ KHUYẾN NGHỊ GIẢI PHÁP
Để nâng cao khả năng ứng dụng, đồng thời tận dụng những ưu điểm của Jupyter Notebook và Python, nghiên cứu đề xuất những giải pháp sau:
4.1 Về mặt giải pháp công nghệ
- Thông qua trường hợp phân tích dữ liệu kinh tế vĩ mô ở trên, ta có thể dùng Jupyter Notebook và Python vào các dự án phân tích, khảo sát dữ liệu kinh tế- xã hội Những công
cụ này có thể nhập dữ liệu từ nhiều định dạng file, xử lí cấu trúc, phân tích dữ liệu bằng các hàm thống kê, trực qua hóa bằng các dạng đồ thị, chạy hồi quy, tính toán số học, giải tích…So với những phần mềm viết sẵn như SPSS, Eviews, STATA Jupyter Notebook
và Python có tính tùy biến và tính cá nhân hóa cao hơn Chúng cho phép nhà phát triển có thể tính toán, xử lý dữ liệu đa dạng khi chỉ cần nhập vào thư viện thích hợp và xử lý được
dữ liệu lớn (cỡ vài nghìn quan sát) Những công cụ này có thể kết hợp với những kiến thức,
lí thuyết truyền thống trong lĩnh vực kinh tế để phục vụ cho mục đích nghiên cứu
- Những công cụ này có nhiều hướng phát triển trong thời đại công nghệ 4.0 và kinh
tế số, nhờ những ứng dụng trong lĩnh vực học máy (Machine Learning), học sâu (Deep Learning), Big Data và AI, có tính tùy biến cao với nhiều thư viện hỗ trợ
Trang 10- Công cụ có tính ứng dụng thực tế cao, giải quyết được những bài toán của doanh nghiệp như: lĩnh vực học máy có thể được ứng dụng để phân loại đặc điểm, hành vi của khách hàng trong marketing, quản lý quyết định đầu tư và phát hiện gian lận trong lĩnh vực tài chính Bằng thuật toán như mạng thần kinh nhân tạo, những công cụ này có thể tạo ứng dụng trợ lý ảo, để nhận thức và trả lời các câu hỏi của khách hàng
- IDE Jupyter Notebook và Python không chỉ bó buộc trong môi trường máy tính cá nhân mà có thể tương tác, chia sẻ dữ liệu cho người khác thông qua dịch vụ điện toán đám mây tích hợp sẵn trong bộ ứng dụng Anaconda Thêm vào đó, các chương trình viết trên Jupyter Notebook có thể trở thành ứng dụng web dựa vào các nền tảng xây dựng ứng dụng web như Anvil chuyên dành cho ngôn ngữ Python
4.2 Về mặt chính sách để phát triển ứng dụng
- Môi trường phát triển Jupyter Notebook và ngôn ngữ Python là những công cụ quan trọng trong phân tích dữ liệu, đã được ứng dụng nhiều trong lĩnh vực kinh tế, kinh doanh trên thế giới Với đặc điểm dễ sử dụng, ngắn gọn, trực quan và tính phổ cập, nghiên cứu
đề xuất khuyến khích và phát triển cộng đồng người dùng hai công cụ này trong phân tích
dữ liệu kinh tế ở Việt Nam Chúng phù hợp để dùng trong những nghiên cứu của nhà khoa học và sinh viên khối kinh tế
- Nghiên cứu đề xuất Jupyter Notebook và Python có thể là những công cụ thích hợp góp phần phát triển kĩ năng và đào tạo lập trình cho đối tượng nhà nghiên cứu và sinh viên kinh tế Do đặc tính ngắn gọn và dễ sử dụng, chúng góp phần vào việc phổ cập số hóa trong kinh tế, nhằm đưa lập trình trở thành một trong những kĩ năng thiết yếu với những người phân tích, người thường xuyên xử lý dữ liệu kinh tế Về mặt chi phí, Jupyter Notebook là ứng dụng mã nguồn mở miễn phí cho nhà phát triển cá nhân Python cũng được tải miễn phí từ trang web chính thức Đây là hai bộ công cụ giúp tích kiệm nhiều chi phí, góp phần vào việc phổ biến số hóa trong lĩnh vực kinh tế
- Phát triển cộng đồng khoa học dữ liệu nói chung và ứng dụng Jupyter Notebook, Python nói riêng trong lĩnh vực kinh tế, kinh doanh Các viện và trung tâm công nghệ thông tin, trường đại học tăng cường mở các diễn đàn trực tuyến, hội thảo chuyên đề để cộng đồng nhà phát triển trong lĩnh vực khoa học dữ liệu, học máy, Big Data… có thể trao đổi, chia sẻ kinh nghiệm Các viện nghiên cứu, trung tâm phát triển, không chỉ phát triển gói gọn trong khuôn viên của mình mà nên liên kết với nhau hoặc kết nối với những người