Ebook Dạo một vòng Python trình bày sử dụng dòng lệnh mẫu; cách để khởi chạy một đoạn mã Python; hướng dẫn nhanh về cú pháp ngôn ngữ Python; ngữ nghĩa Python cơ bản, toán tử; luồng điều khiển; định nghĩa và sử dụng hàm; lỗi và ngoại lệ; thao tác chuỗi và biểu thức chính quy; một cái nhìn tổng quát về những công cụ khoa học dữ liệu...
Dạo vòng python (A Whirlwind Tour of Python) Jake VanderPlas Bản quyền thuộc Tập đoàn O’Reilly Media In Hoa Kỳ Xuất Tập đoàn O’Reilly Media 1005 Cao tốc Gravenstein phía Bắc, Sebastopol, California, 95472 Có thể mua sách O’Reilly cho mục đích giáo dục, kinh doanh khuyến Phiên trực tuyến có sẵn “http://safaribooksonline.com” Để biết thêm thơng tin chi tiết, xin liên hệ với phận kinh doanh của chúng tôi: 800-998-9938 corporate@oreilly.com Biên tập: Dawn Schanafelt Thiết kế nội dung: David Futato Sản xuất: Kristen Brown Thiết kế bìa: Karen Montgomery Sửa in: Jasmine Kwityn Minh họa: Rebecca Demarest Tháng 8, 2016: Ấn đầu tiền Lịch sử chỉnh sửa ấn 2016-08-10: Xuất lần đầu Biểu tượng O’Reilly đăng ký nhãn hiệu cho Tập đoàn O’Reilly Media, Dạo vịng python (A Whirlwind Tour of Python), ảnh bìa nhận diện thương mại liên quan thuộc Tập đoàn O’Reilly Media Mặc dù nhà xuất tác giả nỗ lực để đảm bảo xác thơng tin hướng dẫn ấn phẩm này, nhà xuất tác giả từ chối trách nhiệm lỗi thiếu sót, bao gồm khơng giới hạn trách nhiệm thiệt hại kết việc áp dụng hạy phụ thuộc vào ấn phẩm Việc sử dụng thông tin hướng dẫn ấn phẩm ln có rủi ro định Nếu câu lệnh mẫu hay công nghệ chứa đựng mô tả ấn phẩm phải tuân theo giấy phép mã nguồn mở quyền sở hữu trí tuệ chủ thể khác người dùng có trách nhiệm tn thủ giấy phép hoặc/và quyền Mục lục Dạo vòng Python Lời mở đầu Sử dụng dòng lệnh mẫu Cách để khởi chạy đoạn mã Python Hướng dẫn nhanh Cú pháp ngôn ngữ Python Ngữ nghĩa Python bản: Biến đối tượng 15 Ngữ nghĩa Python bản: Toán tử 19 Kiểu liệu tích hợp: Những liệu đơn giản 26 Cấu trúc liệu tích hợp 33 Luồng điều khiển 40 Định nghĩa sử dụng Hàm 44 Lỗi Ngoại lệ 49 Trình lặp 57 Danh sách tổng quát 64 Trình tạo 67 Mơ-đun Gói 72 Thao tác chuỗi biểu thức quy 76 Một nhìn tổng qt cơng cụ khoa học liệu 92 Tài nguyên cho việc học thêm 98 Dạo vịng Python Lời mở đầu Được hình thành vào cuối năm tám mươi ngôn ngữ giảng dạy kịch bản, Python trở thành cơng cụ thiết yếu cho nhiều lập trình viên, kỹ sư, nhà nghiên cứu nhà khoa học liệu học viện ngành công nghiệp Là nhà thiên văn tập trung vào việc xây dựng thúc đẩy cơng cụ mở miễn phí cho ngành khoa học chuyên sâu liệu, thấy Python phù hợp cách gần hoàn hảo cho loại vấn đề mà gặp phải hàng ngày, cho dù việc trích xuất ý nghĩa từ liệu thiên văn lớn, thu thập chuyển đổi liệu nguồn trang Web hay tự động hóa nhiệm vụ nghiên cứu hàng ngày Sự hấp dẫn Python đến từ đơn giản vẻ đẹp nó, tiện lợi hệ sinh thái lớn gồm công cụ miền chun biệt xây dựng Ví dụ, hầu hết câu lệnh Python tính tốn khoa học khoa học liệu xây dựng xung quanh nhóm gói (package) hồn chỉnh hữu ích NumPy cung cấp khả lưu trữ tính toán hiệu cho mảng liệu đa chiều SciPy chứa loạt công cụ số tích phân nội suy Pandas cung cấp đối tượng DataFrame với phương thức mạnh mẽ để điều khiển, lọc, nhóm chuyển đổi liệu Matplotlib cung cấp giao diện hữu ích để tạo phác họa vẽ Scikit-Learn cung cấp công cụ thống để đưa vào liệu thuật tốn cho phép máy tính khả tự học hỏi IPython/Jupyter cung cấp thiết bị đầu cuối nâng cao môi trường tương tác máy tính hữu ích cho phân tích thăm dị, tạo tài liệu tương tác, thực thi Ví dụ, thảo sách soạn hồn tồn với Jupyter notebook Khơng phần quan trọng số lượng lớn cơng cụ gói kèm: có nhiệm vụ phân tích khoa học liệu mà bạn muốn thực hiện, có viết sẵn gói để làm điều cho bạn Tuy nhiên, để khai thác sức mạnh hệ sinh thái khoa học liệu này, trước tiên, đòi hỏi phải làm quen với ngôn ngữ Python Tôi thường bắt gặp sinh viên đồng nghiệp có tảng (đôi hiểu biết sâu rộng) số ngôn ngữ như, MAT MATLAB, IDL, R, Java, C ++, v.v., muốn có nhìn ngắn gọn tồn diện ngơn ngữ Python tương xứng với trình độ hiểu biết họ, số không Cuốn sách phù hợp với nhu cầu Dù vậy, sách khơng nhắm tới việc trở thành cẩm nang toàn diện lập trình nói chung hay ngơn ngữ Python nói riêng; thứ bạn kiếm tìm, thử điểm qua số gợi ý tham khảo liệt kê mục “Tài nguyên cho việc học thêm” trang 98 Thay vào đó, sách cung cấp kiến thức sơ khai cú pháp ý nghĩa chúng, kiểu liệu tích hợp sẵn (built-in data) cấu trúc, định nghĩa hàm, câu lệnh điều khiển, khía cạnh khác ngơn ngữ Mục tiêu mang đến cho độc giả tảng vững để từ khám phá mơn khoa học máy tính nói Sử dụng dòng lệnh mẫu Tài liệu bổ sung (mã lệnh mẫu, IPython notebooks, v.v.) tải từ đường dẫn https://github.com/jakevdp/WhirlwindTour OfPython/ Cuốn sách giúp bạn hồn thành cơng việc Nhìn chung, bạn sử dụng đoạn mã có sách vào chương trình hay tài liệu Bạn khơng cần phải xin phép bạn cần chép đoạn mã quan trọng Ví dụ, bạn khơng cần phải xin phép sử dụng hay nhiều đoạn mã sách vào chương trình mình, bán hay phân phối CD-ROM chứa ví dụ từ sách O’Reilly, trả lời câu hỏi hay cách viện dẫn từ sách Nhưng việc kết hợp nhiều đoạn mã quan trọng từ sách vào hồ sơ sản phẩm bạn càn phải cho phép Chúng đánh giá cao ghi nhận, không bắt buộc Một ghi nhận bao gồm tựa đề, tên tác giả, nhà xuất mã ISBN sách Ví dụ: “A Whirlwind Tour of Python by Jake VanderPlas (O’Reilly) Copyright 2016 O’Reilly Media, Inc., 978-1-491-96465-1.” Nếu bạn cảm thấy việc sử dụng đoạn mã nằm ngồi cho phép trên, đừng ngần ngại liên lạc với qua địa permissions@oreilly.com Cài đặt số vấn đề thực tế Việc cài đặt Python thư viện cho phép tính tốn khoa học đơn giản cho dù bạn sử dụng Windows, Linux hay Mac OS X Phần đưa số cân nhắc thiết lập máy tính Python Python Cuốn sách sử dụng cú pháp Python 3, chứa cải tiến ngơn ngữ khơng tương thích với phiên x Python Mặc dù Python 3.0 mắt lần đầu vào năm 2008, phải lâu chấp nhận, đặc biệt cộng đồng nhà khoa học phát triển website Lý cần thời gian để gói cơng cụ thiết yếu tương thích với ngơn ngữ Tuy nhiên, từ đầu năm 2014, phiên ổn định công cụ quan trọng bậc hệ sinh thái khoa học liệu hoàn tồn tương thích với Python 3, lý mà sách sử dụng cú pháp Python Dù trường hợp đó, đa số đoạn mã sách hoạt động mà không cần phải chỉnh sửa Python 2: trường hợp có cú pháp khơng tương thích với Py2, tơi cố gắng lưu ý cách rõ ràng Cài đặt với conda Có nhiều cách để cài đặt Python, cách mà muốn đề xuất (đặc biệt bạn muốn sử dụng công cụ khoa học liệu nói trên) thơng qua phân phối đa tảng Anaconda Anaconda có hai dạng: Miniconda cung cấp trình thơng dịch Python, với cơng cụ dòng lệnh gọi conda hoạt động trình quản lý gói đa tảng hướng đến gói Python, tương tự cơng cụ apt yum quen thuộc với người dùng Linux Anaconda bao gồm Python conda, thêm vào gói cài đặt sẵn hướng tới tính tốn khoa học Tất gói kèm theo Anaconda cài đặt cách thủ cơng Miniconda, lý này, tơi khun bạn nên bắt đầu với Miniconda Bắt đầu việc tải xuống cài đặt Miniconda (hãy bạn chọn phiên cho Python 3) sau cài đặt IPython: [~] $ conda install ipython-notebook Để biết thêm thông tin conda, bao gồm thông tin tạo lập sử dụng môi trường conda, tham khảo tài liệu Miniconda liên kết “Triết lý” Python Những người yêu thích Python thường nhanh chóng Python “trực quan”, “đẹp đẽ” hay “thú vị” Tơi có xu hướng đồng ý, nhận đẹp, trực quan, thú vị thường với quen thuộc Nhưng người quen với ngôn ngữ khác, nhận xét hoa mỹ có phần tự mãn Tuy nhiên, tơi hy vọng bạn cho Python hội, bạn thấy dấu ấn đến từ đâu Và bạn thật muốn sâu tìm hiểu triết lý lập trình, thứ thu hút người muốn sử dụng thục sức mạnh lập trình Python, điều thú vị nho nhỏ tồn trình thơng dịch Python Hãy nhắm mắt lại, ngẫm nghĩ chút, chạy dòng lệnh import this In [1]: import this The Zen of Python, by Tim Peters Beautiful is better than ugly Explicit is better than implicit Simple is better than complex Complex is better than complicated Flat is better than nested Sparse is better than dense Readability counts Special cases aren't special enough to break the rules Although practicality beats purity Errors should never pass silently Unless explicitly silenced In the face of ambiguity, refuse the temptation to guess There should be one and preferably only one obvious way to it Although that way may not be obvious at first unless you're Dutch Now is better than never Although never is often better than *right* now If the implementation is hard to explain, it's a bad idea If the implementation is easy to explain, it may be a good idea Namespaces are one honking great idea let's more of those! Bản dịch: Đẹp tốt xấu Rõ ràng tốt che đậy Đơn giản tốt phức tạp Phức tạp tốt rắc rối Dàn phẳng tốt lồng Thưa tốt dày Dễ đọc Trường hợp đặc biệt đủ phá vỡ quy tắc Mặc dù thực tế đè bẹp nguyên Không lặng lẽ bỏ qua lỗi Trừ phi bắt im lặng Trước điều mơ hồ, từ chối cám dỗ Nên có một, tốt cách để làm điều Mặc dù ban đầu không rõ ràng trừ bạn người Hà Lan Bây tốt không Mặc dù không thường tốt “ngay” lúc Nếu khó giải thích cách thực hiện, ý tưởng tồi Nếu dễ dàng giải thích được, ý tưởng hay Khơng gian tên ý tưởng tuyệt vời, làm nhiều hơn! Với lưu ý trên, bắt đầu hành trình với ngơn ngữ Python! Cách để khởi chạy đoạn mã Python Python ngôn ngữ linh hoạt, có nhiều cách để sử dụng tùy vào nhiệm vụ cụ thể Một điều để phân biệt Python với ngơn ngữ lập trình khác ngơn ngữ thơng dịch (interpreted) khơng phải biên dịch (compiled) Có nghĩa thực thi dịng lệnh, điều cho phép lập trình tương tác theo cách mà ta làm trực tiếp ngôn ngữ biên dịch Fortran, C, hay Java Phần giới thiệu bốn cách để khởi chạy đoạn mã Python: trình thơng dịch Python, trình thơng dịch IPython, thơng qua tập lệnh độc lập, Jupyter notebook Trình thơng dịch Python (Python interpreter) Cách đơn giản để khởi chạy đoạn mã Python thực thi dòng lệnh với trình thơng dịch Python Trình thơng dịch Python khởi động cách cài đặt ngơn ngữ Python (xem phần trước) nhập python vào môi trường dòng lệnh (command prompt) (Terminal hệ điều hành Mac OS X Unix/Linux, ứng dụng Command Prompt Windows): $ python Python 3.5.1 |Continuum Analytics, Inc.| (default, Dec Type "help", "copyright", "credits" or "license" for more >>> Với trình thơng dịch này, bạn nhập thực thi dòng lệnh Dưới ví dụ sử dụng trình thơng dịch máy tính đơn giản, thực phép tính gán giá trị cho biến: >>> + >>> x = >>> x * 15 Trình thơng dịch làm cho việc chạy thử đoạn mã Python nhỏ chuỗi hành động ngắn trở nên tiện lợi Trình thơng dịch IPython (The IPython interpreter) Nếu dành nhiều thời gian với trình thơng dịch Python đơn giản, bạn nhận thấy thiếu nhiều tính mơi trường phát triển tích hợp hồn chỉnh Một trình thơng dịch thay có tên IPython cài đặt với Anaconda, bao gồm loạt cải tiến thuận tiện cho việc thông dịch Python Có thể khởi động cách nhập lệnh ipython vào mơi trường dịng lệnh: Chuỗi đơn giản khớp trực tiếp Nếu xây dựng biểu thức chỉnh quy với chuỗi ký tự chữ số, khớp với chuỗi đó: In [50]: regex = re.compile('ion') regex.findall('Great Expectations') Out [50]: ['ion'] Một số ký tự mang ý nghĩa đặc biệt Trong chữ chữ số đơn giản khớp trực tiếp số ký tự mang ý nghĩa đặc biệt biểu thức quy Bao gồm: ^ $ * + ? { } [ ] \ | ( ) Ta sớm tìm hiểu ý nghĩa số ký tự Trước đó, bạn nên biết muốn khớp trực tiếp với ký tự này, bạn bỏ qua ý nghĩa chúng dấu gạch chéo ngược (\): In [51]: regex = re.compile(r'\$') regex.findall("the cost is $20") Out [51]: ['$'] Chữ r đứng đầu r'\$' biểu thị chuỗi thô, chuỗi Python thông thường, dấu gạch chéo ngược sử dụng để biểu thị ký tự đặc biệt Ví dụ, khoảng trống (tab) biểu diễn \t: In [52]: print('a\tb\tc') a b c Sự thay khơng thực chuỗi thơ: In [53]: print(r'a\tb\tc') a\tb\tc Vì lý này, sử dụng dấu gạch chéo ngược biểu thức quy nên sử dụng chuỗi thơ 87 Ký tự đặc biệt khớp với nhóm ký tự Trong biểu thức quy, ngồi việc bỏ qua ý nghĩa ký tự đặc biệt để biến chúng thành ký tự thường, ký tự \ cịn sử dụng để trao cho ký tự thường ý nghĩa đặc biệt Những ký tự đặc biệt khớp với nhóm ký tự xác định mà ta thấy trước Trong đoạn mã lọc địa email lúc trước, ta sử dụng ký tự \w, dấu hiệu đặc biệt khớp với ký tự chữ số Tương tự vậy, ví dụ đơn giản split(), ta gặp \s, dấu hiệu đặc biệt biểu thị ký tự khoảng trắng Kết hợp chúng lại với nhau, ta tạo biểu thức quy khớp với hai chữ cái/chữ số có khoảng trắng nằm giữa: In [54]: regex = re.compile(r'\w\s\w') regex.findall('the fox is years old') Out [54]: ['e f', 'x i', 's 9', 's o'] Ví dụ bắt đầu cho thấy sức mạnh tính linh hoạt biểu thức quy Bảng sau liệt kê số ký tự hữu ích: Ký tự Mô tả \d Khớp tất ký tự chữ số \D Khớp tất ký tự chữ số \s Khớp tất khoảng trắng \S Khớp tất ký tự khoảng trắng \w Khớp tất ký tự chữ số \W Khớp tất ký tự chữ số Đây danh sách mô tả đầy đủ; để biết thêm chi tiết, xem tài liệu cú pháp biểu thức quy Python Dấu ngoặc vng khớp với nhóm ký tự tùy chỉnh Nếu nhóm ký tự dựng sẵn khơng đủ cụ thể cho bạn, sử dụng dấu ngoặc vuông để định ký tự mà bạn muốn Ví dụ: đoạn mã sau khớp với tất nguyên âm viết thường: 88 In [55]: regex = re.compile('[aeiou]') regex.split('consequential') Out [55]: ['c', 'ns', 'q', '', 'nt', '', 'l'] Tương tự, sử dụng dấu gạch ngang để định phạm vi: ví dụ, [a-z] khớp với chữ viết thường [1-3] khớp với , Ví dụ, bạn cần trích xuất từ tài liệu mã số cụ thể gồm chữ in hoa chữ số đứng sau Có thể làm sau: In [56]: regex = re.compile('[A-Z][0-9]') regex.findall('1043879, G2, H6') Out [56]: ['G2', 'H6'] Ký tự đại diện khớp với ký tự lặp lặp lại Giả sử bạn muốn lọc chuỗi gồm ba ký tự chữ số liên tiếp, viết: \w\w\w Bởi nhu cầu phổ biến nên có cú pháp để khớp với ký tự lặp lặp lại: ngoặc nhọn chứa số bên trong: In [57]: regex = re.compile(r'\w{3}') regex.findall('The quick brown fox') Out [57]: ['The', 'qui', 'bro', 'fox'] Ngoài cịn có ký tự đánh dấu khớp với số lần lặp Ví dụ, ký tự + biểu thị đứng trước lặp lại nhiều lần: In [58]: regex = re.compile(r'\w+') regex.findall('The quick brown fox') Out [58]: ['The', 'quick', 'brown', 'fox'] Dưới bảng dấu hiệu lặp có sẵn để sử dụng biểu thức quy: Ký tự ? Mô tả Thực thể đứng trước khớp lần Ví dụ ab? khớp với a ab * Thực thể đứng trước khớp nhiều lần ab* khớp với a, ab ,abb, abbb + Thực thể đứng trước khớp nhiều lần ab+ khớp với ab, abb, abbb a {n} Thực thể đứng trước khớp n lần ab{2} khớp với abb 89 {m,n} Thực thể đứng trước khớp m tới n lần ab{2,3} khớp với abb abbb Với kiến thức này, quay trở lại lọc email chúng ta: In [59]: email = re.compile(r'\w+@\w+\.[a-z]{3}') Giờ ta hiểu ý nghĩa đoạn mã này: ta muốn nhiều ký tự chữ số (\w+), dấu (@), nhiều ký tự chữ số (\w+), dấm chấm (\ - Lưu ý cần thiết dấu gạch chéo ngược), ba chữ viết thường Nếu muốn sửa đổi đoạn mã để khớp với địa email Obama, ta làm cách sử dụng ký hiệu dấu ngoặc vuông: In [60]: email2 = re.compile(r'[\w.]+@\w+\.[a-z]{3}') email2.findall('barack.obama@whitehouse.gov') Out [60]: ['barack.obama@whitehouse.gov'] Ta thay đổi \w+ thành [\w.]+, khớp với tất ký tự chữ số dấu chấm Với biểu thức này, khớp với nhiều loại địa email (mặc dù khơng phải tất - liệu bạn thiếu sót biểu thức khơng?) Dấu ngoặc đơn nhóm cần trích xuất Đối với biểu thức quy tổng hợp biểu thức lọc email trên, ta thường muốn trích xuất thành phần chúng toàn kết Điều thực cách sử dụng dấu ngoặc đơn để nhóm kết quả: In [61]: z]{3})') In [62]: email3 = re.compile(r'([\w.]+)@(\w+)\.([a- text = "To email Guido, try guido@python.org"\ "or the older address guido@google.com." email3.findall(text) Out [62]: [('guido', 'python', 'org'), ('guido', 'google', 'com')] Như ta thấy, việc nhóm trích xuất danh sách thành phần địa email 90 Ta đặt tên cho thành phần trích xuất cú pháp (?P), trường hợp đó, nhóm trích xuất dạng từ điển Python: In [63]: email4 = re.compile(r'(?P[\w.]+)@(?P\w+)'\ '\.(?P[a-z]{3})') match = email4.match('guido@python.org') match.groupdict() Out [63]: {'domain': 'python', 'suffix': 'org', 'user': 'guido'} Kết hợp ý tưởng (cũng số cú pháp regexp mạnh mẽ khác chưa đề cập đây) cho phép trích cách xuất linh hoạt nhanh chóng thơng tin từ chuỗi Python Một số tài nguyên biểu thức quy Những kiến thức tìm hiểu phần nhỏ chủ đề rộng lớn Nếu muốn tìm hiểu thêm, đề xuất tài nguyên sau: Tài liệu gói re Python Tơi nhận thấy nhanh chóng quên cách sử dụng biểu thức thông thường lần sử dụng chúng Bây có tảng vững chắc, tơi nhận trang tài nguyên vô quý giá để ôn lại ý nghĩa ký tự chuỗi cụ thể biểu thức quy Tài liệu thức Python biểu thức quy (Regular Expression HOWTO) Một cách tiếp cận chi tiết biểu thức quy Làm chủ biểu thức quy (Mastering Regular Expressions - O’Reilly, 2006) Một sách 500 trang chủ đề Nếu muốn tài liệu thực hoàn chỉnh chủ đề này, tài nguyên cho bạn Để biết số ví dụ thao tác chuỗi biểu thức quy hoạt động quy mô lớn hơn, tham khảo “Pandas: Định hướng liệu theo cột gắn nhãn” trang 94, xem xét áp dụng loại biểu thức bảng liệu chuỗi gói Pandas 91 Một nhìn tổng qt công cụ khoa học liệu Nếu muốn có bước đệm xa việc sử dụng Python tính tốn khoa học khoa học liệu, có số gói làm điều trở nên dễ dàng Phần giới thiệu, đưa nhìn tổng quát vài công cụ quan trọng cho bạn khái niệm tính ứng dụng chúng Nếu sử dụng môi trường Anaconda Miniconda đề xuất từ đầu sách này, bạn cài đặt gói liên quan dịng lệnh đây: $ conda install numpy scipy pandas matplotlib scikitlearn Hãy điểm qua cơng cụ số NumPy: Số học Python NumPy cung cấp cách hiệu để lưu trữ thao tác mảng dày đặc đa chiều Python Các tính quan trọng NumPy là: Nó cung cấp cấu trúc ndarray , cho phép lưu trữ thao tác hiệu véc-tơ, ma trận liệu chiều cao Nó cung cấp cú pháp dễ đọc hiệu cho việc vận hành liệu này, từ số học phần tử đơn giản phép tốn đại số tuyến tính phức tạp Trong trường hợp đơn giản nhất, mảng NumPy trông giống danh sách Python Ví dụ, mảng chứa số phạm vi từ đến (so sánh với hàm tích hợp range() Python): In [1]: import numpy as np x = np.arange(1, 10) x Out [1]: array([1, 2, 3, 4, 5, 6, 7, 8, 9]) Mảng NumPy cung cấp kho lưu trữ liệu hiệu quả, phép tính hiệu liệu Ví dụ, để bình phương phần tử mảng, ta áp dụng tốn tử ** trực tiếp vào mảng: In [2]: x ** Out [2]: array([ 1, 4, 9, 16, 25, 36, 49, 64, 81]) 92 So sánh điều với danh sách tổng quát kiểu Python rườm rà cho kết quả: In [3]: [val ** for val in range(1, 10)] Out [3]: [1, 4, 9, 16, 25, 36, 49, 64, 81] Không giống danh sách Python (bị giới hạn chiều), mảng NumPy mảng đa chiều Ví dụ, định hình lại mảng x thành mảng 3x3: In [4]: M = x.reshape((3, 3)) M Out [4]: array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) Mảng hai chiều đại diện ma trận NumPy biết cách thực hiệu thao tác điển hình ma trận Ví dụ: bạn tính ma trận chuyển vị cách sử dụng T: In [5]: M.T Out [5]: array([[1, 4, 7], [2, 5, 8], [3, 6, 9]]) tích vector ma trận np.dot: In [6]: np.dot(M, [5, 6, 7]) Out [6]: array([ 38, 92, 146]) chí phép tính phức tạp phân tách trị riêng: In [7]: np.linalg.eigvals(M) Out [7]: array([ 1.61168440e+01, 1.30367773e-15]) -1.11684397e+00, - Thao tác đại số tuyến tính làm sở cho nhiều phân tích liệu đại, đặc biệt nói đến lĩnh vực học máy khai thác liệu Để biết thêm thông tin NumPy, xem “Tài nguyên cho việc học thêm” trang 98 93 Pandas: Dữ liệu định hướng theo cột gắn nhãn Pandas gói nhiều so với NumPy, thực tế xây dựng dựa Những Pandas cung cấp giao diện gắn nhãn cho liệu đa chiều, dạng đối tượng DataFrame tạo cảm giác quen thuốc với người dùng R ngôn ngữ liên quan DataFrames Pandas trông giống này: In [8]: import pandas as pd df = pd.DataFrame({'label': ['A', 'B', 'C', 'A', 'B', 'C'], 'value': [1, 2, 3, 4, 5, 6]}) df Out [8]: label value A 1 B 2 C 3 A 4 B 5 C Giao diện Pandas cho phép bạn thực việc chọn cột theo tên: In [9]: df['label'] Out [9]: A B C A B C Name: label, dtype: object Áp dụng hoạt động chuỗi lên mục chuỗi: In [10]: df['label'].str.lower() Out [10]: a b c 94 a b c Name: label, dtype: object Tính tổng với mục số học: In [11]: df['value'].sum() Out [11]: 21 Và, có lẽ quan trọng nhất, thực phép nối nhóm kiểu sở liệu cách hiệu quả: In [12]: df.groupby('label').sum() Out [12]: value Label A B C Trong dịng, ta tính tổng tất đối tượng chia sẻ nhãn, dài dòng (và hiệu nhiều) so với cách sử dụng công cụ cung cấp NumPy Python Để biết thêm thông tin việc sử dụng Pandas, xem tài nguyên liệt kê “Tài nguyên cho việc học thêm” trang 98 Matplotlib: khoa học trực quan theo phong cách MATLAB Matplotlib gói khoa học trực quan phổ biến Python Ngay người đề xướng thừa nhận giao diện đơi rườm rà, thư viện mạnh mẽ để tạo loạt biểu đồ Để sử dụng Matplotlib, ta bắt đầu cách bật chế độ sổ ghi chép (để sử dụng Jupyter notebook) sau nhập gói vào tên plt: In [13]: # khởi chạy sử dụng Jupyter notebook %matplotlib notebook In [14]: import matplotlib.pyplot as plt plt.style.use('ggplot') # tạo biểu đồ theo kiểu R ggplot 95 Bây giờ, để tạo số liệu (tất nhiên mảng NumPy) vẽ kết quả: In [15]: x = np.linspace(0, 10) đến 10 y = np.sin(x) plt.plot(x, y); # phạm vi giá trị từ # sin giá trị # biểu đồ đường Nếu chạy đoạn mã trực tiếp, bạn thấy biểu đồ tương tác cho phép bạn xoay, thu phóng cuộn để khám phá liệu Đây ví dụ đơn giản biểu đồ Matplotlib; để biết phạm vi rộng lớn loại biểu đồ có sẵn, xem thư viện trực tuyến Matplotlib, tài liệu tham khảo khác liệt kê “Tài nguyên cho việc học thêm” trang 98 SciPy: Python khoa học SciPy tập hợp hàm khoa học xây dựng NumPy Ban đầu tập hợp trình bao bọc Python biết đến thư viện Fortran tiếng dùng để tính tốn số học phát triển từ Gói xếp tập hợp mô-đun con, mô-đun thực số lớp thuật toán số học Đây ví dụ khơng đầy đủ số mơ-đun quan khoa học liệu: 96 scipy.fftpack Biến đổi Fourier nhanh scipy.integrate Thuật toán số học scipy.interpolate Nội suy số học scipy.linalg Hàm đại số tuyến tính scipy.opt Tối ưu hóa số lượng chức scipy.spzzy Lưu trữ ma trận thưa đại số tuyến tính scipy.stats Hàm phân tích thống kê Ví dụ: xét nội suy đường cong trơn số liệu: In [16]: from scipy import interpolate # chọn điểm khoảng 10 x = np.linspace(0, 10, 8) y = np.sin(x) # tạo hàm nội suy bậc ba func = interpolate.interp1d(x, y, kind='cubic') # nội suy lưới với 1.000 điểm x_interp = np.linspace(0, 10, 1000) y_interp = func(x_interp) # vẽ đồ thị từ kết plt.figure() # đồ thị plt.plot(x, y, 'o') plt.plot(x_interp, y_interp); 97 Những thấy nội suy trơn điểm Các gói khoa học liệu khác Được xây dựng dựa công cụ loạt gói khoa học liệu khác, bao gồm công cụ chung Scikit-Learn cho học máy, Scikit-Image để phân tích hình ảnh StatsModels cho mơ hình thống kê, gói dành riêng cho miền AstroPy cho thiên văn học vật lý thiên văn, NiPy cho hình ảnh thần kinh, nhiều Dù có gặp phải loại vấn đề khoa học, số học hay thống kê, ln có gói Python ngồi giúp bạn giải Tài nguyên cho việc học thêm Phần kết thúc chuyến tham quan với ngôn ngữ Python Tôi hy vọng bạn đọc đến đây, bạn có khái niệm cú pháp, ngữ nghĩa, hoạt động chức thiết yếu cung cấp ngôn ngữ Python, số khái niệm phạm vi công cụ cấu trúc mã mà bạn khám phá thêm Tơi cố gắng bao quát phần cú pháp ngơn ngữ Python hữu ích cho nhà khoa học liệu sử dụng Python, 98 hướng dẫn hoàn chỉnh Nếu bạn muốn tìm hiểu sâu ngơn ngữ Python cách sử dụng cách hiệu quả, số tài nguyên mà đề xuất: Thông thạo Python (Fluent Python) Luciano Ramalho Đây sách O 'Reilly tuyệt vời tìm hiểu thói quen phong cách tốt cho Python, bao gồm việc tận dụng tối đa thư viện chuẩn Bắt đầu với Python (Dive Into Python) Mark Pilgrim Đây sách trực tuyến miễn phí cung cấp hướng dẫn ngôn ngữ Python Khổ luyện Python (Learn Python the Hard Way) Zed Shaw Cuốn sách tiếp cận theo cách “học từ thực tiễn” tập trung vào việc phát triển thứ kỹ hữu ích lập trình viên: Tìm kiếm thứ mà bạn khơng biết Google Tài liệu tham khảo thiết yếu Python (Python Essential Reference) David Beazley Con quái vật 700 trang viết tốt bao gồm hầu hết thứ cần biết ngôn ngữ Python thư viện tích hợp Để có hướng dẫn tập trung vào ứng dụng Python, tìm đọc Sách công thức Python (Python Cookbook) Beazley Để tìm hiểu thêm cơng cụ Python cho khoa học liệu tính tốn khoa học , tơi khuyên bạn nên đọc sách sau: Cẩm nang khoa học liệu Python (The Python Data Science Handbook) tơi Cuốn sách bắt đầu xác nơi cơng trình dừng lại, cung cấp hướng dẫn tồn diện cơng cụ thiết yếu hà sa số công cụ khoa học liệu Python, từ việc khai thác điều khiển liệu học máy Tính tốn hiệu Vật lý (Effective Computation in Physics) Katie Huff Anthony Scopatz Cuốn sách áp dụng cho người không giới nghiên cứu vật lý Đây hướng dẫn bước, điện toán khoa 99 học, bao gồm phần giới thiệu tuyệt vời nhiều công cụ đề cập sách Phân tích liệu với Python (Python for Data Analysis) Wes McKinney, cha để gói Pandas Cuốn sách nói chi tiết thư viện Pandas, cung cấp thông tin hữu ích số cơng cụ khác cho phép Cuối cùng, để có nhìn rộng vượt khỏi sách này, đề xuất thứ sau: Tài nguyên Python O’Reilly O 'Reilly có số sách tuyệt vời Python chủ đề chuyên ngành giới Python PyCon, SciPy PyData Các hội nghị PyCon, SciPy PyData thu hút hàng ngàn người tham dự năm lưu trữ phần lớn chương trình họ năm dạng video trực tuyến miễn phí Những thứ biến thành tài nguyên đáng kinh ngạc để tìm hiểu Python, gói Python chủ đề liên quan Hãy tìm kiếm video thuyết trình hướng dẫn: thuyết trình thường ngắn hơn, điểm qua gói giao diện cho gói cũ Các hướng dẫn lên tới vài giờ, bao gồm việc sử dụng công cụ đề cập công cụ khác 100 Giới thiệu tác giả Jake VanderPlas người dùng nhà phát triển lâu năm khoa học Python Ông làm giám đốc nghiên cứu liên ngành Đại học Washington, thực dự án nghiên cứu thiên văn học riêng dành thời gian tư vấn cho nhà khoa học địa phương từ nhiều lĩnh vực Đôi lời bạn đọc Bản dịch cung cấp miễn phí trituenhantao.io trang web chia sẻ thơng tin, kiến thức, kinh nghiệm học tập triển khai chương trình dự án sử dụng trí tuệ nhân tạo giới Chúng tơi cố gắng việc truyền tải kiến thức dạng đơn giản thực tế nhất, với ngôn ngữ dễ hiểu tất người Chúng vui mừng giới thiệu đến bạn sách “Dạo vòng Python” tác giả Jake VanderPlas Hi vọng sau sách bạn tự trang bị cho kiến thức kỹ cần thiết để sử dụng thành tạo ngôn ngữ đầy quyền – Python Đối với bạn quan tâm đến Trí tuệ nhân tạo, sách bàn đạp để bạn lĩnh hội tốt chủ đề chuyên sâu lĩnh vực Hãy thường xuyên truy cập ủng hộ website https://trituenhantao.io để có câu chuyện thú vị bạn nhé! 101 ... sai sót mã 14 Ngữ nghĩa Python bản: Biến đối tượng Phần bắt đầu đề cập đến ngữ nghĩa ngôn ngữ Python Trái ngược với cú pháp đề cập phần trước, ngữ nghĩa ngôn ngữ liên quan đến ý nghĩa câu lệnh... liệu văn Hướng dẫn nhanh Cú pháp ngôn ngữ Python Python ban đầu phát triển ngôn ngữ giảng dạy, việc dễ sử dụng cú pháp rõ ràng giúp cho đón nhận người chuyên gia Cú pháp Python rõ ràng tới mức... thứ đối tượng Python cho phép số cấu trúc ngôn ngữ thuận tiện Ngữ nghĩa Python bản: Toán tử Trong phần trước, ta bắt đầu xem xét ngữ nghĩa biến đối tượng Python; phần sâu vào ngữ nghĩa tốn tử