[python] Arrow 라이브러리를 이용한 연령 별 데이터 집계

Arrow는 파이썬에서 일반적인 날짜 및 시간 연산을 처리하기위한 강력한 라이브러리입니다. 이번 글에서는 Arrow를 사용하여 연령별 데이터를 집계하는 방법에 대해 알아보겠습니다.

Arrow 설치

먼저 Arrow를 설치해야 합니다. 파이썬 패키지 관리자인 pip를 사용하여 다음 명령어로 Arrow를 설치할 수 있습니다.

pip install arrow

데이터 준비

이 예제에서 사용할 데이터는 다음과 같은 형식으로 구성되어 있다고 가정합니다.

Name,Date of Birth
John,1990-01-01
Alice,1985-02-10
Michael,1978-05-15
...

데이터 로드

데이터를 로드하기 위해 CSV 파일을 사용하겠습니다. Arrow는 datetime 모듈과 호환되므로 CSV 파일을 로드하면 자동으로 Arrow의 날짜/시간 객체로 변환됩니다.

import arrow
import csv

data = []
with open('data.csv') as file:
    reader = csv.DictReader(file)
    for row in reader:
        date_of_birth = arrow.get(row['Date of Birth'], 'YYYY-MM-DD')
        data.append({'Name': row['Name'], 'Date of Birth': date_of_birth})

연령 계산

로드된 데이터를 기반으로 연령을 계산해보겠습니다. Arrow는 편리하게도 다른 날짜와의 차이를 쉽게 계산할 수 있는 shift() 메서드를 제공합니다.

today = arrow.now()

for entry in data:
    age = today.shift(years=-entry['Date of Birth'].year).years
    entry['Age'] = age

연령별 데이터 집계

이제 연령 별로 데이터를 집계해보겠습니다. 이를 위해 defaultdict를 사용하여 각 연령 그룹에 대한 빈도수를 추적합니다.

from collections import defaultdict

age_counts = defaultdict(int)
for entry in data:
    age = entry['Age']
    age_counts[age] += 1

결과 출력

마지막으로 연령 별로 집계된 데이터를 출력해보겠습니다.

for age, count in sorted(age_counts.items()):
    print(f"Age: {age} - Count: {count}")

이제 Arrow를 사용하여 연령 별로 데이터를 집계하는 방법을 알게 되었습니다. Arrow는 다른 날짜와 시간 연산에도 매우 유용하며, 더 복잡한 분석에 응용할 수도 있습니다.

참고 자료