D गणना करने के लिए फंक्शन बनाएँ
Index of Dissimilarity की गणना कई चरणों में होती है और इसे बार-बार उपयोग किया जा सकता है। इस अभ्यास में आप dissimilarity नाम का फंक्शन बनाएँगे, जिसे आपने पिछले अभ्यास में इस्तेमाल किया था। फंक्शन के इनपुट पैरामीटर होंगे: छोटे क्षेत्रों (जैसे tracts) का एक DataFrame और तीन कॉलम नाम—दो कॉलम Group A और Group B की आबादी की गिनती वाले, और एक कॉलम जिसमें कंटेनर जियोग्राफी (जैसे states या metro areas) के नाम या जियोग्राफिक आइडेंटिफ़ायर हों।
याद दिलाने के लिए, Index of Dissimilarity का फ़ॉर्मूला है:
$$D = \frac{1}{2}\sum{\left\lvert \frac{a}{A} - \frac{b}{B} \right\rvert}$$
pandas को सामान्य उपनाम के साथ इम्पोर्ट किया जा चुका है। नीचे दिए गए कोड में groupby और merge पहले से किए हुए हैं।
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में US Census डेटा का विश्लेषण
अभ्यास निर्देश
- फ़ॉर्मूला के आधार पर absolute value बार्स के अंदर की अभिव्यक्ति की गणना करें: \(A\) और \(B\) के कॉलम नाम
col_Aऔरcol_Bपैरामीटर में"_sum"सुффिक्स जोड़कर बनते हैं - किसी एक कॉलम पर
sumमेथड एक series लौटाता है; series को DataFrame में बदलने के लिएto_frame()मेथड का उपयोग करें - नए फंक्शन को
tractsपर टेस्ट करें: MSA नाम के अनुसार White-Black dissimilarity की गणना करें
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
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())