ลิสต์ของกราฟ
ในชุดแบบฝึกหัดนี้ จะได้ใช้ชุดข้อมูลการส่งข้อความในมหาวิทยาลัยเพื่อเรียนรู้วิธีกรองกราฟสำหรับการวิเคราะห์อนุกรมเวลา ในชุดข้อมูลนี้ โหนดคือนักศึกษา และ edge แทนข้อความที่ส่งจากนักศึกษาคนหนึ่งไปยังอีกคนหนึ่ง กราฟในปัจจุบันครอบคลุมการสื่อสารทั้งหมดในทุกช่วงเวลา
เริ่มต้นด้วยการวิเคราะห์กราฟที่มีเฉพาะ edge เท่านั้นที่เปลี่ยนแปลงตามเวลา
ชุดข้อมูลถูกโหลดเข้าสู่ DataFrame ชื่อ data ลองสำรวจข้อมูลใน IPython Shell ได้เลย โดยเฉพาะผลลัพธ์ของ data['sender'] และ data['recipient']
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์เครือข่ายระดับกลางใน Python
คำแนะนำการฝึกหัด
- สร้างลิสต์ว่างชื่อ
Gs - ใช้ลูป
forวนซ้ำผ่านmonthsโดยภายในลูปให้ทำดังนี้:- สร้างกราฟแบบไม่มีทิศทางใหม่ชื่อ
Gโดยใช้ฟังก์ชันnx.Graph() - เพิ่มโหนดทั้งหมดที่เคยปรากฏเข้าสู่กราฟ โดยใช้เมธอด
.add_nodes_from()บนGสองครั้ง ครั้งแรกส่งdata['sender']เป็นอาร์กิวเมนต์ และครั้งที่สองส่งdata['recipient'] - กรอง DataFrame ให้เหลือเฉพาะเดือนที่กำหนด ส่วนนี้ได้เตรียมไว้ให้แล้ว
- เพิ่ม edge จาก DataFrame ที่กรองแล้ว โดยใช้เมธอด
.add_edges_from()พร้อมส่งdf_filtered['sender']และdf_filtered['recipient']เข้าไปในzip() - เพิ่ม
Gเข้าไปในลิสต์กราฟGs
- สร้างกราฟแบบไม่มีทิศทางใหม่ชื่อ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
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))