Chính xác thì bạn có thể làm gì với Python? Đây là 3 ứng dụng chính của Python.

Nếu bạn đang nghĩ đến việc học Python - hoặc nếu bạn mới bắt đầu học nó - bạn có thể tự hỏi mình:

“Chính xác thì tôi có thể sử dụng Python để làm gì?”

Đó là một câu hỏi khó trả lời, bởi vì có rất nhiều ứng dụng cho Python.

Nhưng theo thời gian, tôi đã quan sát thấy rằng có 3 ứng dụng phổ biến chính cho Python:

  • Phát triển web
  • Khoa học dữ liệu - bao gồm học máy, phân tích dữ liệu và trực quan hóa dữ liệu
  • Viết kịch bản

Hãy lần lượt nói về từng người trong số họ.

Phát triển web

Các khung công tác web dựa trên Python như DjangoFlask gần đây đã trở nên rất phổ biến để phát triển web.

Các khuôn khổ web này giúp bạn tạo mã phía máy chủ (mã phụ trợ) bằng Python. Đó là mã chạy trên máy chủ của bạn, trái ngược với trên thiết bị và trình duyệt của người dùng (mã giao diện người dùng). Nếu bạn không quen với sự khác biệt giữa mã phụ trợ và mã giao diện người dùng, vui lòng xem chú thích của tôi bên dưới.

Nhưng chờ đã, tại sao tôi cần một khuôn khổ web?

Đó là bởi vì một khuôn khổ web giúp việc xây dựng logic phụ trợ chung trở nên dễ dàng hơn. Điều này bao gồm ánh xạ các URL khác nhau thành các đoạn mã Python, xử lý cơ sở dữ liệu và tạo tệp HTML mà người dùng thấy trên trình duyệt của họ.

Tôi nên sử dụng khuôn khổ web Python nào?

Django và Flask là hai trong số các khung công tác web Python phổ biến nhất. Tôi khuyên bạn nên sử dụng một trong số chúng nếu bạn mới bắt đầu.

Sự khác biệt giữa Django và Flask là gì?

Có một bài báo xuất sắc về chủ đề này của Gareth Dwyer, vì vậy hãy để tôi trích dẫn nó ở đây:

te>

Tương phản chính:

  • Flask cung cấp sự đơn giản, linh hoạt và kiểm soát chi tiết. Nó không được tích hợp (nó cho phép bạn quyết định cách bạn muốn triển khai mọi thứ).
  • Django cung cấp trải nghiệm toàn diện: bạn nhận được bảng điều khiển quản trị, giao diện cơ sở dữ liệu, ORM [ánh xạ quan hệ đối tượng] và cấu trúc thư mục cho các ứng dụng và dự án của bạn.

Bạn có thể nên chọn:

  • Flask, nếu bạn tập trung vào trải nghiệm và cơ hội học tập hoặc nếu bạn muốn kiểm soát nhiều hơn về những thành phần nào sẽ sử dụng (chẳng hạn như cơ sở dữ liệu nào bạn muốn sử dụng và cách bạn muốn tương tác với chúng).
  • Django, nếu bạn đang tập trung vào sản phẩm cuối cùng. Đặc biệt nếu bạn đang làm việc trên một ứng dụng chuyển tiếp như trang tin tức, cửa hàng điện tử hoặc blog và bạn muốn ở đó luôn có một cách thực hiện rõ ràng, duy nhất.

te>

Nói cách khác, Nếu bạn là người mới bắt đầu, Flask có lẽ là lựa chọn tốt hơn vì nó có ít thành phần hơn để xử lý. Ngoài ra, Flask là một lựa chọn tốt hơn nếu bạn muốn tùy chỉnh nhiều hơn.

Mặt khác, nếu bạn đang muốn xây dựng một thứ gì đó thẳng thắn, Django có thể sẽ cho phép bạn đạt được điều đó nhanh hơn.

