Pandas에서 Polars로! 데이터 분석의 새로운 시작
데이터 분석을 더 빠르고 효율적으로!
데이터 분석을 하면서 Pandas를 주로 사용해왔지만, 대용량 데이터를 다룰 때 속도가 느려지고 메모리 사용량이 많아지는 한계를 경험했습니다. 그러던 중 Polars를 접하게 되었고, 이를 활용하면 데이터 분석을 훨씬 더 빠르고 효율적으로 수행할 수 있다는 사실을 알게 되었습니다.
이번 강의를 직접 수강하고, 관련 자료를 참고하면서 Pandas와 Polars의 차이점을 명확히 이해하고 실습을 진행했습니다. 이번에는 Polars에서 데이터 프레임을 다루는 다양한 방법을 학습한 내용을 정리해보겠습니다.
📌 Polars 공식 사이트: https://pola.rs/
📌 강의 수강하기: https://www.inflearn.com/course/right-now-polars#reviews
📌 추가 학습 자료:
📌 Polars에서 데이터 프레임 다루기
1️⃣ 데이터 프레임 생성 및 기본 조작
Polars에서 데이터 프레임을 생성하는 방법은 Pandas와 유사하지만, pl.DataFrame()
을 사용합니다.
import polars as pl
data = {"A": [1, 2, 3], "B": [4, 5, 6]}
df = pl.DataFrame(data)
print(df)
기본 조작 방법으로는 컬럼 선택, 필터링, 새로운 컬럼 추가 등이 있습니다.
# 특정 컬럼 선택
print(df.select("A"))
# 필터링 (A 값이 2 이상인 데이터)
filtered_df = df.filter(pl.col("A") >= 2)
print(filtered_df)
# 새로운 컬럼 추가
df = df.with_columns((df["A"] + df["B"]).alias("C"))
print(df)
2️⃣ 데이터 프레임 결합 (Join & Concatenation)
✅ 데이터 프레임 수직 결합 (Concatenation)
서로 다른 데이터 프레임을 수직으로 결합할 때 pl.concat()
을 사용할 수 있습니다.
df1 = pl.DataFrame({"A": [1, 2], "B": [3, 4]})
df2 = pl.DataFrame({"A": [5, 6], "B": [7, 8]})
# 수직 결합
concatenated_df = pl.concat([df1, df2])
print(concatenated_df)
✅ 데이터 프레임 병합 (Join)
Polars에서는 join()
을 사용하여 두 개의 데이터 프레임을 키 값을 기준으로 병합할 수 있습니다.
df1 = pl.DataFrame({"ID": [1, 2, 3], "Value1": [10, 20, 30]})
df2 = pl.DataFrame({"ID": [1, 2, 4], "Value2": [100, 200, 400]})
# 내부 조인 (Inner Join)
joined_df = df1.join(df2, on="ID", how="inner")
print(joined_df)
조인 방식은 다음과 같이 선택할 수 있습니다.
how="inner"
: 공통된 키 값이 있는 행만 유지how="left"
: 왼쪽 데이터 프레임을 기준으로 조인how="outer"
: 모든 데이터 포함
3️⃣ 데이터 정렬 및 그룹화
✅ 데이터 정렬 (Sorting)
Polars에서는 .sort()
메서드를 사용하여 데이터를 정렬할 수 있습니다.
df = pl.DataFrame({"A": [3, 1, 2], "B": [6, 4, 5]})
# A 컬럼 기준으로 오름차순 정렬
sorted_df = df.sort("A")
print(sorted_df)
# B 컬럼 기준으로 내림차순 정렬
sorted_df_desc = df.sort("B", descending=True)
print(sorted_df_desc)
✅ 데이터 그룹화 (Grouping)
Pandas와 마찬가지로 .groupby()
를 사용하여 특정 컬럼을 기준으로 그룹화를 할 수 있습니다.
df = pl.DataFrame({"Category": ["A", "B", "A", "B", "A"], "Value": [10, 20, 30, 40, 50]})
# 그룹화 및 합계 계산
grouped_df = df.groupby("Category").agg(pl.col("Value").sum().alias("Total"))
print(grouped_df)
출력 결과:
shape: (2, 2)
┌──────────┬───────┐
│ Category │ Total │
│ --- │ --- │
│ str │ i64 │
├──────────┼───────┤
│ A │ 90 │
│ B │ 60 │
└──────────┴───────┘
📌 강의를 듣고 느낀 점
✅ Polars는 데이터 결합과 그룹화에서도 강력하다!
Pandas보다 빠른 조인 연산을 지원하며, 대용량 데이터를 처리할 때 훨씬 효율적이라는 점을 실습을 통해 확인했습니다.
✅ 정렬과 그룹화도 간편하다!
Pandas의 sort_values()
와 groupby()
기능과 유사하지만, 체이닝을 활용해 더욱 직관적으로 사용할 수 있었습니다.
✅ SQL 스타일의 조인과 그룹화가 편리하다!
조인(Join)과 그룹화(Groupby) 기능이 Pandas보다 직관적이며, SQL을 활용하는 것처럼 쉽게 데이터를 변형할 수 있다는 점이 매력적이었습니다.
📢 강의를 추천하는 이유
Polars를 활용하면 대량의 데이터를 더욱 빠르고 효율적으로 처리할 수 있습니다. Pandas와의 차이를 비교하면서 실습을 진행했는데, 데이터 결합, 정렬, 그룹화에서도 큰 성능 차이를 확인할 수 있었습니다.
데이터 분석을 한 단계 더 업그레이드하고 싶다면, 지금 바로 강의를 시작해보세요! 🚀
📌 Polars 공식 사이트: https://pola.rs/
📌 강의 수강하기: https://www.inflearn.com/course/right-now-polars#reviews
📌 추가 학습 자료: