Cách lọc danh sách trong Python đúng cách để khai thác thêm dữ liệu của bạn

Spread the love

Trong Python, một trong những cách phổ biến nhất để lưu trữ dữ liệu tuần tự hoặc theo thứ tự là thông qua việc sử dụng danh sách. Danh sách trong Python là một cấu trúc dữ liệu tích hợp, có thể thay đổi, được sắp xếp, được sử dụng để lưu trữ một tập hợp dữ liệu. Các mục được lưu trữ trong danh sách được lập chỉ mục bắt đầu từ số không và người dùng có thể thay đổi nội dung của danh sách sau khi danh sách được tạo.

Việc các mục trong danh sách được lập chỉ mục cho phép lưu trữ các mục trùng lặp trong danh sách. Danh sách trong Python cũng có thể chứa các phần tử thuộc các kiểu dữ liệu khác nhau. Các mục trong danh sách được phân tách bằng dấu phẩy và đặt trong dấu ngoặc vuông.

Dưới đây là ví dụ về danh sách trong Python:

# A list containing one data type - String
colors = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']

# A list containing multiple data types
movies = ['Transformers', 2012, 'Avengers', 300]

# A list with duplicate values
users = ['John', 'Mary', 'Elizabeth', 'John']

Danh sách là một cấu trúc dữ liệu rất linh hoạt và bạn có thể thực hiện nhiều thao tác trên dữ liệu được lưu trữ trong danh sách. Một thao tác phổ biến và hữu ích được thực hiện trên danh sách là lọc dữ liệu được lưu trữ trong danh sách.

Tại sao lọc danh sách lại quan trọng

Lọc danh sách có nghĩa là trích xuất các tập hợp con cụ thể của dữ liệu đáp ứng một tiêu chí nhất định. Chẳng hạn, chúng ta có thể chỉ quan tâm đến các số chẵn trong danh sách chứa các số từ 1 đến 10. Để trích xuất dữ liệu đó từ danh sách, tất cả những gì chúng ta cần làm là lọc danh sách để lấy các số chia hết cho hai.

Tính năng lọc đặc biệt hữu ích trong thao tác dữ liệu và phân tích dữ liệu vì nó cho phép loại bỏ các mục không mong muốn khỏi danh sách, tạo danh sách mới chứa các mục đáp ứng tiêu chí nhất định và trích xuất dữ liệu đáp ứng các điều kiện nhất định.

Một số ứng dụng trong thế giới thực của danh sách lọc bao gồm:

  • Xác thực dữ liệu – Khi làm việc với một danh sách, bạn có thể chỉ muốn làm việc với dữ liệu đáp ứng một tiêu chí nhất định. Chẳng hạn, trong một danh sách người dùng, bạn có thể quan tâm đến những người dùng có cả họ và tên. Tính năng lọc có thể cho phép bạn xác minh và xác thực dữ liệu trong danh sách trước khi xử lý. Bằng cách này, bạn tránh làm việc với dữ liệu không đáp ứng yêu cầu của mình.
  • Làm sạch dữ liệu – Vì danh sách có thể lưu trữ nhiều loại dữ liệu, nên không hiếm khi thấy rằng danh sách chứa dữ liệu không mong muốn mà bạn không quan tâm. Ví dụ: trong danh sách chứa tên, bạn có thể không quan tâm đến các giá trị số trong danh sách. Thông qua lọc, bạn có thể loại bỏ dữ liệu không mong muốn.
  • Phân tích dữ liệu – Lọc dữ liệu đặc biệt hữu ích trong phân tích dữ liệu vì nó cho phép bạn tập trung vào các tập hợp con cụ thể của dữ liệu, cho phép bạn dễ dàng xác định các mẫu và xu hướng. Chẳng hạn, trong danh sách sinh viên, bạn có thể lọc ra sinh viên nam và nữ và sử dụng kết quả trong phân tích dữ liệu. Bạn thậm chí có thể lọc theo độ tuổi, vị trí và cấp độ. Điều này cho phép bạn rút ra nhiều kết luận hữu ích hơn từ các tập dữ liệu con cụ thể trong danh sách
  Cách thực hiện một đường cong hiệu chuẩn tuyến tính trong Excel

