[DA-DS #2] Các thao tác cơ bản với dữ liệu bằng thư viện Pandas

Chào các member Mì AI, chúng ta lại cùng đi tiếp series về DA-DS nhé. Trong bài trước (tại đây) chúng ta đã tìm hiểu, cài đặt Python và viết một ứng dụng nhỏ để đọc file CSV rồi. Trong bài này chúng ta sẽ cùng thảo luận một số thao tác cơ bản với dữ liệu bằng thư viện Pandas nhé!

Mình cũng xin nhắc lại là Mì Ai cũng xin tiếp cận DA theo một cách hoàn toàn là Mì ăn liền cho hợp phong cách. Các khái niệm sẽ đều được đơn giản hóa để các bạn mới bắt đầu cũng có thể tham khảo và sử dụng được. Mong các cao thủ đi qua xin bỏ quá!

Phần 1 – Khái niệm về Pandas, Series và DataFrame

Về thư viện Pandas

Như đã nói trong buổi trước, cứ nhắc đến DA là có 2 thư viện dùng rõ nhiều là : pandas và numpy. Để các bạn dễ hiểu thì cứ nhớ là :

  • pandas: thư viện hỗ trợ đắc lực trong thao tác dữ liệu. Thư viện này được sử dụng rộng rãi trong cả nghiên cứu lẫn phát triển các ứng dụng về khoa học dữ liệu
  • numpy : là một thư viện lõi phục vụ cho khoa học máy tính của Python, hỗ trợ cho việc tính toán các mảng nhiều chiều, có kích thước lớn với các hàm đã được tối ưu áp dụng lên các mảng nhiều chiều đó

Để làm việc với 2 thằng này cho tiện thì cứ mở project mới là các bạn cài cắm nó luôn bằng lệnh:

Về khái niệm Series và Dataframe

Nếu hiểu một cách đơn giản thì Series là các cột trong Excel còn Dataframe chính là một tập hợp các cột và chính là Sheet trong Excels đó. Còn nếu bạn nào đã làm quen với CSDL thì Series là cột còn Dataframe chính là table. Nghe bắt đầu quen thuộc rồi đúng không?

Tuy nhiên có một đặc khác chút cần lưu ý như sau:

  • Mỗi df luôn có một cột ngoài cùng bên trái gọi là cột index (chỉ mục) như trong bảng excel thì các bạn nhìn bên tay trái nó cũng có một cái cột tăng dần ấy.
  • Index là một chuỗi dữ liệu đứng đầu của Dataframe. Ta có thể set một cột bất kì làm index cho df. Còn nếu không đặt thì hệ thống sẽ sinh ra một cột số tăng dần (0, 1, 2, …,n) làm index cho một dataframe
pandas data
Nguồn: Tại đây

Dataframe sẽ hay được biểu diễn bằng biến có tên “df” cho dễ gợi nhớ nhé (còn thực ra bạn thích đặt tên gì cho nó cũng được như : vàng, bạc, kim cương hay mì ăn liền…).

Rồi, hiểu mì ăn liền là vậy còn nếu các bạn muốn đọc chuyên sâu hơn thì mình có link sẵn full HD không che nhé: Tại đây

Phần 2 – Giới thiệu một số lệnh thao tác chính trên Dataframe với thư viện Pandas

Ở đây mình cũng nói luôn là thư viện Pandas là khá lớn với vô số các lệnh và riêng việc liệt kê ra thôi cũng đã hết mấy trang A4 kaka. Do đó trong bài này mình chỉ giới thiệu một số lệnh chính để các bạn hình dung cách làm việc với thư viện Pandas như thế nào thôi, các bạn muốn tìm hiểu thêm thì có thể đọc tại link chính thức của Pandas luôn cho máu.

dataframe pandas
Tạo dataframe

Dataframe có thể tạo ra bằng nhiều cách khác nhau.

Đầu tiên ta có thể tạo df từ một mảng dữ liệu nhập ngay trên phần mềm (cách này thông thường mình cũng không sử dụng vì có xu hướng làm việc với các tệp dữ liệu lớn). Cách tạo ra df bằng cách tạo các mảng dữ liệu cho các cột, từ đó gắn cột vào df. Ví dụ mã nguồn như sau:

Kết quả của df1 và df2 sẽ có dạng như sau:

Cách thứ hai các bạn có thể load dữ liệu từ file excel, csv vào trong dataframe. Thông thường mình hay dùng file csv để giảm dung lượng dữ liệu đầu vào. Trong bài trước mình đã có hướng dẫn cụ thể về việc này thông qua việc dùng lệnh đọc file dữ liệu như sau:

Ngoài ra Python cũng hỗ trợ việc kết nối đến CSDL để lấy thông tin, tùy thuộc loại CSDL để có thể tìm các code tương ứng nhé!

Chúng ta đã xong phần tạo df, bây giờ mình sẽ đi tiếp các lệnh khác của pandas trên df. Để các bạn dễ hiểu mình sẽ nhóm vào theo các nhóm đúng theo tư tưởng của SQL nhé kaka!

Các câu lệnh SELECT

Trong phần này các bạn sẽ dùng các lệnh để in ra dữ liệu trong df (hoặc gán cho biến nào đó khác một phần dữ liệu trích xuất ra của df).

Lệnh in df ra màn hình

Đoạn chương trình trên bạn chú ý 2 lệnh là head và tail. Đúng với cái tên của nó, dùng để in ra các bản ghi đầu tiên và cuối cùng (đuôi) của df.

Xem dữ liệu của một cột

Để xem dữ liệu một cột ta sử dụng df [‘<tên danh sách cột>’]. Ví dụ:

Xem dữ liệu của một dòng

Để xem dữ liệu của một dòng ta sẽ xem theo index của df. Ví dụ ta có một df như sau:

thư viện pandas
Nguồn

Bây giờ giả sử muốn lấy các dòng bằng lệnh như sau:

Nếu cột index không phải là số mà là các loại dữ liệu khác thì ta dùng lệnh df.loc. Gỉa sử ta có một df như sau:

thư viện pandas
Nguồn
Nguồn

Kiểm tra dữ liệu một cột

Đôi khi chúng ta muốn tìm hiểu xem dữ liệu của một cột là gì? Phân phối như thế nào? Min, max ra sao… thì chúng ta dùng lệnh describe như sau:

Dữ liệu trả về sẽ có dạng một bảng gồm các thông tin và ý nghĩa của các thông tin đó mình có giải thích ở bảng bên dưới.

thư viện pandas

Nếu muốn tìm hiểu kỹ hơn về các giá trị thống kê, các bạn có thể vào link này nhé.

Lọc dữ liệu trong dataframe

Các bạn cứ hình dùng phần lọc dữ liệu này như là câu SELECT kèm WHERE ấy.

Giả sử ta có một dataframe như sau:

thư viện pandas
Nguồn

Sắp xếp dữ liệu

Để sắp xếp dữ liệu ta dùng lệnh sort_values() như sau:

thư viện pandas
Nguồn
Các câu lệnh UPDATE

Update giá trị cột

Gọi là update nhưng thực chất là chúng ta thay đổi giá trị của các cột theo nhu cầu bài toán yêu cầu thôi. Chúng ta có thể thực hiện các thao tác sau:

Thay đổi index của df

Với món này chúng ta có thể thực hiện các thao tác:

Xử lý missing data

Trong quá trình làm việc với dữ liệu hàng ngày chúng ta sẽ gặp rất nhiều dữ liệu bị thiếu (trống, NaN…) và chúng ta phải xử lý nó trước khi có thể tiếp tục làm việc với dữ liệu.

Có 2 cách chính để xử lý cái missing data này là: cắt luôn (Drop) hoặc thay thế (Replace)

Giả sử ta có df như sau:

Bây giờ ta có thể thực hiện drop các missing data bằng lệnh dropna như sau:

Hoặc cũng có thể replace các NaN values như sau:

Các câu lệnh DELETE

Để xóa dòng hay cột trong pandas ta đều dùng chung một lệnh là drop như sau:

Các câu lệnh INSERT

Thêm dòng dữ liệu mới

Đê thêm dòng dữ liệu mới vào Dataframe ta dùng lệnh append cho dataframe. Ví dụ:

Thêm một cột dữ liệu mới

Việc thêm một cột dữ liệu mới trong dataframe khá đơn giản, các bạn hầu như không cần làm gì mà thực hiện theo kiểu “cứ thế mà gán”. Ví dụ mình có 1 df như sau:

thư viện pandas
Nguồn: Tại đây

Bây giờ giả sử muốn thêm cột,ta sẽ thực hiện như sau:

Các câu lệnh truy xuất dữ liệu phức tạp hơn

Nhóm dữ liệu

Để nhóm dữ liệu ta dùng lệnh groupby. Giả sử ta có dataframe sau:

Nguồn: Tại đây

Bây giờ ta có thể group theo nhóm như sau:

Pivot table

Cái này mình cũng chưa biết chuyển sang tiếng Việt như nào cho hợp lý. Đại khái là nó tạo ra 1 góc nhìn khác từ một bảng dữ liệu.

Ví dụ ta có dataframe:

Nguồn: Tại đây

Giả sử ta muốn lấy lại thông tin theo tên người làm index, ta sử dụng lệnh:

thư viện pandas
Nguồn: Tại đây
thư viện pandas
Nguồn: Tại đây

Rồi, trên đây là các thao tác chính với dataframe, mình đã liệt kê chỉ với mục đích các bạn có cái nhìn tổng quát về những gì ta có thể làm với dữ liệu. Để tìm hiểu chi tiết các bạn có thể tham khảo tài liệu của pandas và cũng nên hỏi chị Gúc gờ mọi lúc mọi nơi khi cần thiết nhé. Học lập trình chứ không phải học thuộc lòng ngôn ngữ nên các bạn cũng không cần thiết phải cố mà nhớ cho mệt.

Trong các bài tiếp theo chúng ta sẽ học cách vẽ các loại đồ thị với pandas và matplotlib nhé. Hẹn gặp lại các bạn!

Hãy join cùng cộng đồng Mì AI nhé!

Fanpage: http://facebook.com/miaiblog
Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup
Website: https://miai.vn
Youtube: http://bit.ly/miaiyoutube

Related Post

2 Replies to “[DA-DS #2] Các thao tác cơ bản với dữ liệu bằng thư viện Pandas”

Leave a Reply

Your email address will not be published. Required fields are marked *