티스토리 뷰
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
- 머신러닝 #lightgbm #goss #ebf
- #docker #docker compose
- #with recursive #입양시각 구하기(2) #mysql
- # 프로그래머스 #연속된 부분수열의 합 #이중 포인터 #누적합
- 프로젝트 #머신러닝 #regression #eda #preprocessing #modeling
- #tf idf
- randomforest #bagging #머신러닝 #하이퍼파라미터 튜닝
- #seq2seq #encoder #decoder #teacher forcing
- #물고기 종류별 대어 찾기 #즐겨찾기가 가장 많은 식당 정보 출력하기 #mysql #programmers
- #python #프로그래머스 #외계어사전 #itertools #순열과조합
- #자연어 처리 #정수 인코딩 #빈도 수 기반
- #웹 프로그래밍 #서버 #클라이언트 #http #was
- #django #mvt 패턴
- #opencv #이미지 연산 #합성
- #프로그래머스 #안전지대 #시뮬레이션
- 자연어 처리 #정제 #정규표현식 #어간 추출 #표제어 추출
- #opencv #이미지 읽기 #이미지 제작 #관심영역 지정 #스레시홀딩
- python #프로그래머스 #겹치는선분의길이
- 로지스틱 회귀 #오즈비 #최대우도추정법 #머신러닝
- #docker #container #docker command
- 머신러닝 #xgboost #
- 머신러닝 #project #classification #dacon
- #docker #image #build #dockerfile
- 잘라서 배열로 저장하기 #2차원으로 만들기
- pca #주성분분석 #특이값분해 #고유값분해 #공분산행렬 #차원의 저주
- # 할인행사 #counter #딕셔너리 #프로그래머스
- # 프로그래머스 # 카펫 # 완전탐색
- nlp #토큰화 #nltk #konply
- #attention #deeplearning
- #polars #대용량 데이터셋 처리
글 보관함
최근에 올라온 글