Lọc danh sách là một chức năng rất hữu ích vì nó cho phép bạn kiểm soát dữ liệu được lưu trữ trong danh sách cho phép bạn chỉ làm việc với dữ liệu mà bạn quan tâm.

Nhắm mục tiêu các tập hợp con cụ thể của dữ liệu được lưu trữ trong danh sách rất hữu ích vì nó hợp lý hóa quá trình xử lý dữ liệu và phân tích dữ liệu giúp các quy trình tốt hơn, nhanh hơn và chính xác hơn.

Sử dụng hàm filter()

Hàm filter() là một hàm Python tích hợp có thể được sử dụng để lặp qua một lần lặp như danh sách, bộ dữ liệu, bộ hoặc từ điển và trích xuất các mục trong lần lặp đáp ứng một điều kiện nhất định.

Một Iterable trong Python là một đối tượng có thể được lặp qua từng phần tử của nó. Lặp lại thông qua một lần lặp trả về các mục trong lần lặp lại một lần.

Cú pháp của hàm filter như sau:

filter(function, iterable)

function – một hàm Python chứa điều kiện lọc

có thể lặp lại – có thể lặp lại sẽ được lọc. Trong trường hợp này, chúng tôi sẽ sử dụng một danh sách.

Hàm filter() lấy hàm đã truyền và áp dụng nó cho từng mục trong lần lặp đã truyền, kiểm tra điều kiện lọc đối với mục đó. Nếu mục thỏa mãn điều kiện, nghĩa là, nó trả về giá trị boolean true, giá trị này sẽ được chọn bởi hàm filter(). Trong trường hợp nó không thỏa mãn điều kiện, mục không được chọn.

Hàm filter() trả về một lần lặp với các mục vượt qua điều kiện lọc. Bạn có thể tạo một danh sách mới chứa các mục đã vượt qua điều kiện lọc bằng cách sử dụng hàm list().

Để xem hoạt động của hàm filter(), hãy xem xét danh sách bên dưới, danh sách này đang được lọc để chọn các số nhỏ hơn 50:

#A list of numbers
numbers = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

# function containing the filtering condition
def is_even(num):
   if num < 50:
      return True
   else:
      return False

# the function list() is used to create a list from the iterable
# returned by the filter() function
filtered_numbers = list(filter(is_even, numbers))
print(filtered_numbers)

Đoạn mã trên in kết quả sau:

[15, 46, 24, 37]

Sử dụng vòng lặp for

Trong Python, vòng lặp for là một câu lệnh luồng điều khiển được sử dụng để lặp qua các cấu trúc dữ liệu tuần tự như danh sách, bộ dữ liệu, chuỗi và mảng. Vòng lặp for lặp đi lặp lại việc thực thi một khối mã cho mỗi mục trong một trình tự.

  8 loại lịch bảo mật nhất bạn có thể sử dụng vào năm 2022

Cú pháp chung của vòng lặp for như sau:

for item in iterable:
    # Block of code to be executed for each item in the iterabele

mục – một biến đại diện cho mục hiện tại đang được xử lý trong một lần lặp của vòng lặp

iterable – trình tự mà vòng lặp for lặp lại. Trong trường hợp này, một danh sách

Để lọc danh sách bằng vòng lặp for, chúng ta cần chuyển điều kiện lọc của mình vào phần để khối mã được thực thi. Bằng cách này, mỗi mục sẽ được đánh giá để xem liệu nó có thỏa mãn một điều kiện nhất định hay không.

Khi sử dụng vòng lặp for để lọc danh sách, bạn cũng cần tạo một danh sách trống nơi bạn sẽ nối các giá trị vượt qua điều kiện lọc của mình.

Để thấy điều này trong thực tế, chúng ta hãy lọc một danh sách các số để nhận các số nhỏ hơn 50 bằng cách sử dụng vòng lặp for:

numbers = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

filtered_numbers = []

for num in numbers:
    if num < 50:
        # append() used to add a number that passes the condition
        # into filtered_numbers.
        filtered_numbers.append(num)

print(filtered_numbers)

Đoạn mã trên in kết quả sau:

[15, 46, 24, 37]

Sử dụng một danh sách khác

