시작하기무료로 시작하기

Pandas에서 그룹화를 사용해 D 계산하기

DataFrame의 부분집합별로 계산하는 작업은 매우 흔하기 때문에, pandas는 루프 대신 사용할 수 있는 대안으로 groupby 메서드를 제공합니다. 예제 코드에서는 먼저 groupby를 사용해 트랙트를 주(state)별로 묶습니다. 즉, "state" 열의 값이 같은 행들을 그룹화합니다. 그런 다음 각 그룹에 대해 sum() 메서드를 열에 적용합니다.

이번 연습에서는 또 다른 유용한 pandas 메서드인 merge를 사용해 그룹화한 합계를 개별 트랙트와 조인합니다. 지금은 문법을 걱정하지 않으셔도 돼요. merge는 이후 레슨에서 설명합니다.

pandas는 일반적인 별칭으로 임포트되어 있으며, 인구수 열 whiteblack이 있는 tracts DataFrame이 로드되어 있습니다. 변수 wb는 각각 열 이름 "white""black"으로 정의되어 있어요.

이 연습은 강의의 일부입니다

Python으로 미국 인구조사 데이터 분석하기

강의 보기

연습 안내

  • groupby를 사용해 sums_by_state를 만들고 결과를 출력하세요.
  • merge를 사용해 tracts를 만들고 결과를 출력하세요.
  • $\left\lvert\frac{a_i}{A} - \frac{b_i}{B}\right\rvert$를 계산해 새 열 D에 저장하세요. (참고: 백인과 흑인 인구의 합($A$와 \(B\))은 이미 계산되어 tracts DataFrame의 "_sum" 접미사가 붙은 열에 준비되어 있어요.)
  • groupby 메서드를 사용해 주(state)별로 열 D를 합산하고, 그 값을 0.5를 곱해 주세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# 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())
코드 편집 및 실행