← 목록으로
단계 02

Pandas 데이터 처리

DataFrame 사고방식, 데이터 불러오기·필터·집계·조인 — 이후 Spark DataFrame과 1:1로 대응됩니다.

DataFrame 사고방식

  • 행(row) = 하나의 레코드, 열(column) = 하나의 속성
  • 반복문 대신 열 단위 연산으로 생각합니다 (벡터화)
  • 대부분의 작업은 선택 → 변환 → 집계 3단계의 조합
import pandas as pd

df = pd.read_csv("sales.csv")       # 불러오기
df.head()                            # 앞 5행
df.info()                            # 타입·결측치
df.describe()                        # 기초 통계

핵심 연산 6가지

# 1. 선택
df[["region", "amount"]]
df.loc[df["amount"] > 100]

# 2. 새 열
df["amount_krw"] = df["amount"] * 1350

# 3. 집계
df.groupby("region")["amount"].sum()
df.groupby(["region", "month"]).agg(total=("amount", "sum"), cnt=("amount", "count"))

# 4. 정렬
df.sort_values("amount", ascending=False)

# 5. 조인
regions = pd.read_csv("regions.csv")
merged = df.merge(regions, on="region", how="left")

# 6. 결측치
df.dropna()
df.fillna({"amount": 0})

파일 포맷별 읽기/쓰기

pd.read_csv("a.csv");   df.to_csv("out.csv", index=False)
pd.read_json("a.json"); df.to_json("out.json", orient="records")
pd.read_parquet("a.parquet"); df.to_parquet("out.parquet")   # pip install pyarrow

Parquet은 5단계(분산 저장)에서 자세히 다룹니다. 열 지향 + 압축이라 CSV보다 훨씬 빠르고 작습니다.

Pandas ↔ Spark 대응표 (미리보기)

PandasPySpark
pd.read_csv()spark.read.csv()
df[df.a > 1]df.filter(df.a > 1)
df.groupby("k").sum()df.groupBy("k").sum()
df.merge(o, on="k")df.join(o, "k")
df.head()df.show()

연습 과제

  1. 공공데이터포털에서 CSV 하나를 받아 read_csvinfo() → 결측치 처리
  2. 특정 열 기준으로 groupby 집계 후 상위 10개 출력
  3. 두 CSV를 merge하고 결과를 Parquet으로 저장, 파일 크기 비교