Bạn có thể lọc danh sách bằng cách sử dụng danh sách khác bằng cách kiểm tra xem một mục trong danh sách bạn muốn lọc có xuất hiện trong danh sách khác hay không. Chẳng hạn, hãy xem xét hai danh sách sau

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']

vowels = ['a', 'e', 'i', 'o', 'u']

Trong danh sách được gọi là các chữ cái ở trên, chúng ta có thể xác định mục nào trong danh sách không phải là nguyên âm bằng cách kiểm tra xem mục đó có xuất hiện trong danh sách nguyên âm hay không. Nếu một mục không xuất hiện trong danh sách nguyên âm, thì đó không phải là nguyên âm.

Bằng cách này, chúng ta có thể nhận được tất cả các ký tự trong các chữ cái không phải là nguyên âm. Để thực hiện việc này, hãy thực thi đoạn mã sau:

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vowels = ['a', 'e', 'i', 'o', 'u']

not_vowel = []

for letter in letters:
    if letter not in vowels:
        not_vowel.append(letter)
print(not_vowel)

Đoạn mã trên in đầu ra sau, chứa các ký tự trong các chữ cái không phải là nguyên âm.

['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

Sử dụng danh sách hiểu

Trong Python, tính năng hiểu danh sách cung cấp cú pháp ngắn hơn, súc tích hơn và rõ ràng hơn để tạo danh sách mới từ danh sách hiện có. Khả năng hiểu danh sách có khả năng giảm nhiều dòng mã được sử dụng để tạo một danh sách mới từ một danh sách khác bằng cách sử dụng vòng lặp for thành một dòng duy nhất.

  Cách điều chỉnh âm lượng trên máy Mac của bạn

Điều này là do khi sử dụng khả năng hiểu danh sách, bạn xác định và thêm tất cả các mục vào danh sách mới trong một dòng.

Cú pháp để hiểu danh sách như sau:

new_list = [expression for element in iterable if condition]

new_list – một danh sách mới chứa các phần tử được thêm vào bởi khả năng hiểu danh sách

biểu thức – một thao tác sẽ được áp dụng cho từng mục của iterable

item – tên biến đại diện cho item hiện đang hoạt động trong iterable

iterable – một iterable mà từ đó các mục sẽ được chọn.

nếu điều kiện – một phần tùy chọn trong đó một điều kiện có thể được thêm vào để lọc các mục để chỉ thêm những mục thỏa mãn một điều kiện nhất định vào danh sách mới đang được tạo.

Để xem hoạt động hiểu danh sách và mức độ nó có thể đơn giản hóa quy trình lọc và tạo danh sách mới, chúng tôi sẽ sử dụng danh sách chữ cái và nguyên âm để lọc ra các mục trong danh sách chữ cái không có trong danh sách nguyên âm. Để thực hiện việc này, hãy thực thi đoạn mã sau:

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vowels = ['a', 'e', 'i', 'o', 'u']

# list comprehension
not_vowel = [letter for letter in letters if letter not in vowels]
print(not_vowel)

Đầu ra của đoạn mã trên được hiển thị bên dưới:

['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

Đầu ra tương tự như ví dụ trước, sử dụng vòng lặp for để lọc danh sách bằng danh sách khác. Tuy nhiên, nó sử dụng ít dòng mã hơn để đạt được kết quả tương tự.

Phần kết luận

Khi làm việc với dữ liệu trong Python, một thao tác phổ biến mà bạn buộc phải thực hiện là lọc dữ liệu từ một tệp có thể lặp lại, chẳng hạn như danh sách. Đây là một bước rất hữu ích trong phân tích dữ liệu và xử lý dữ liệu vì nó cho phép bạn chỉ làm việc với dữ liệu liên quan đến hoạt động hoặc quá trình xử lý đang được thực hiện.

Một cấu trúc dữ liệu tuần tự rất phổ biến trong Python là danh sách. Trong trường hợp bạn thấy mình đang làm việc với một danh sách và cần lọc danh sách đó, hãy cân nhắc sử dụng bất kỳ phương pháp nào được nêu trong bài viết.

Bạn cũng có thể đọc về cách sử dụng các hàm lambda trong Python với các ví dụ.

x