Danh sách các đồ thị
Trong bộ bài tập này, bạn sẽ dùng một bộ dữ liệu tin nhắn trong trường đại học để học cách lọc đồ thị phục vụ phân tích chuỗi thời gian. Trong bộ dữ liệu này, các nút là sinh viên, và các cạnh biểu thị tin nhắn được gửi từ một sinh viên đến sinh viên khác. Đồ thị hiện tại ghi nhận mọi liên lạc ở mọi thời điểm.
Hãy bắt đầu bằng cách phân tích các đồ thị mà chỉ có các cạnh thay đổi theo thời gian.
Bộ dữ liệu đã được nạp vào một DataFrame tên là data. Bạn có thể khám phá nó trong IPython Shell. Cụ thể, hãy xem đầu ra của data['sender'] và data['recipient'].
Bài tập này là một phần của khóa học
Phân tích mạng nâng cao với Python
Hướng dẫn bài tập
- Khởi tạo một list rỗng tên
Gs. - Dùng vòng lặp
forđể lặp quamonths. Bên trong vòng lặp:- Tạo một đồ thị vô hướng mới tên
Gbằng hàmnx.Graph(). - Thêm tất cả các nút từng xuất hiện vào đồ thị. Để làm điều này, dùng phương thức
.add_nodes_from()trênGhai lần: lần đầu với đối sốdata['sender'], và lần sau vớidata['recipient']. - Lọc DataFrame để chỉ còn tháng đã cho. Phần này đã được thực hiện sẵn cho bạn.
- Thêm các cạnh từ DataFrame đã lọc. Để làm điều này, dùng phương thức
.add_edges_from()vớidf_filtered['sender']vàdf_filtered['recipient']truyền vàozip(). - Thêm
Gvào danh sách đồ thịGsbằng.append().
- Tạo một đồ thị vô hướng mới tên
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.
import networkx as nx
months = range(4, 11)
# Initialize an empty list: Gs
Gs = []
for month in months:
# Instantiate a new undirected graph: G
G = ____
# Add in all nodes that have ever shown up to the graph
____
____
# Filter the DataFrame so that there's only the given month
df_filtered = data[data['month'] == month]
# Add edges from filtered DataFrame
____
# Append G to the list of graphs
____
print(len(Gs))