Bây giờ, nếu bạn đang muốn học Django, tôi giới thiệu cuốn sách có tên Django cho người mới bắt đầu. Bạn có thể tìm thấy nó ở đây.

Bạn cũng có thể tìm thấy các chương mẫu miễn phí của cuốn sách đó tại đây.

Được rồi, chúng ta chuyển sang chủ đề tiếp theo!

Khoa học dữ liệu - bao gồm học máy, phân tích dữ liệu và trực quan hóa dữ liệu

Trước hết, chúng ta hãy xem lại học máy là gì .

Tôi nghĩ cách tốt nhất để giải thích học máy là gì là cung cấp cho bạn một ví dụ đơn giản.

Giả sử bạn muốn phát triển một chương trình tự động phát hiện nội dung trong ảnh.

Vì vậy, với hình ảnh dưới đây (Hình 1), bạn muốn chương trình của bạn nhận ra rằng đó là một con chó.

Với cái khác bên dưới (Hình 2), bạn muốn chương trình của mình nhận ra rằng đó là một bảng.

Bạn có thể nói, tốt, tôi có thể viết một số mã để làm điều đó. Ví dụ, có thể nếu có nhiều điểm ảnh màu nâu nhạt trong hình, thì chúng ta có thể nói rằng đó là một con chó.

Hoặc có thể, bạn có thể tìm ra cách phát hiện các cạnh trong ảnh. Sau đó, bạn có thể nói, nếu có nhiều cạnh thẳng thì đó là một cái bàn.

Tuy nhiên, kiểu tiếp cận này khá nhanh chóng. Điều gì sẽ xảy ra nếu có một con chó trắng trong hình không có lông màu nâu? Điều gì sẽ xảy ra nếu bức tranh chỉ hiển thị các bộ phận tròn của bàn?

Đây là lúc máy học ra đời.

Máy học thường triển khai một thuật toán tự động phát hiện một mẫu trong đầu vào nhất định.

Chẳng hạn, bạn có thể đưa 1.000 hình ảnh về một con chó và 1.000 hình ảnh về cái bàn cho một thuật toán học máy. Sau đó, nó sẽ tìm hiểu sự khác biệt giữa một con chó và một cái bàn. Khi bạn đưa cho nó một bức tranh mới về một con chó hoặc một cái bàn, nó sẽ có thể nhận ra đó là con nào.

Tôi nghĩ điều này phần nào tương tự như cách một em bé học những điều mới. Làm thế nào để một em bé học được rằng một thứ trông giống một con chó và một cái bàn khác? Có thể là từ một loạt các ví dụ.

Bạn có thể không nói rõ ràng với một đứa trẻ rằng "Nếu một con gì đó có lông và có lông màu nâu nhạt, thì đó có thể là một con chó."

Bạn có thể chỉ nói, “Đó là một con chó. Đây cũng là một con chó. Và đây là một cái bàn. Cái đó cũng là cái bàn ”.

Các thuật toán học máy hoạt động theo cùng một cách.

Bạn có thể áp dụng ý tưởng tương tự cho:

  • hệ thống đề xuất (nghĩ rằng YouTube, Amazon và Netflix)
  • nhận dạng khuôn mặt
  • nhận diện giọng nói

trong số các ứng dụng khác.

Các thuật toán học máy phổ biến mà bạn có thể đã nghe nói đến bao gồm:

  • Mạng nơron
  • Học kĩ càng
  • Hỗ trợ máy vector
  • Rừng ngẫu nhiên

Bạn có thể sử dụng bất kỳ thuật toán nào ở trên để giải quyết vấn đề gắn nhãn hình ảnh mà tôi đã giải thích trước đó.

Python cho học máy

Có các thư viện và khuôn khổ học máy phổ biến cho Python.

Hai trong số những cái phổ biến nhất là scikit-learningTensorFlow .

  • scikit-learning đi kèm với một số thuật toán học máy phổ biến hơn được tích hợp sẵn. Tôi đã đề cập đến một số trong số chúng ở trên.
  • TensorFlow là một thư viện cấp thấp hơn cho phép bạn xây dựng các thuật toán học máy tùy chỉnh.

