Calcularea lui D folosind gruparea în Pandas
Efectuarea unui calcul pe subseturi ale unui DataFrame este atât de frecventă încât pandas oferă o alternativă la utilizarea unei bucle: metoda groupby. În codul exemplu, groupby este folosit mai întâi pentru a grupa sectoarele de recensământ după stat, adică acele rânduri care au aceeași valoare în coloana "state". Metoda sum() se aplică pe grup coloanelor.
Acest exercițiu folosește și merge, o altă metodă utilă din pandas, pentru a uni sumele grupate cu sectoarele individuale. Nu te îngrijora deocamdată de sintaxă. merge va fi explicat într-o lecție ulterioară.
pandas a fost importat cu aliasul obișnuit, iar DataFrame-ul tracts cu coloanele de populație white și black a fost încărcat. Variabilele w și b au fost definite cu numele de coloane "white" și respectiv "black".
Acest exercițiu face parte din cursul
Analiza datelor recensământului SUA în Python
Instrucțiuni pentru exercițiu
- Creează
sums_by_statefolosindgroupbyși afișează rezultatul. - Creează
tractsfolosindmergeși afișează rezultatul. - Calculează \(\left\lvert\frac{a_i}{A} - \frac{b_i}{B}\right\rvert\) și stochează rezultatul într-o coloană nouă
D. (Reminder: Suma populațiilor White și Black (\(A\) și \(B\)) a fost deja calculată și este disponibilă în DataFrame-ultracts, în coloanele cu sufixul"_sum"). - Sumează coloana
Dpe stat folosind metodagroupbyși înmulțește cu0.5.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Sum Black and White residents grouped by state
sums_by_state = tracts.groupby("state")[[w, b]].sum()
print(sums_by_state.head())
# Merge the sum with the original tract populations
tracts = pd.merge(tracts, sums_by_state, left_on = "state",
right_index = True, suffixes = ("", "_sum"))
print(tracts.head())
# Calculate inner expression of Index of Dissimilarity formula
tracts["D"] = abs(tracts[____] / tracts[____ + "_sum"] - ____ / ____)
# Calculate the Index of Dissimilarity
print(0.5 * tracts.____(____)["D"].sum())