시작하기무료로 시작하기

데이터를 청크로 로드하는 이터레이터 작성 (5)

마지막 단계예요. 지금까지 대용량 데이터셋을 청크 단위로 처리하는 방법을 많이 배웠습니다. 이번 연습 문제에서는 데이터를 처리하는 코드를 하나의 함수에 모아, 같은 내용을 반복해서 작성하지 않고도 재사용할 수 있도록 만들어 보겠습니다.

처리할 파일의 파일명과, 데이터셋에서 처리하려는 행의 국가 코드를 두 개의 인자로 받는 함수 plot_pop()을 정의할 거예요.

이전에 작성한 모든 코드를 plot_pop() 안에 담을 것이므로, 함수를 호출하기만 해도 다음 작업이 한 번에 수행됩니다.

  • 파일을 청크 단위로 로딩하고,
  • 도시 인구 값을 담은 새 열을 만들고,
  • 도시 인구 데이터를 시각화합니다.

해야 할 일이 많지만, 이제 이 함수를 사용하면 원하는 파일과 국가 코드에 대해 같은 과정을 손쉽게 반복하고 시각화할 수 있어요!

현재 디렉터리에 있는 'ind_pop_data.csv' 데이터를 사용합니다. pandas와 matplotlib.pyplot 패키지는 각각 pd, plt로 임포트되어 준비되어 있어요.

완료한 뒤에는 플롯을 잠시 살펴보면서 새롭게 익힌 기술을 돌아보세요. 여기가 끝은 아닙니다! 이 데이터 작업이 즐거우셨다면, Kaggle에 있는 전처리된 버전을 활용해 계속 탐색해 보셔도 좋아요.

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

Python 도구 상자

강의 보기

연습 안내

  • 데이터 처리용 파일명을 받는 filename과 데이터셋에서 처리할 국가 코드를 받는 country_code, 이렇게 두 개의 인자를 갖는 함수 plot_pop()을 정의하세요.
  • 파일 'ind_pop_data.csv'에서 국가 코드 'CEB'의 데이터를 처리하도록 plot_pop()을 호출하세요.
  • 파일 'ind_pop_data.csv'에서 국가 코드 'ARB'의 데이터를 처리하도록 plot_pop()을 호출하세요.

실습형 인터랙티브 연습

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

# Define plot_pop()
def ____(____, ____):

    # Initialize reader object: urb_pop_reader
    urb_pop_reader = pd.read_csv(filename, chunksize=1000)

    # Initialize empty DataFrame: data
    data = pd.DataFrame()
    
    # Iterate over each DataFrame chunk
    for df_urb_pop in urb_pop_reader:
        # Check out specific country: df_pop_ceb
        df_pop_ceb = df_urb_pop[df_urb_pop['CountryCode'] == country_code]

        # Zip DataFrame columns of interest: pops
        pops = zip(df_pop_ceb['Total Population'],
                    df_pop_ceb['Urban population (% of total)'])

        # Turn zip object into list: pops_list
        pops_list = list(pops)

        # Use list comprehension to create new DataFrame column 'Total Urban Population'
        df_pop_ceb['Total Urban Population'] = [int(tup[0] * tup[1] * 0.01) for tup in pops_list]
        
        # Concatenate DataFrame chunk to the end of data: data
        data = pd.concat([data, df_pop_ceb])

    # Plot urban population data
    data.plot(kind='scatter', x='Year', y='Total Urban Population')
    plt.show()

# Set the filename: fn
fn = 'ind_pop_data.csv'

# Call plot_pop for country code 'CEB'


# Call plot_pop for country code 'ARB'
코드 편집 및 실행