티스토리 뷰

Polars은 Pandas에 비해 대규모 데이터셋을 조작하고 처리할 때, 빠른 속도와 효율적인 메모리 관리의 장점을 가지고 있습니다. 특히, Lazy Evaluation을 지원하여 쿼리 최적화가 용이합니다. Lazy Evaluation을 통해 작업을 자동 병렬화 할 수 있습니다.

 

Polars에서 자주 사용하는 문법을 titanic 데이터셋을 이용해 알아보는 시간을 갖겠습니다.

 

1. 라이브러리 불러오기

import polars as pl

 

2. 데이터 프레임 생성

pl_df = pl.DataFrame({
    'PassengerID' : [1,2,3,4,5],
    'Survived' : [0,1,1,1,0],
    'Sex' : ['male', 'female', 'male', 'male', 'male'],
    'Age' : [22,33,44,55,66]
})
pl_df.head()

 

3. 그룹화

데이터의 성별 추이 확인하기

groupby_sex = df.group_by("Sex").agg(
    pl.len().alias('Count')
)
print(groupby_sex)

 

4. 다중 칼럼 그룹화

성별과 항구 별 평균 요금 계산하기

sex_emb_fare = df.group_by(["Embarked", "Sex"]).agg([
    pl.col("Fare").mean().alias("Fare_avg"),
    pl.col("Survived").count().alias("Survived_Cnt")
])

print("\n성별과 항구별 요금 추이와 생존자 추이")
print(sex_emb_fare.head())

 

항구 별 요금의 기초 통계량 계산하기

emb_describe = df.group_by('Embarked').agg([
    pl.len().alias('Count'),
    pl.col('Fare').mean().alias('평균'),
    pl.col('Fare').std().alias('표준편차'),
    pl.col('Fare').max().alias('최댓값'),
    pl.col('Fare').min().alias('최솟값')
])

print("\n항구 별 요금 기초통계량")
print(emb_describe.head())

 

5. 조건부 집계

항구 별 나이가 30살 이하인 생존자의 수 계산하기

emb_age_sur = df.group_by("Embarked").agg([
    pl.len().alias("Count"),
    (pl.col("Age")<=30).sum().alias("30살 이하 빈도 수"),
    ((pl.col("Age")<=30).sum()/pl.len()*100).alias("비율")
])

print("\n항구별 나이가 30살 이하인 생존자 수")
print(emb_age_sur)

 

6. 윈도우 함수

항구별 요금 순위 매기기

ranked_survived = df.with_columns([
    pl.col("Fare").rank().over("Embarked").alias("rate")
])

print('\n항구별 요금 순위 : ')
print(ranked_survived.select(["PassengerId","Embarked","Fare","rate"]).head())

 

7. 필터링

항구가 S이고 나이가 50 이상인 데이터

df.filter((pl.col("Embarked")=='S') & (pl.col("Age")>=50)).head()

 

8. 결측치 관리

결측치 찾기

df.filter(pl.col("Age").is_null())

 

결측치 대체

df = df.with_columns(
    pl.col("Age").fill_null(strategy='mean')
)

'Python' 카테고리의 다른 글

[프로그래머스] 카펫  (0) 2025.06.06
[프로그래머스] 할인행사  (0) 2025.06.01
[프로그래머스] 연속된 부분 수열의 합  (0) 2025.05.26
[프로그래머스] 안전지대  (0) 2025.05.20
[OpenCV2] 이미지 연산  (0) 2025.04.10
TAG more
글 보관함
최근에 올라온 글