Nếu bạn mới bắt đầu với một dự án máy học, tôi khuyên bạn nên bắt đầu với scikit-learning. Nếu bạn bắt đầu gặp vấn đề về hiệu quả, thì tôi sẽ bắt đầu xem xét TensorFlow.

Tôi nên học máy học như thế nào?

Để tìm hiểu các nguyên tắc cơ bản về máy học, tôi muốn giới thiệu khóa học máy học của Stanford hoặc Caltech.

Xin lưu ý rằng bạn cần có kiến ​​thức cơ bản về giải tích và đại số tuyến tính để hiểu một số tài liệu trong các khóa học đó.

Sau đó, tôi sẽ thực hành những gì bạn đã học được từ một trong những khóa học đó với Kaggle. Đó là một trang web nơi mọi người cạnh tranh để xây dựng thuật toán học máy tốt nhất cho một vấn đề nhất định. Họ cũng có hướng dẫn tuyệt vời cho người mới bắt đầu.

Còn về phân tích dữ liệu và trực quan hóa dữ liệu?

Để giúp bạn hiểu những thứ này có thể trông như thế nào, hãy để tôi cung cấp cho bạn một ví dụ đơn giản ở đây.

Giả sử bạn đang làm việc cho một công ty bán một số sản phẩm trực tuyến.

Sau đó, là một nhà phân tích dữ liệu, bạn có thể vẽ một biểu đồ thanh như thế này.

Từ biểu đồ này, chúng ta có thể biết rằng nam giới đã mua hơn 400 đơn vị sản phẩm này và phụ nữ đã mua khoảng 350 đơn vị sản phẩm này vào Chủ nhật cụ thể này.

Là một nhà phân tích dữ liệu, bạn có thể đưa ra một vài giải thích khả thi cho sự khác biệt này.

Một giải thích rõ ràng có thể xảy ra là sản phẩm này phổ biến với nam giới hơn phụ nữ. Một cách giải thích khác có thể là do kích thước mẫu quá nhỏ và sự khác biệt này là do ngẫu nhiên. Và một lời giải thích khả thi khác có thể là nam giới có xu hướng mua sản phẩm này nhiều hơn chỉ vào Chủ nhật vì một số lý do.

Để hiểu giải thích nào trong số những giải thích này là đúng, bạn có thể vẽ một biểu đồ khác như biểu đồ này.

Thay vì chỉ hiển thị dữ liệu cho Chủ nhật, chúng tôi đang xem xét dữ liệu cho cả tuần. Như bạn có thể thấy, từ biểu đồ này, chúng ta có thể thấy rằng sự khác biệt này khá nhất quán qua các ngày khác nhau.

Từ phân tích nhỏ này, bạn có thể kết luận rằng lời giải thích thuyết phục nhất cho sự khác biệt này là sản phẩm này đơn giản là phổ biến với nam giới hơn phụ nữ.

Mặt khác, điều gì sẽ xảy ra nếu bạn nhìn thấy một biểu đồ như thế này?

Sau đó, điều gì giải thích sự khác biệt vào Chủ nhật?

Bạn có thể nói, có lẽ vì lý do nào đó đàn ông có xu hướng mua sản phẩm này nhiều hơn vào Chủ nhật. Hoặc, có lẽ đó chỉ là một sự trùng hợp ngẫu nhiên mà nam giới mua nó nhiều hơn vào Chủ nhật.

Vì vậy, đây là một ví dụ đơn giản về phân tích dữ liệu có thể trông như thế nào trong thế giới thực.

Công việc phân tích dữ liệu tôi đã làm khi còn làm việc tại Google và Microsoft rất giống với ví dụ này - chỉ phức tạp hơn. Tôi thực sự đã sử dụng Python tại Google cho loại phân tích này, trong khi tôi sử dụng JavaScript tại Microsoft.

