Trụ sở chính: Show Nội dung chính
Văn phòng: Số 27-3RD, Sunrise D, The Manor Central Park, đường Nguyễn Xiển, phường Đại Kim, quận Hoàng Mai, TP. Hà Nội. Liên hệ truyền thông: 0929.536.185 Email: [email protected] Chịu trách nhiệm nội dung: Ông Trần Anh Tú TEK4.VN giữ bản quyền nội dung trên website này. Cấm sao chép dưới mọi hình thức nếu không có sự chấp thuận bằng văn bản. Hôm nay, mình sẽ giới thiệu cho các bạn về việc sử dụng thư viện Pandas. Mục tiêu của bài viết này bao gồm:
Pandas là gì ?Thư viện Pandas được xây dựng trên NumPy và cung cấp các cấu trúc dữ liệu và các công cụ phân tích dữ liệu dễ sử dụng cho ngôn ngữ lập trình Python. Khi bạn muốn sử dụng khai báo đơn giản như sau:
The series data structureSeries là một trong những cấu trúc dữ liệu chính của Pandas. Bạn có thể coi nó như một dạng kết hợp giữa List và Dictionary của Python. Mọi dữ liệu được lưu trữ theo thứ tự và có label để bạn có thể gọi chúng. Một Pandas Series là một mảng được gắn nhãn một chiều có khả năng chứa bất kỳ loại dữ liệu nào với nhãn trục hoặc chỉ mục. Một cách dễ hình dung, ta có dữ liệu gồm 2 cột. Cột đầu tiên là Index, nó giống như Keys trong Dictionary. Cột thứ 2 mới là dữ liệu. Ta phải chú ý là cột dữ liệu có label riêng của nó và có thể gọi bằng thuộc tính .name. Điều này khác với Dictionary và rất hữu ích khi nó hợp nhất với nhiều cột dữ liệu. Ta có thể khởi tạo một series bằng việc truyền vào một list có giá trị. Khi đó hàm panda sẽ tự động gán chỉ số bắt đầu bằng 0 và đặt tên chuỗi là None. Ví dụ : Chúng ta thấy ở đây hàm pandas tự động xác định kiểu dữ liệu được tổ chức trong list, trong ví dụ trên chúng ta thực hiện trong danh sách các Nếu chúng ta thực hiện trong danh sách tất cả các số như ví dụ sau
thì hàm panda sẽ đặt kiểu là Bên dưới hàm panda lưu trữ các giá trị đã nhập trong Có một số loại chi tiết tồn tại cho hiệu suất mà rất quan trọng để biết. Điều quan trọng nhất là numpy và hàm panda xử lí dữ liệu bị thiếu thế nào. Trong pyhton chúng ta có kiểu none để chỉ ra việc thiếu dữ liệu. Nhưng chúng ta làm gì nếu chúng ta muốn có một danh sách định kiểu giống như chúng ta làm trong hàng loạt đối tượng? Bên dưới hàm panda thực hiện một số loại chuyển đổi. Nếu chúng ta tạo ra list string và chúng ta có một phần tử, một kiểu None, hàm panda chèn nó là None và sử dụng loại đối tượng này cho hàng nằm bên dưới. Nếu chúng ta tạo ra list các số, các số nguyên và đặt vào loại None, hàm panda tự động chuyển điều này thành một giá trị số thực động đặc biệt được xác định là NaN, viết tắt của not a number. NaN không phải là None và khi chúng ta thử kiểm tra, nó sai. Ta không thể tự động làm kiểm tra NaN với chính nó. Khi ta làm, câu trả lời luôn là sai. Ta cần phải sử dụng các hàm đặc biệt để kiểm tra.
Một Ta cũng có thể khởi tạo đích danh index bắng cách truyền truyền chỉ số như một list string như sau:
Điều gì xảy ra nếu danh sách các giá trị index của ta không liên kết với với các Querying a SeriesMột hàm panda Series có thể được truy vấn theo vị trí index hoặc
Với 2 cách dưới bạn thấy ở trên, thì ta có thể hiểu là hàm pandas cố gắng tạo ra mã có thể đọc được và cung cấp các loại cú pháp thông minh sử dụng toán tử chỉ số trực tiếp trên các chuỗi. Ví dụ ta truyền vào một số nguyên, toán tử sẽ hoạt động như thể bạn muốn truy vấn qua thuộc tính iloc. Nếu ta truyền vào một đối tượng 'string', nó sẽ truy vấn như kiểu bạn muốn sử dụng thuộc tính 'loc' dựa trên label. Điều gì sẽ xảy ra nếu index của ta là một list số nguyên? Điều này hơi phức tạp và hàm panda không thể xác định tự động liệu bạn đang dự định truy vấn bằng ví trí index hay index label. Ví thế ta cần phải cẩn thận khi sử dụng toán tử chỉ số trên chính các series. Và lựa chọn an toàn hơn cả là
sử dụng
Bây giờ ta đã biết cách lấy dữ liệu ra khỏi series. Bây giờ, chúng ta tập chung về làm việc với dữ liệu. Một số nhiệm vụ phổ biến là muốn xem dữ liệu bên trong series và làm một số phép toán. Tương tự như thư viện NumPy thì Pandas bên dưới hỗ trợ phương pháp tính toán gọi là vectorization. Ví dụ tính tống các số trong
Tiếp theo cộng 2 vào giá trị mỗi hàng như sau:
Ta cũng có thể thêm một giá trị mới chỉ bằng cách gọi toán tử chỉ số Chúng ta thấy rằng các loại kết hợp cho các kiểu giá trị dữ liệu hoặc index label đều không thành vấn đề với Pandas. Như các ví dụ ở trên thì mỗi dữ liệu chỉ có 1 chỉ số duy nhất, ta có một ví dụ nơi các giá trị chỉ sô không phông phải là duy nhất : Phần tiếp theo chúng ta sẽ học về DataFrame, nó tương tự như đối tượng The DataFrame Data StructureCấu trúc dữ liệu Ta có thể tạo ra
Tương tự như Ta có thể kiểm tra loại dữ liệu trả về bằng
việc sử dụng hàm Một điều quan trọng để ghi nhớ là các chỉ số, tên cột có thể không phải là duy nhất. Ví dụ: Trong ví dụ trên, ta
thấy 2 hồ sơ mua bán cho Một trong những tính năng của
Nếu chúng ta chỉ muốn lựa chọn cột và lấy ra danh sách tất cả các chi phí thì sao ? Cách đơn giản nhất sẽ như sau: Nó hoạt động nhưng nó khá là xấu, vì Cuối cùng, vì kết quả sử dụng toán tử Cái này nhìn khá là hợp lí và đưa ra kết quả chúng ta muốn. Nhưng việc sâu chuỗi có thể đi kèm với chi phí và tránh được tốt nhất nếu bạn có thể sử dụng cách tiếp cận khác. Cụ thể sâu chuỗi có xu hướng làm cho hàm panda trả về một bản sao của Như chúng ta thấy Bây giờ trước khi chúng ta dừng thảo luận về truy cập dữ liệu trong Hàm Có cách thứ hai để xóa cột, đó là qua việc sử dụng
toán tử chỉ số, sử dụng từ khóa del. Cách xóa dữ liệu này tuy nhiên ảnh hưởng ngay lập tức trên Cuối cùng thêm một cột mới vào Dataframe Indexing and LoadingLuồng công việc phổ biến là đọc dữ liệu vào một
Khi chúng ta nhìn vào
Bây giờ, dữ liệu này đến từ tất cả các bảng huy chương Olympics trên wikipedia. Nếu chúng ta nhìn vào các cột ta có thể thấy thay vì viết là các huy chương vàng, bạc, đồng mà dữ liệu viết "01 !", "02 !", "03 !". Vì thế chúng ta sẽ làm sạch dữ liệu, ta có thể làm điều này bằng việc chỉnh sửa trên file .csv trực tiếp nhưng chúng ta cũng có thể tên các cột bằng sử dụng Pandas. Panda lưu trữ danh sách tất cả các cột trong thuộc tính Chúng ta có thể thay đổi các giá trị của các cột tên bằng cách lập lại danh sách này và dùng phương thức
Querying a DataFrameHàm Boolean có đầy sức mạnh và là nền tảng hiệu quả của truy vấn NumPy và panda. Kĩ thuật này được sử dụng trong các lĩnh vực khoa học máy tính, ví dụ, trong đồ họa. Nhưng nó không thực sự có sự tương tác trong các cơ sở dữ liệu quan hệ truyền thống khác vì thế tôi nghĩ nó đáng để chỉ ra ở đây. Hàm Boolean được tạo ra với việc áp dụng các toán tử trực tiếp với các chuỗi panda hoặc các đối tượng khung dữ liệu. Để truy vấn, chúng ta có thể sử dụng hàm where như trong thư viện NumPy. Hàm Where dùng Hãy áp dụng hàm Boolean với dữ liệu Olypics của chúng ta và tạo ra Chúng ta thấy rằng chỉ dữ liệu từ các quốc gia mà đáp ứng điều kiện được giữ lại. Tất cả các quốc gia không đáp ứng điều kiện thì ghi là NaN. Hầu hết các hầm thống kê xây dựng trong khung dữ liệu bỏ qua các gia trị NaN. Ví dụ nếu chúng ta nhập df.count() trên khung dữ liệu trên, ta sẽ thấy 100 quốc gia có huy chương vàng được trao ở thế vận động mùa hè, trong khi nếu chúng ta đếm ở dữ liệu gốc, chúng ta thấy có tổng số 147 quốc gia. Thường chúng ta muốn xóa những dòng không có dữ liệu. Để làm điều này ta có thể dụng hàm
Cách này hơi dài dòng, dưới đây là một ví dụ ngắn gọn hơn về làm thế nào để truy vấn. Bạn sẽ thấy rằng không có NaNs khi bạn truy vấn bằng cách này, pandas tự động lọc ra những hàng không có giá trị.
Ta cũng có thể nối các điều kiện bằng cách dùng
Hoặc ta muốn truy vấn số lượng các quốc gia có huy chương vàng ở cả 2 thế vận hội:
Một ví dụ khác cho vui , quốc gia nào có huy chương vàng ở thế vận hội mùa đông nhưng chưa có ở thế vận hội mùa hè. Ta làm như sau:
Indexing DataframesChỉ số là cần thiết cho
nhãn mác định mức hàng và chúng ta biết các hàng tương ứng với trục 0. Trong dữ liệu Olimpics, chúng ta đã đặt chỉ số là tên của các tên đất nước. Chúng ta có thể đặt một cột là cột index bằng sử dụng hàm
Chúng ta có thể bỏ hoàn toàn các chỉ mục đã tạo bằng cách gọi hàm reset_index. Điều này sẽ tạo ra chỉ số mặc định.
Tl,drBài viết đến đây là dài, bài dài nhất mình viết đến thời điểm này , cảm ơn các bạn đã đọc. Nếu có thắc mắc gì thì bạn có thể để lại comment. Hẹn bạn ở các bài viết tiếp theo của mình.Tài liệu tham khảo
|