Bắt đầu ngayBắt đầu miễn phí

Truy vấn trên một đồ thị

Giờ thì bạn đã biết một vài thuộc tính cơ bản của đồ thị và đã luyện tập dùng chức năng vẽ của NetworkX để trực quan hóa các thành phần, đã đến lúc khám phá cách truy vấn nút và cạnh. Cụ thể, bạn sẽ tìm các "nút quan tâm" và "cạnh quan tâm". Để làm điều này, bạn sẽ dùng các phương thức .nodes().edges() mà Eric đã giới thiệu trong video. Phương thức .nodes() trả về một Node view có thể lặp, trong khi phương thức .edges() trả về một edge view có thể lặp, trong đó mỗi tuple cho biết các nút nằm trên cạnh đó. Nhớ rằng truyền đối số từ khóa data=True vào các phương thức này cũng sẽ truy xuất metadata tương ứng gắn với các nút và cạnh.

Bạn sẽ viết các list comprehension để xây dựng các truy vấn này gọn trong một dòng. Nếu cần ôn lại về list comprehension, hãy xem Phần 2 của khóa Python Data Science Toolbox trên DataCamp. Công thức của một list comprehension là:

[ biểu thức đầu ra for biến lặp in iterable if biểu thức điều kiện ].

Bạn cần điền vào phần _iterable__biểu thức điều kiện_. Bạn có thể thử nghiệm câu trả lời bằng cách khám phá đồ thị trong IPython Shell trước khi gửi lời giải.

Bài tập này là một phần của khóa học

Nhập môn Phân tích Mạng bằng Python

Xem khóa học

Hướng dẫn bài tập

  • Dùng một list comprehension để lấy danh sách các nút từ đồ thị T có nhãn 'occupation''scientist'.
    • Biểu thức đầu ra n đã được cung cấp, cùng với các biến lặp nd. Nhiệm vụ của bạn là điền phần iterablebiểu thức điều kiện.
    • Dùng phương thức .nodes() của T để truy cập các nút, và nhớ chỉ định data=True để lấy metadata của các nút.
    • Biến lặp d là một từ điển. Khóa cần quan tâm ở đây là 'occupation' và giá trị cần quan tâm là 'scientist'.
  • Dùng một list comprehension để lấy danh sách các cạnh từ đồ thị T được hình thành ít nhất 6 năm, tức là từ trước 1 Jan 2010.
    • Một lần nữa, nhiệm vụ của bạn là điền phần iterablebiểu thức điều kiện.
    • Dùng phương thức .edges() của T để truy cập các cạnh. Nhớ lấy cả metadata của các cạnh.
    • Ngày tháng được lưu dưới dạng đối tượng datetime.date trong từ điển metadata d, dưới khóa 'date'. Ví dụ, để truy cập ngày 1 Jan 2009, giá trị từ điển sẽ là date(2009, 1, 1).

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# Use a list comprehension to get the nodes of interest: noi
noi = [n for n, d in ____ if d['____'] == '____']

# Use a list comprehension to get the edges of interest: eoi
eoi = [(u, v) for u, v, d in ____ if ____ < ____]
Chỉnh sửa và Chạy Mã