본문 바로가기

카테고리 없음

[강의 정리] Polars에서 데이터 프레임 다루기

728x90

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 │
│ ---      │ ---   │
│ stri64   │
├──────────┼───────┤
│ 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
📌 추가 학습 자료:

728x90