[python] Peewee에서 데이터 그룹화하기: group_by()

데이터베이스 ORM(객체 관계 매핑) 도구인 Peewee는 파이썬에서 사용하기 쉬운 API를 제공하여 데이터베이스와의 상호 작용을 간단하게 만들어줍니다. Peewee를 사용하여 데이터를 쿼리하고 분석할 때 종종 데이터를 그룹화해야 할 때가 있습니다.

Peewee에서는 group_by() 메서드를 사용하여 데이터를 그룹화할 수 있습니다. 이를 통해 데이터를 특정 열에 따라 그룹으로 묶을 수 있으며, 그룹별로 집계 함수를 사용하여 계산할 수도 있습니다.

group_by() 메서드 사용하기

from peewee import *

# 데이터베이스 연결 설정
database = SqliteDatabase('my_database.db')

# 데이터베이스 모델 정의
class Person(Model):
    name = CharField()
    age = IntegerField()

    class Meta:
        database = database

# 데이터베이스 테이블 생성
database.create_tables([Person])

# 데이터 추가하기
Person.create(name='John', age=25)
Person.create(name='Jane', age=30)
Person.create(name='Bob', age=25)
Person.create(name='Alice', age=35)

# 나이별로 그룹화하여 카운트하기
query = Person.select(Person.age, fn.COUNT(Person.id).alias('count')).group_by(Person.age)
for result in query:
    print(f"age: {result.age}, count: {result.count}")

이 예제에서는 Person 테이블에서 나이별로 그룹화하여 각 그룹의 개수를 출력하는 방법을 보여줍니다. group_by() 메서드를 사용하여 나이 열을 그룹화 기준으로 지정하고, COUNT() 함수와 alias() 메서드를 사용하여 각 그룹의 개수를 계산하고 출력합니다.

결과 확인하기

age: 25, count: 2
age: 30, count: 1
age: 35, count: 1

위의 예제에서는 25세 그룹에 2명, 30세 그룹에 1명, 35세 그룹에 1명이 있음을 확인할 수 있습니다.

결론

Peewee의 group_by() 메서드를 사용하면 데이터베이스에서 데이터를 그룹화할 수 있습니다. 그룹별로 집계 함수를 사용하여 원하는 계산을 수행할 수 있으며, 이를 통해 데이터 분석이나 보고서 작성 등 다양한 작업에 유용하게 활용할 수 있습니다.