Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 101 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
101
Dung lượng
4,15 MB
Nội dung
BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC KINH TẾ TP.HCM DỰ ÁN KẾT THÚC HỌC PHẦN MÔN: TRỰC QUAN HOÁ VÀ HỆ THỐNG THÔNG TIN ĐỊA LÝ Đề tài: Biên dịch sách tài liệu “Python for Data Analysis” Tên thành viên: Trần Ngọc Tuyền – 31221023605 Huỳnh Bảo Ngọc Vy – 31221021378 Lớp: IV001 Giảng viên hướng dẫn: Nguyễn Khánh Duy Thành phố Hồ Chí Minh, ngày 28, tháng 12 năm 2023 PHÂN CHIA CÔNG VIỆC HỌ VÀ TÊN MSSV CÔNG VIỆC MỨC ĐỘ HOÀN THÀNH Trần Ngọc Tuyền 31221023605 Trang bìa 100% Lời mở đầu Huỳnh Bảo Ngọc Vy 31221021378 Chương 1 & 11 100% Mục lục Chương 6 & 7 Kết luận Tài liệu tham khảo MỤC LỤC LỜI MỞ ĐẦU 1 CHƯƠNG 1: MỞ ĐẦU SƠ BỘ 2 CUỐN SÁCH NÀY NÓI VỀ ĐIỀU GÌ? 2 TẠI SAO PYTHON CHO PHÂN TÍCH DỮ LIỆU? 2 Python như chất kết dính 3 Giải quyết vấn đề "Hai ngôn ngữ" 3 Tại sao không phải là Python? 3 NHỮNG THƯ VIỆN PYTHON THIẾT YẾU 4 NumPy 4 pandas 4 matplotlib 5 IPython 5 SciPy 6 CÀI ĐẶT VÀ THIẾT LẬP 6 Windows 7 Apple OS X 8 GNU/Linux 10 Python 2 and Python 3 11 Integrated Development Environments (IDEs) 11 CỘNG ĐỒNG VÀ HỘI NGHỊ 11 ĐIỀU HƯỚNG CỦA CUỐN SÁCH 12 Ví dụ về mã 12 Dữ liệu dùng cho các ví dụ 12 Bộ quy ước chung 13 Thuật ngữ 13 SỰ CÔNG NHẬN 13 CHƯƠNG 6: TẢI DỮ LIỆU, LƯU TRỮ VÀ ĐỊNH DẠNG TẬP TIN 15 ĐỌC VÀ GHI DỮ LIỆU Ở ĐỊNH DẠNG VĂN BẢN 15 Đọc tập tin văn bản theo từng phần 19 Ghi dữ liệu ra định dạng văn bảng .20 Làm việc thủ công với định dạng được phân tách 22 Dữ liệu JSON 23 XML và HTML: Quét web 24 Phân tích cú pháp XML bằng lxml.objectify 27 ĐỊNH DẠNG DỮ LIỆU NHỊ PHÂN 29 Sử dụng định dạng HDF5 29 Đọc tệp Microsoft Excel 30 TƯƠNG TÁC VỚI HTLM VÀ API WEB 30 TƯƠNG TÁC VỚI CƠ SỞ DỮ LIỆU 32 Lưu trữ và tải dữ liệu trong cơ sở dữ liệu MongoDB 33 CHƯƠNG 7: SẮP XẾP DỮ LIỆU: LÀM SẠCH, CHUYỂN ĐỔI, HỢP NHẤT, ĐỊNH HÌNH LẠI .34 KẾT HỢP VÀ HỢP NHẤT CÁC TẬP DỮ LIỆU 34 Hợp nhất DataFrame kiểu cơ sở dữ liệu 34 Hợp nhất chỉ mục 38 Ghép nối dọc theo một trục 40 Kết hợp dữ liệu với sự chồng chéo 44 ĐỊNH DẠNG LẠI VÀ XOAY VÒNG 45 Định hình lại bằng lập chỉ mục phân cấp 45 Xoay định dạng “dài” sang “rộng” 47 CHUYỂN ĐỔI DỮ LIỆU 49 Loại bỏ trùng lặp 49 Chuyển đổi dữ liệu bằng hàm hoặc ánh xạ 50 Thay thế giá trị 51 Đổi tên chỉ mục trục .52 Sự rời rạc hóa và Binning 53 Phát hiện và lọc các ngoại lệ 55 Hoán vị và lấy mẫu ngẫu nhiên 56 Chỉ báo tính toán/Biến giả .57 THAO TÁC CHUỖI 59 Phương thức đối tượng chuỗi 59 Biểu thức chính quy 60 Các hàm chuỗi được vector hóa trong pandas 63 VÍ DỤ: CƠ SỞ DỮ LIỆU THỰC PHẨM CỦA USDA 65 CHƯƠNG 11: CÁC ỨNG DỤNG DỮ LIỆU TÀI CHÍNH VÀ KINH TẾ 70 CHỦ ĐỀ TRỘN DỮ LIỆU 70 Sắp xếp chuỗi thời gian và mặt cắt ngang 70 Hoạt động với chuỗi thời gian có tần số khác nhau 72 Sử dụng chu kỳ thay vì dấu thời gian 74 Thời gian trong ngày và lựa chọn dữ liệu “as of” 76 Ghép nối các nguồn dữ liệu với nhau 78 Chỉ số trả về và lợi nhuận tích lũy 80 BIẾN ĐỔI NHÓM VÀ PHÂN TÍCH 82 Nhóm yếu tố rủi ro 84 Phân tích thập phân và tứ phân vị 85 CÁC ỨNG DỤNG VÍ DỤ KHÁC .87 Phân tích biên giới tín hiệu 88 Hợp đồng tương lai luân chuyển 90 Tương quan luân chuyển và hồi quy tuyến tính 93 KẾT LUẬN 95 LỜI MỞ ĐẦU Dịch thuật đóng vai trò quan trọng trong đời sống xã hội và giao lưu văn hoá của con người, là chiếc cầu nối giúp con người vượt qua những khác biệt về ngôn ngữ, văn hoá và các kiến thức chuyên sâu từ nhiều nguồn tài liệu khác nhau Và hôm nay, nhóm chúng em xin phép được biên dịch quyển sách “Python for Data Analysis: Data Wrangling with Pandas, Numpy, and IPython” được viết bởi tác giả Wes McKinney Cuốn sách này cung cấp đầy đủ kiến thức cũng như rất nhiều ví dụ dễ hiểu để đọc và thực hành phân tích dữ liệu với các thư viện pandas và numpy Đặc biệt, tác giả Wes McKinney chính là người tạo ra thư viện pandas, nên cuốn sách được trình bày rất dễ hiểu ngay cả với những người chỉ mới bắt đầu làm quen với Python Bởi vì cuốn sách có phần giới thiệu về các công cụ khoa học dữ liệu sử dụng Python Hơn nữa trong quyển sách Python này, bạn cũng sẽ khám phá được phiên bản mới nhất của NumPy, IPython, Pandas và Jupyter Ở đây nhóm chúng em xin được phép biên dịch bốn chương Chương 1 về các lý thuyết cơ bản mở đầu sơ bộ giới thiệu về sách và các hàm cơ bản sẽ được hướng dẫn trong sách Chương 6 về các cách tải dữ liệu, lưu trữ và cách định dạng tập tin Ở chương 7 về cách sắp xếp dữ liệu làm sạch, chuyển đổi, hợp nhất và định hình lại dữ liệu Và trong chương cuối là chương 11 là các ứng dụng dữ liệu tài chính và kinh tế sẽ được mô tả chính trong chương này Bài dự án này chúng em đã cố gắng biên dịch sát nhất có thể, tuy nhiên trong quá trình làm dự án, vì biên dịch sách là một bài khá mới với chúng em nên có thể sẽ còn nhiều sai sót khi chúng em phiên dịch các từ chuyên ngành của môn học, mong thầy sẽ thông cảm cho chúng em Chúng em xin cảm ơn quá trình dạy về môn học Trực quan và cụ thể là python của thầy rất nhiều, đó cũng chính là nguồn cảm hứng cho chúng em lựa chọn quyển sách này 1 CHƯƠNG 1: MỞ ĐẦU SƠ BỘ CUỐN SÁCH NÀY NÓI VỀ ĐIỀU GÌ? Cuốn sách này đề cập đến những chi tiết cơ bản về thao tác, xử lý, làm sạch và xử lý dữ liệu trong Python Đây cũng là phần giới thiệu thực tế, hiện đại về tính toán khoa học bằng Python, được thiết kế riêng cho các ứng dụng sử dụng nhiều dữ liệu chuyên sâu Đây là một cuốn sách về các phần của ngôn ngữ và thư viện Python mà bạn sẽ cần để giải quyết một cách hiệu quả nhiều vấn đề phân tích dữ liệu Cuốn sách này không phải là một trình bày về các phương pháp phân tích sử dụng Python làm ngôn ngữ lập trình Khi tôi nói "dữ liệu", chính xác thì tôi đang ám chỉ đến điều gì? Trọng tâm chính là dữ liệu có cấu trúc, một thuật ngữ cố ý mơ hồ bao gồm nhiều loại dữ liệu phổ biến khác nhau, chẳng hạn như • Mảng đa chiều (ma trận) • Dữ liệu dạng bảng hoặc bảng tính trong đó mỗi cột có thể là một loại khác nhau (chuỗi, số, ngày tháng hoặc loại khác) Điều này bao gồm hầu hết các loại dữ liệu thường được lưu trữ trong cơ sở dữ liệu quan hệ hoặc các tệp văn bản được phân cách bằng tab hoặc dấu phẩy • Nhiều bảng dữ liệu có liên quan với nhau bằng các cột chính (cái gì là chính hoặc chính các khoá nước ngoài cho người dùng SQL) • Chuỗi thời gian cách đều hoặc không đều Đây không phải là một bản danh sách hoàn thiện Mặc dù nó có thể không phải lúc nào cũng rõ ràng, nhưng một tỷ lệ lớn các tập dữ liệu có thể được chuyển đổi thành dạng có cấu trúc phù hợp hơn cho việc phân tích và lập mô hình Nếu không, có thể tách các đặc điểm từ một tập dữ liệu thành một dạng có cấu trúc Ví dụ, một tập hợp các bài báo có thể được xử lý thành bảng tần số từ sau đó có thể được sử dụng để thực hiện phân tích cảm tính Hầu hết người dùng các chương trình bảng tính như Microsoft Excel, có lẽ là công cụ phân tích dữ liệu được sử dụng rộng rãi nhất trên thế giới, sẽ không còn xa lạ với những loại dữ liệu này TẠI SAO PYTHON CHO PHÂN TÍCH DỮ LIỆU? Đối với nhiều người (bao gồm cả tôi), ngôn ngữ Python rất dễ yêu thích Kể từ lần xuất hiện đầu tiên vào năm 1991, Python trở thành một trong những ngôn ngữ lập trình, năng động nhất, cùng với Perl, Ruby, và nhiều ngôn ngữ khác Python và Ruby trở nên đặc biệt phổ biến trong những năm gần đây để xây dựng các trang web sử dụng nhiều khung web của họ, như Rails (Ruby) và Django (Python) Những ngôn ngữ như thế thường gọi là ngôn ngữ kịch bản như chúng có thể được sử dụng để viết các chương trình nhỏ nhanh và đơn giản, hoặc kịch bản Tôi không thích thuật ngữ "ngôn ngữ kịch bản" vì nó mang ý nghĩa rằng chúng không thể được sử dụng để xây dựng phần mềm mang nhiệm vụ quan trọng Trong số các ngôn ngữ được giải thích Python nổi bật bởi cộng đồng máy tính khoa học rộng lớn và năng động của nó Việc áp dụng Python cho tính toán khoa học trong cả các ứng dụng công nghiệp và nghiên cứu học thuật đã tăng lên đáng kể từ đầu những năm 2000 Để phân tích dữ liệu và tương tác, khám phá và trực quan hoá dữ liệu, Python chắc chắn sẽ đưa ra so sánh với nhiều ngôn ngữ và công cụ lập trình thương mại chuyên biệt miền khác 2 được sử dụng rộng rãi, chẳng hạn như R, MATLAB, SAS, Stata, và những thứ khác Trong những năm gần đây, Python đã cải thiện việc hỗ trợ thư viện (chủ yếu là Pandas) để thực hiện các tác vụ xử lý dữ liệu Kết hợp với điểm mạnh của Python trong lập trình đa mục đích, đây là một lựa chọn tuyệt vời như một ngôn ngữ duy nhất để xây dựng các ứng dụng lấy dữ liệu làm trung tâm Python như chất kết dính Một phần thành công của Python trong nền tảng điện toán khoa học là việc dễ dàng tích hợp mã C, C++, và FORTRAN Hầu hết các môi trường điện toán hiện đại đều có chung một bộ thư viện FORTRAN và C để thực hiện đại số tuyến tính, tối ưu hóa, tích hợp, biến đổi phạm vi nhanh và các thuật toán khác Câu chuyện này cũng đúng đối với nhiều công ty và các phòng thí nghiệm quốc gia đã sử dụng Python để gắn kết phần mềm kế thừa có giá trị 30 năm lại với nhau Hầu hết các chương trình bao gồm các phần nhỏ mã chiếm phần lớn thời gian, với một lượng lớn "mã keo" không chạy thường xuyên Trong nhiều trường hợp, thời gian thực thi mã keo không đáng kể; nỗ lực được đầu tư hiệu quả nhất trong việc tối ưu hóa các tắc nghẽn tính toán, đôi khi bằng cách chuyển mã sang một ngôn ngữ cấp thấp hơn như C Trong vài năm gần đây, dự án Cython (http://cython.org) đã trở thành một trong những cách được ưa thích để vừa tạo ra phần mở rộng được biên dịch nhanh cho Python và vừa tương tác với mã C và C++ Giải quyết vấn đề "Hai ngôn ngữ" Trong nhiều tổ chức, nó phổ biến để nghiên cứu, tạo nguyên mẫu, và thử nghiệm các ý tưởng mới bằng cách sử dụng một ngôn ngữ máy tính dành riêng cho miền chuyên biệt hơn như MATLAB hoặc R sau đó chuyển những ý tưởng đó để trở thành một phần của một hệ thống sản xuất lớn hơn được viết bằng Java, C#, hoặc C++ Mọi người đang ngày càng thấy rằng Python là một ngôn ngữ thích hợp không chỉ để nghiên cứu và tạo mẫu mà còn xây dựng các hệ thống sản xuất nữa Tôi tin rằng ngày càng nhiều công ty sẽ đi theo con đường này vì thường có lợi ích về mặt tổ chức quan trọng cho việc có cả nhà khoa học và kỹ thuật viên sử dụng cùng một bộ công cụ lập trình Tại sao không phải là Python? Mặc dù Python là một môi trường tuyệt vời để xây dựng các ứng dụng khoa học chuyên sâu vào tính toán và xây dựng hầu hết các loại hệ thống chung, nhưng có một số ứng dụng mà Python có thể ít phù hợp hơn Python là một ngôn ngữ lập trình được giải thích, nói chung hầu hết mã Python chạy chậm hơn so với mã viết bằng ngôn ngữ biên dịch như Java hoặc C++ Giống như thời gian lập trình viên thường có giá trị hơn thời gian CPU, nhiều người vui mừng khi thực hiện sự đánh đổi này Tuy nhiên, trong một ứng dụng với các yêu cầu về độ trễ rất thấp (ví dụ, một hệ thống giao dịch tần số cao), thời gian dành cho việc lập trình bằng ngôn ngữ cấp thấp hơn, năng suất thấp hơn như C++ để đạt được hiệu suất tối đa có thể là thời gian xứng đáng Python không phải là một ngôn ngữ lý tưởng cho các ứng dụng đa luồng, tính đồng bộ cao, đặc biệt là các ứng dụng có nhiều luồng liên kết với CPU Lý do cho điều này là nó có cái 3 được gọi là khoá phiên dịch toàn cầu (GIL), một cơ chế ngăn chặn trình thông dịch thực hiện nhiều hơn một lệnh mã byte Python cùng một lúc Các lý do kỹ thuật giải thích tại sao GIL tồn tại là vượt quá phạm vi của cuốn sách này, nhưng nhưng tính đến thời điểm viết bài này dường như không có khả năng GIL sẽ biến mất sớm Mặc dù đúng là trong nhiều ứng dụng xử lý dữ liệu lớn, một cụm máy tính có thể được yêu cầu để xử lý một tập dữ liệu trong khoảng thời gian hợp lý, nhưng vẫn có những tình huống cần một hệ thống đơn, xử lý đa luồng Điều này không có nghĩa là Python không thể thực thi mã song song, đa luồng thực sự; mã đó không thể được thực thi chỉ trong một tiến trình Python Ví dụ, dự án Cython có tính năng tích hợp dễ dàng với OpenMP, khung C cho tính toán song song, nhằm song song hóa các vòng lặp và do đó tăng tốc đáng kể các thuật toán số NHỮNG THƯ VIỆN PYTHON THIẾT YẾU Đối với những người không quen thuộc với hệ sinh thái khoa học Python và các thư viện được dùng xuyên suốt cuốn sách, tôi trình bày sơ lược sau đây về từng thư viện NumPy NumPy, viết tắt của Numerical Python, là gói nền tảng cho tính toán khoa học bằng Python Phần lớn cuốn sách này sẽ dựa trên NumPy và các thư viện được xây dựng dựa trên NumPy Ngoài những điều khác, nó còn cho thấy: • Một đối tượng mảng đa chiều nhanh chóng và hiệu quả ndarray • Các hàm để thực hiện các tính toán theo từng phần tử với mảng hoặc các phép toán giữa các mảng • Các công cụ để đọc và ghi bộ dữ liệu theo mảng vào đĩa • Phép toán đại số tuyến tính, biến đổi Fourier và tạo số ngẫu nhiên • Công cụ để tích hợp kết nối mã C, C++, và Fortran với Python Ngoài khả năng xử lý mảng nhanh mà NumPy bổ sung vào Python, một trong những mục đích chính của nó liên quan đến phân tích dữ liệu là làm nơi chứa chính cho dữ liệu được truyền giữa các thuật toán Đối với dữ liệu số, mảng NumPy là một cách lưu trữ và thao tác dữ liệu hiệu quả hơn nhiều so với các cấu trúc dữ liệu Python tích hợp khác Ngoài ra, các thư viện được viết bằng ngôn ngữ cấp thấp hơn, như C hoặc Fortran, có thể hoạt động trên dữ liệu được lưu trong mảng NumPy mà không cần sao chép bất kỳ dữ liệu nào pandas Pandas cung cấp các cấu trúc dữ liệu phong phú và các chức năng được thiết kế để làm việc với dữ liệu cấu trúc nhanh, dễ dàng và mang tính biểu cảm Như các bạn sẽ thấy, nó là một trong những yếu tố quan trọng giúp Python trở thành một môi trường phân tích dữ liệu mạnh và hiệu quả Đối tượng chính trong Pandas sẽ được sử dụng trong cuốn sách này là DataFrame, một cấu trúc dữ liệu hướng hai chiều với nhãn hàng và cột: >>> frame sex smoker day time size total_bill tip Female No Sun Dinner 2 Male No Sun Dinner 3 1 16.99 1.01 Male No Sun Dinner 3 2 10.34 1.66 3 21.01 3.5 4 4 23.68 3.31 Male No Sun Dinner 2 5 24.59 3.61 Female No Sun Dinner 4 6 25.29 4.71 Male No Sun Dinner 4 7 8.77 2 Male No Sun Dinner 2 8 26.88 3.12 Male No Sun Dinner 4 9 15.04 1.96 Male No Sun Dinner 2 10 14.78 3.23 Male No Sun Dinner 2 Pandas kết hợp các tính năng tính toán mảng hiệu suất cao của NumPy với khả năng thao tác dữ liệu linh hoạt của bảng tính và cơ sở dữ liệu quan hệ (chẳng hạn như SQL) Nó cung cấp chức năng lập chỉ mục tinh vi để làm cho nó dễ dàng định hình lại, cắt lát, thực hiện tổng hợp, và chọn các tập hợp con của dữ liệu Pandas là công cụ chính mà chúng ta sẽ dùng trong cuốn sách này Đối với người dùng tài chính, pandas có tính năng phong phú, tính năng chuỗi thời gian hiệu suất cao và các công cụ rất phù hợp để làm việc với dữ liệu tài chính Thực ra, ban đầu tôi đã thiết kế pandas như một công cụ lý tưởng cho các ứng dụng phân tích dữ liệu tài chính Đối với người dùng ngôn ngữ R để tính toán thống kê, tên DataFrame sẽ rất quen thuộc, vì đối tượng được đặt tên theo đối tượng R data.frame tương tự Tuy nhiên, chúng không giống nhau; Các chức năng được cung cấp bởi data.frame trong R về cơ bản là một tập hợp con nghiêm ngặt trong đó được cung cấp bởi DataFrame pandas Mặc dù đây là một cuốn sách về Python, nhưng thỉnh thoảng tôi sẽ đưa ra so sánh với R vì nó là một trong những môi trường phân tích dữ liệu nguồn mở được sử dụng rộng rãi nhất và sẽ quen thuộc với nhiều độc giả Tên Pandas chính nó có nguồn gốc từ panel data, một thuật ngữ kinh tế lượng cho các bộ dữ liệu cấu trúc đa chiều và phân tích dữ liệu python chính nó matplotlib matplotlib là thư viện Python phổ biến nhất để tạo biểu đồ và trực quan hóa dữ liệu Nó được tạo ra bởi John D Hunter (JDH) và hiện được duy trì bởi một nhóm lớn các nhà phát triển Nó rất phù hợp để tạo ra biểu đồ phù hợp để công bố Nó tích hợp tốt với IPython (xem bên dưới), do đó cung cấp một môi trường tương tác thoải mái để vẽ đồ thị và khám phá dữ liệu Biểu đồ cũng có tính tương tác Bạn có thể phóng to một phần của biểu đồ và xoay xung quanh biểu đồ bằng cách sử dụng thanh công cụ trong cửa sổ biểu đồ IPython IPython là thành phần trong bộ công cụ Python chuẩn gắn kết mọi thứ lại với nhau Nó cung cấp một môi trường mạnh mẽ và hiệu quả cho tính toán tương tác và khám phá Nó là Python shell nâng cao được thiết kế để tăng tốc việc viết, kiểm tra và gỡ lỗi mã Python Nó đặc biệt hữu ích cho việc tương tác làm việc với dữ liệu và trực quan hóa dữ liệu với Matplotlib IPython thường tham gia vào phần lớn các công việc Python của tôi, bao gồm chạy, gỡ lỗi và kiểm tra mã Bên cạnh tiêu chuẩn IPython Shell dựa trên thiết bị đầu cuối tiêu chuẩn, dự án cũng cung cấp • Một sổ ghi chép HTML giống Mathematica để kết nối IPython thông qua trình duyệt web (sẽ nói thêm về điều này sau) 5