เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การสืบค้นข้อมูลในกราฟ

ตอนนี้คุณรู้จักคุณสมบัติพื้นฐานของกราฟแล้ว และได้ฝึกใช้ฟีเจอร์การวาดกราฟของ NetworkX ไปบ้างแล้ว ถึงเวลาสำรวจวิธีสืบค้นโหนดและเอดจ์จากกราฟกัน โดยเฉพาะการค้นหา "โหนดที่สนใจ" และ "เอดจ์ที่สนใจ" เพื่อทำสิ่งนี้ จะใช้เมธอด .nodes() และ .edges() ที่ Eric อธิบายไว้ในวิดีโอ เมธอด .nodes() คืนค่าเป็น Node view iterable ส่วนเมธอด .edges() คืนค่าเป็น edge view iterable ซึ่งแต่ละ tuple จะแสดงโหนดที่อยู่บนเอดจ์นั้น อย่าลืมว่าการระบุ keyword argument data=True ในเมธอดเหล่านี้จะดึงข้อมูล metadata ที่เกี่ยวข้องกับโหนดและเอดจ์มาด้วย

จะใช้ลิสต์คอมพรีเฮนชันในการสร้างคำสืบค้นเหล่านี้ในบรรทัดเดียว หากต้องการทบทวนเรื่องลิสต์คอมพรีเฮนชัน สามารถดูได้ที่ ส่วนที่ 2 ของคอร์ส Python Data Science Toolbox ของ DataCamp โครงสร้างของลิสต์คอมพรีเฮนชันมีดังนี้

[ output expression for iterator variable in iterable if predicate expression ]

ต้องเติมส่วน _iterable_ และ _predicate expression_ ให้ครบ ลองทดสอบคำตอบใน IPython Shell ก่อนกด ส่งคำตอบ ได้เลย

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การวิเคราะห์เครือข่ายเบื้องต้นด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ใช้ลิสต์คอมพรีเฮนชันเพื่อดึง รายการโหนด จากกราฟ T ที่มีป้ายกำกับ 'occupation' เป็น 'scientist'
    • output expression n และ iterator variables n กับ d ถูกกำหนดไว้ให้แล้ว หน้าที่คือเติมส่วน iterable และ conditional expression
    • ใช้เมธอด .nodes() ของ T เพื่อเข้าถึงโหนด และระบุ data=True เพื่อดึง metadata ของโหนดด้วย
    • iterator variable d คือดิกชันนารี คีย์ที่ต้องการคือ 'occupation' และค่าที่ต้องการคือ 'scientist'
  • ใช้ลิสต์คอมพรีเฮนชันเพื่อดึง รายการเอดจ์ จากกราฟ T ที่ก่อตัวมาอย่างน้อย 6 ปี กล่าวคือก่อน 1 ม.ค. 2010
    • เติมส่วน iterable และ conditional expression เช่นเดียวกับข้อก่อนหน้า
    • ใช้เมธอด .edges() ของ T เพื่อเข้าถึงเอดจ์ และดึง metadata ของเอดจ์ด้วย
    • วันที่จะถูกเก็บเป็นออบเจ็กต์ datetime.date ใน metadata dictionary d ภายใต้คีย์ 'date' ตัวอย่างเช่น หากต้องการเข้าถึงวันที่ 1 ม.ค. 2009 ค่าในดิกชันนารีจะเป็น date(2009, 1, 1)

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# 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 ____ < ____]
แก้ไขและรันโค้ด