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

สร้างฟังก์ชันคำนวณค่า D

การคำนวณ Index of Dissimilarity มีหลายขั้นตอนและมีโอกาสนำกลับมาใช้ซ้ำสูง ในแบบฝึกหัดนี้จะสร้างฟังก์ชัน dissimilarity ที่ใช้ในแบบฝึกหัดก่อนหน้า พารามิเตอร์อินพุตของฟังก์ชันประกอบด้วย DataFrame ของพื้นที่ขนาดเล็ก (เช่น tracts) และชื่อคอลัมน์สามคอลัมน์ ได้แก่ คอลัมน์สองคอลัมน์ที่เก็บจำนวนประชากรของกลุ่ม A และกลุ่ม B และคอลัมน์ที่เก็บชื่อหรือตัวระบุทางภูมิศาสตร์ของพื้นที่ครอบคลุม (เช่น รัฐหรือเขตมหานคร)

เพื่อเป็นการทบทวน สูตรของ Index of Dissimilarity คือ:

$$D = \frac{1}{2}\sum{\left\lvert \frac{a}{A} - \frac{b}{B} \right\rvert}$$

pandas ถูก import ด้วย alias ตามปกติแล้ว และโค้ดส่วน groupby และ merge ได้เตรียมไว้ให้เรียบร้อยแล้ว

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

การวิเคราะห์ข้อมูลสำมะโนประชากรสหรัฐฯ ด้วย Python

ดูคอร์ส

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

  • คำนวณนิพจน์ภายในเครื่องหมายค่าสัมบูรณ์ตามสูตร โดยชื่อคอลัมน์ของ \(A\) และ \(B\) ได้จากการเติม suffix "_sum" ต่อท้ายพารามิเตอร์ col_A และ col_B
  • เมธอด sum บนคอลัมน์เดียวจะคืนค่าเป็น series ให้ใช้เมธอด to_frame() เพื่อแปลง series ให้เป็น DataFrame
  • ทดสอบฟังก์ชันใหม่บน tracts โดยคำนวณค่า dissimilarity ระหว่าง White และ Black แยกตามชื่อ MSA

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

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

def dissimilarity(df, col_A, col_B, group_by):

    # Sum Group A and Group B by grouping column
    grouped_sums = df.groupby(group_by)[[col_A, col_B]].sum()
    tmp = pd.merge(df, grouped_sums, left_on = group_by, 
                   right_index = True, suffixes = ("", "_sum"))
    
    # Calculate inner expression
    tmp["D"] = abs(____)
    
    # Calculate Index of Dissimilarity and convert to DataFrame
    return 0.5 * tmp.groupby(group_by)["D"].sum().____
  
msa_D = dissimilarity(msa_tracts, ____, ____, "msa_name")
print(msa_D.head())
แก้ไขและรันโค้ด