Tôi đã sử dụng SQL ở cả hai công ty đó để lấy dữ liệu từ cơ sở dữ liệu của chúng tôi. Sau đó, tôi sẽ sử dụng Python và Matplotlib (tại Google) hoặc JavaScript và D3.js (tại Microsoft) để trực quan hóa và phân tích dữ liệu này.

Phân tích / trực quan hóa dữ liệu với Python

Một trong những thư viện phổ biến nhất để hiển thị dữ liệu là Matplotlib.

Đây là một thư viện tốt để bắt đầu vì:

  • Thật dễ dàng để bắt đầu với
  • Một số thư viện khác như seaborn dựa trên nó. Vì vậy, học Matplotlib sẽ giúp bạn tìm hiểu các thư viện khác sau này.

Tôi nên học phân tích / trực quan hóa dữ liệu bằng Python như thế nào?

Trước tiên, bạn nên tìm hiểu các nguyên tắc cơ bản về phân tích và hình dung dữ liệu. Khi tôi tìm kiếm tài nguyên tốt cho điều này trực tuyến, tôi không thể tìm thấy bất kỳ. Vì vậy, tôi đã kết thúc việc tạo một video YouTube về chủ đề này:

Tôi cũng đã kết thúc một khóa học đầy đủ về chủ đề này trên Pluralsight, bạn có thể tham gia khóa học miễn phí bằng cách đăng ký bản dùng thử miễn phí 10 ngày của họ.

Tôi muốn giới thiệu cả hai.

Sau khi tìm hiểu các nguyên tắc cơ bản về phân tích và hình dung dữ liệu, việc học các nguyên tắc cơ bản về thống kê từ các trang web như Coursera và Khan Academy cũng sẽ hữu ích.

Viết kịch bản

Viết kịch bản là gì?

Viết kịch bản thường đề cập đến việc viết các chương trình nhỏ được thiết kế để tự động hóa các tác vụ đơn giản.

Vì vậy, hãy để tôi cho bạn một ví dụ từ kinh nghiệm cá nhân của tôi ở đây.

Tôi từng làm việc tại một công ty khởi nghiệp nhỏ ở Nhật Bản, nơi chúng tôi có hệ thống hỗ trợ qua email. Đó là một hệ thống để chúng tôi trả lời các câu hỏi mà khách hàng đã gửi cho chúng tôi qua email.

Khi tôi làm việc ở đó, tôi có nhiệm vụ đếm số lượng email chứa các từ khóa nhất định để chúng tôi có thể phân tích các email chúng tôi nhận được.

Chúng tôi có thể thực hiện nó theo cách thủ công, nhưng thay vào đó, tôi đã viết một chương trình đơn giản / tập lệnh đơn giản để tự động hóa tác vụ này.

Trên thực tế, chúng tôi đã sử dụng Ruby cho việc này vào thời điểm đó, nhưng Python cũng là một ngôn ngữ tốt cho loại tác vụ này. Python phù hợp với loại tác vụ này chủ yếu vì nó có cú pháp tương đối đơn giản và dễ viết. Nó cũng nhanh chóng để viết một cái gì đó nhỏ với nó và kiểm tra nó.

Điều gì về các ứng dụng nhúng?

Tôi không phải là chuyên gia về các ứng dụng nhúng, nhưng tôi biết rằng Python hoạt động với Rasberry Pi. Nó có vẻ như là một ứng dụng phổ biến trong số những người yêu thích phần cứng.

Chơi game thì sao?

Bạn có thể sử dụng thư viện có tên PyGame để phát triển trò chơi, nhưng nó không phải là công cụ chơi game phổ biến nhất hiện có. Bạn có thể sử dụng nó để xây dựng một dự án theo sở thích, nhưng cá nhân tôi sẽ không chọn nó nếu bạn nghiêm túc về việc phát triển trò chơi.

