Trong bài viết này chúng ta sẽ tìm hiểu tất tần tật những điều cơ bản liên quan đến Python, ứng dụng của loại ngôn ngữ này trong cuộc sống, đặc biệt là về nghiên cứu khoa học và phân tích dữ liệu.

1. Tại sao sử dụng Python?

Python

1.1. Nhu cầu của người phân tích dữ liệu (Data Analyst – DA), nhà khoa học dữ liệu (Data Scientist – DS)

  • Lấy dữ liệu (mô phỏng, kiếm soát thử nghiệm).
  • Thao tác và xử lý dữ liệu.
  • Trực quan hóa dữ liệu (visualize data) với những số liệu chất lượng thể hiện qua các báo cáo hoặc các ấn phẩm một cách dễ hiểu nhất.

1.2. Điểm mạnh của Python

  • Dễ học.
  • Dễ giao tiếp.
  • Code hiệu quả.
  • Nhiều gói hỗ trợ.
  • Giải quyết được nhiều vấn đề.

1.3. So sánh Python với các ngôn ngữ khác

1.3.1. Ngôn ngữ biên dịch: C, C++, …

  • Điểm mạnh
    • Rất nhanh. Với những chương trình nặng tính toán, Python khó vượt qua được những ngôn ngữ này.
  • Điểm yếu
    • Không có tương tác trong quá trình phát triển, các bước biên dịch bắt buộc, cú pháp dài dòng, quản lý bộ nhớ thủ công. Đây là những ngôn ngữ khó cho những người không được đào tạo lập trình bài bản.

1.3.2. Ngôn ngữ kịch bản Matlab

  • Điểm mạnh
    • Bộ sưu tập phong phú của các thư viện với nhiều thuật toán cho nhiều lĩnh vực khác nhau. Chương trình thường được truy xuất nhanh vì các thư viện này thường được viết bằng ngôn ngữ biên dịch.
    • Môi trường phát triển mạnh mẽ, toàn diện: biên tập tích hợp (intergrated editor), v.v.
    • Có trả tiền để được hỗ trợ tận tình.
  • Điểm yếu
    • Ngôn ngữ cơ sở (Base language) khá kém và có thể trở nên hạn chế đối với người dùng nâng cao.
    • Tốn tiền.

1.3.3. Julia

  • Điểm mạnh
    • Code nhanh, tương tác ổn định và đơn giản.
    • Dễ dàng kết nối với Python hoặc C+.
  • Điểm yếu
    • Hệ sinh thái giới hạn để tính toán.
    • Còn non trẻ.

1.3.4. R

  • Điểm mạnh
    • Mã nguồn mở, miễn phí.
    • Có vài tính năng nâng cao (thống kê, …).
  • Điểm yếu
    • Ít thuật toán có sẵn hơn trong Matlab và ngôn ngữ nhìn khá tù (đánh giá cá nhân).
    • Một số phần mềm được dành riêng cho một mục đích. Vd: Gnuplot để vẽ đường cong. Mặc dù các chương trình này rất mạnh mẽ, nhưng chúng bị giới hạn trong một loại sử dụng duy nhất như vẽ đồ thị.

2. Hệ sinh thái khoa học Python

Không giống như Matlab hay R, Python không đi kèm với các bộ modules được đóng gói sẵn cho tính toán khoa học. Dưới đây là các blocks cơ bản được dựng sẵn có thể được kết hợp để có được môi trường tính toán khoa học:

  • Ngôn ngữ: điều khiển lưu lượng (flow control), các loại dữ liệu (data types), …
  • Các modules của thư viện chuẩn: xử lý chuỗi (string processing), quản lý tệp (file management), giao thức mạng đơn giản (simple network protocols).
  • Một số lượng lớn các modules hoặc ứng dụng chuyên dụng được viết bằng Python: web framework (Flask, Django), v.v. . . và tính toán khoa học.
  • Công cụ phát triển (kiểm tra tự động – automatic testing, tạo tài liệu – document generation).

Biểu đồ - Graph

Các thư viện xử lý số học chính (numeric libraries):

  • Numpy: tính toán số học với các đối tượng mảng số học (numerical arrays) mạnh mẽ và các phương thức để thao tác chúng. http://www.numpy.org/
  • Scipy: xử lý số học cấp cao (high-level numerical). Tối ưu hóa, hồi quy, nội suy, … http://www.scipy.org/
  • Matplotlib : trực quan hóa dữ liệu 2-D http://matplotlib.org/

Các môi trường tương tác nâng cao:

  • IPython, Python console nâng cao http://ipython.org/
  • Jupyter, notebooks trên trình duyệt http://jupyter.org/

trực quan hóa dữ liệu - visualization

Các gói chức năng riêng biệt:

  • Mayavi: trực quan hóa 3-D.
  • pandas: statsmodels, seaborn trong thống kê.
  • scikit-image: xử lý hình ảnh (image processing).
  • scikit-learn: học máy (machine learning).

Vậy là mình đã hoàn thành bài viết về hệ sinh thái điện toán khoa học trong việc sử dụng Python để áp dụng vào các nghiên cứu khoa học, phân tích dữ liệu. Hy vọng bài viết này sẽ giúp ích cho các bạn hiểu được phần nào nguyên tắc hoạt động, các chức năng chính của Python trong việc xử lý dữ liệu thời hiện đại ngày nay.