Thay vào đó, tôi khuyên bạn nên bắt đầu với Unity với C #, một trong những công cụ chơi game phổ biến nhất. Nó cho phép bạn xây dựng một trò chơi cho nhiều nền tảng, bao gồm Mac, Windows, iOS và Android.

Điều gì về các ứng dụng máy tính để bàn?

Bạn có thể tạo một cái bằng Python bằng Tkinter, nhưng nó có vẻ không phải là lựa chọn phổ biến nhất.

Thay vào đó, có vẻ như các ngôn ngữ như Java, C # và C ++ phổ biến hơn cho việc này.

Gần đây, một số công ty cũng đã bắt đầu sử dụng JavaScript để tạo các ứng dụng Desktop.

Ví dụ: ứng dụng dành cho máy tính để bàn của Slack được xây dựng bằng một thứ gọi là Electron. Nó cho phép bạn xây dựng các ứng dụng máy tính để bàn bằng JavaScript.

Cá nhân tôi, nếu tôi đang xây dựng một ứng dụng dành cho máy tính để bàn, tôi sẽ sử dụng tùy chọn JavaScript. Nó cho phép bạn sử dụng lại một số mã từ phiên bản web nếu bạn có.

Tuy nhiên, tôi cũng không phải là chuyên gia về các ứng dụng máy tính để bàn, vì vậy hãy cho tôi biết trong một bình luận nếu bạn không đồng ý hoặc đồng ý với tôi về điều này.

Python 3 hay Python 2?

Tôi muốn giới thiệu Python 3 vì nó hiện đại hơn và nó là một lựa chọn phổ biến hơn vào thời điểm này.

Chú thích cuối trang: Một lưu ý về mã back-end và mã front-end (đề phòng trường hợp bạn không quen thuộc với các thuật ngữ):

Giả sử bạn muốn tạo một cái gì đó giống như Instagram.

Sau đó, bạn cần tạo mã giao diện người dùng cho từng loại thiết bị bạn muốn hỗ trợ.

Bạn có thể sử dụng, ví dụ:

  • Swift dành cho iOS
  • Java dành cho Android
  • JavaScript dành cho trình duyệt web

Mỗi bộ mã sẽ chạy trên từng loại thiết bị / trình duyệt. Đây sẽ là bộ mã xác định bố cục của ứng dụng sẽ như thế nào, các nút sẽ trông như thế nào khi bạn nhấp vào chúng, v.v.

Tuy nhiên, bạn vẫn sẽ cần khả năng lưu trữ thông tin và ảnh của người dùng. Bạn sẽ muốn lưu trữ chúng trên máy chủ của mình chứ không chỉ trên thiết bị của người dùng để người theo dõi của mỗi người dùng có thể xem ảnh của họ.

Đây là nơi có mã phụ trợ / mã phía máy chủ. Bạn sẽ cần viết một số mã phụ trợ để thực hiện những việc như:

  • Theo dõi ai đang theo dõi ai
  • Nén ảnh để chúng không chiếm quá nhiều dung lượng lưu trữ
  • Đề xuất ảnh và tài khoản mới cho từng người dùng trong tính năng khám phá

Vì vậy, đây là sự khác biệt giữa mã phụ trợ và mã giao diện người dùng.

Nhân tiện, Python không phải là lựa chọn tốt duy nhất để viết mã phụ trợ / phía máy chủ. Có nhiều lựa chọn phổ biến khác, bao gồm Node.js, dựa trên JavaScript.

Thích bài viết này? Sau đó, bạn cũng có thể thích kênh YouTube của tôi.

Tôi có một kênh YouTube về giáo dục lập trình tên là CS Dojo với hơn 440.000 người đăng ký, nơi tôi sản xuất nhiều nội dung hơn như bài viết này.

Ví dụ: bạn có thể thích những video này:

Dù sao, cảm ơn rất nhiều vì đã đọc bài viết của tôi!