본문으로 건너뛰기
AIDevOps
  • Learn
  • Learning Paths
  • Practice
  • Open Source
  • Books
  • Engineering

    AI DevOpsAI 서비스 개발·운영 전체 지도LLMOpsLLM 배포·평가·관측실전 프로젝트AI Agent 프로젝트 실습

    Knowledge

    Docs기술 문서 모음Blog엔지니어링 아티클Plogger개발 기록 피드

    Validate

    Certification3단계 역량 인증 · 준비 중
AI Models
LlamaMistralGemmaDeepSeekQwen
🧠 AI Core
AI 입문 & 로드맵ML FundamentalsLLM Fundamentals|Python AIC++|PyTorchTensorFlowJAX
🤖 AI 실전 개발
AI 실전 입문 & 로드맵Hugging FaceLangChainLlamaIndexLLMOps|LangGraphMCPMulti-AgentAgent Evaluation
🧠 AI Agent 개발
금융 AI AgentLLM API 서버주식 투자 AgentAIOps AI Agent교육 AI Agent코딩 AI Agent
🌱 Spring Cloud
Spring 입문 & 로드맵Spring Cloud GatewaySpring BootJava|Spring AISpring SecuritySpring BatchSpring JPA
🐳 DevOps
DevOps 입문 & 로드맵LinuxDockerCI/CD|Kubernetes 기본K8s 심화/실무PrometheusGrafana
🧱 인프라
인프라 입문 & 로드맵NginxRedis
☁️ 클라우드
클라우드 입문 & 로드맵AWSGCPAzureNCPCloudflare
🎨 Frontend
Frontend 입문 & 로드맵JavaScriptTypeScript|ReactNext.js|VueNuxt
📱 Mobile
Mobile 입문 & 로드맵KotlinAndroidFlutter
⚙️ Backend
Backend 입문 & 로드맵Python 기본FastAPIDjangoFlask|CGoGinNode.js
💾 Database
DB 입문 & 로드맵공통 SQLOracleMySQLPostgreSQL|MongoDB벡터 DB
🧪 검증
k6JMeternGrinder
AIDevOps

Engineering AI. From Code to Production.
AI와 AI Agent를 개발하고 운영하기 위한 엔지니어링 학습 플랫폼

Learn

  • 전체 가이드
  • Learning Paths
  • Practice
  • Books

Resources

  • AI DevOps
  • LLMOps
  • 실전 프로젝트
  • Docs
  • Blog
  • Plogger
  • Open Source
  • Certification (준비 중)

Start Here

  • AI Core 로드맵
  • AI 실전 개발 로드맵
  • Spring Cloud 로드맵
  • DevOps 로드맵
  • 인프라 로드맵

 

  • 클라우드 로드맵
  • Frontend 로드맵
  • Mobile 로드맵
  • Backend 로드맵
  • Database 로드맵
© 2026 AI DevOps Korea. All rights reserved.
이용약관개인정보처리방침Sitemaptestforge.kr
  1. Home
  2. Learn
  3. Pandas
Python 데이터 분석 완전 가이드

🐼 Pandas 완전 가이드

Visitors

Pandas로 CSV, Excel, DB 데이터를 읽고 정제하며 집계합니다. 인덱싱, 병합, groupby 내부 동작, 성능 최적화까지 — AI/ML에 들어가기 전 데이터 품질을 만들기 위한 핵심 도구를 다룹니다.

  • Beginner · 입문
  • 업데이트 2026.09.18
  • 약 6분 읽기
  • 11개 섹션
  • 예제 코드 7개
  • 웹 IDE 실습 제공
🐼

Pandas 웹 IDE

설치 없이 브라우저에서 코드를 실행하고 단계별 예제로 익혀보세요.

웹 IDE 열기 →
데이터 정제CSV/Excel 분석집계 리포트ML 전처리

관련 프레임워크 & 개발환경

🐍Python 기본→

목차

0 / 13
  1. 가이드 사용법
  2. 구조 다이어그램
  3. Pandas란?
  4. 데이터 로드
  5. 인덱싱 & 필터링
  6. 정제
  7. 병합 (merge/concat)
  8. 집계 (Split-Apply-Combine)
  9. 성능 최적화
  10. 저장
  11. Pandas 설계
  12. 운영 기준
  13. 검증 전략
목차 13개 섹션
  1. 가이드 사용법
  2. 구조 다이어그램
  3. Pandas란?
  4. 데이터 로드
  5. 인덱싱 & 필터링
  6. 정제
  7. 병합 (merge/concat)
  8. 집계 (Split-Apply-Combine)
  9. 성능 최적화
  10. 저장
  11. Pandas 설계
  12. 운영 기준
  13. 검증 전략

가이드 사용법

읽는 방향

Pandas를 실무 흐름으로 이해하기

Pandas로 CSV, Excel, DB 데이터를 읽고 정제하며 집계합니다. 인덱싱, 병합, groupby 내부 동작, 성능 최적화까지 — AI/ML에 들어가기 전 데이터 품질을 만들기 위한 핵심 도구를 다룹니다. 이 가이드는 개념을 나열하기보다, 실제 프로젝트에서 판단해야 하는 순서대로 내용을 따라갈 수 있게 구성했습니다.

핵심 관점

백엔드 / 시스템 개발

문법보다 요청이 들어와 검증, 처리, 저장, 응답으로 이어지는 경계를 먼저 잡습니다.

데이터 정제CSV/Excel 분석집계 리포트ML 전처리

구조 다이어그램

글로 읽은 내용을 머릿속에 오래 남기려면 먼저 흐름을 그림으로 잡는 편이 좋습니다. 아래 두 그림은 Pandas를 학습할 때 계속 되돌아볼 수 있는 기준 지도입니다.

학습 흐름

다이어그램 렌더링 중…

아키텍처 관점

다이어그램 렌더링 중…

Pandas란?

Pandas를 처음 펼칠 때는 세부 명령보다 큰 그림이 먼저입니다. 이 섹션에서는 앞으로 배울 개념들이 어떤 문제를 풀기 위해 등장했는지부터 잡아봅니다.

Pandas는 표 형태 데이터를 다루는 Python 라이브러리입니다. DataFrame을 중심으로 필터링, 결측치 처리, 그룹 집계, 조인, 파일 입출력을 간결하게 처리합니다.
객체설명
Series1차원 라벨 배열입니다.
DataFrame행과 열을 가진 2차원 표 데이터입니다.
Index행/열 라벨과 정렬 기준입니다.

데이터 로드

여기서는 데이터 로드을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.

CSV, Excel, JSON 등 다양한 데이터 소스를 DataFrame으로 읽습니다.
PYTHON
import pandas as pd

df = pd.read_csv("orders.csv")
print(df.head())
print(df.info())

인덱싱 & 필터링

여기서는 인덱싱 & 필터링을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.

`loc`은 라벨(이름) 기준으로, `iloc`은 정수 위치 기준으로 행/열에 접근합니다. 조건식을 대괄호에 넣는 불리언 인덱싱은 SQL의 WHERE절과 같은 역할을 합니다.
indexing.pyPYTHON
# loc — 라벨 기준 (컬럼 이름, 인덱스 값)
df.loc[0, "amount"]
df.loc[df["amount"] > 10000, ["user_id", "amount"]]

# iloc — 정수 위치 기준 (엑셀의 셀 좌표처럼)
df.iloc[0, 2]        # 0번째 행, 2번째 열
df.iloc[:5, :3]       # 처음 5행, 처음 3열

# 불리언 인덱싱 — 조건을 만족하는 행만 선택
high_value = df[(df["amount"] > 10000) & (df["month"] == "2026-01")]
방식기준예시
loc라벨(컬럼명, 인덱스 값)df.loc[3, "amount"]
iloc정수 위치df.iloc[3, 1]
불리언 인덱싱조건식 결과(True/False)df[df["amount"] > 100]

Tip

loc과 iloc을 헷갈려서 df[0:3]처럼 슬라이스만 쓰면 정수 위치와 라벨 기준이 뒤섞여 예상과 다른 결과가 나올 수 있습니다 — 의도를 명확히 하려면 항상 loc/iloc을 명시하세요.

정제

여기서는 정제을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.

결측치, 타입 변환, 파생 컬럼 생성을 먼저 정리해야 분석 결과가 안정적입니다.
PYTHON
df = df.dropna(subset=["user_id", "amount"])
df["amount"] = df["amount"].astype(float)
df["ordered_at"] = pd.to_datetime(df["ordered_at"])
df["month"] = df["ordered_at"].dt.to_period("M")

병합 (merge/concat)

여기서는 병합 (merge/concat)을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.

여러 테이블을 하나로 합칠 때 `concat`은 단순히 위/아래나 좌/우로 이어 붙이고, `merge`는 공통 키를 기준으로 SQL JOIN처럼 관계를 맺어 합칩니다. `how` 옵션으로 일치하지 않는 행을 어떻게 처리할지 결정합니다.
merge.pyPYTHON
orders = pd.DataFrame({"order_id": [1, 2, 3], "user_id": [10, 20, 10]})
users  = pd.DataFrame({"user_id": [10, 20, 30], "name": ["Ada", "Linus", "Grace"]})

# INNER JOIN — 양쪽에 모두 있는 user_id만 남음
inner = orders.merge(users, on="user_id", how="inner")

# LEFT JOIN — orders는 모두 유지, 매칭 안 되면 NaN
left = orders.merge(users, on="user_id", how="left")

# 단순 이어붙이기 (같은 컬럼 구조의 데이터를 위아래로)
combined = pd.concat([orders, orders], ignore_index=True)
how결과
inner (기본값)양쪽 키가 모두 일치하는 행만 남김
left왼쪽 DataFrame은 모두 유지, 매칭 없으면 NaN
outer양쪽 모든 행을 유지, 매칭 없으면 NaN

Tip

merge 후 예상보다 행 수가 늘어났다면, 키 컬럼에 중복값이 있어 다대다(N:M) 매칭이 발생했을 가능성이 높습니다 — merge 전에 `df[key].duplicated().sum()`으로 중복을 먼저 확인하세요.

집계 (Split-Apply-Combine)

여기서는 집계 (Split-Apply-Combine)을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.

groupby는 "그룹으로 나누고(Split) → 각 그룹에 함수를 적용하고(Apply) → 결과를 다시 합치는(Combine)" 3단계로 동작합니다. 이 모델을 이해하면 agg에 어떤 값이 들어와도 결과가 왜 그렇게 나오는지 예측할 수 있습니다.
다이어그램 렌더링 중…
PYTHON
monthly = (
    df.groupby("month")
      .agg(order_count=("id", "count"), revenue=("amount", "sum"))
      .reset_index()
)
print(monthly)

성능 최적화

여기서는 성능 최적화을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.

행 단위로 순회하는 `apply`나 `iterrows`는 코드는 간단하지만, 벡터화 연산보다 수십~수백 배 느립니다. 컬럼 전체에 대한 연산은 가능한 한 Pandas/NumPy의 벡터화 메서드로 표현하세요.
performance.pyPYTHON
# 느림 — 한 행씩 Python 레벨에서 반복
df["discounted"] = df.apply(lambda row: row["amount"] * 0.9 if row["vip"] else row["amount"], axis=1)

# 빠름 — 벡터화 연산 (내부적으로 C로 구현된 배열 연산)
df["discounted"] = df["amount"].where(~df["vip"], df["amount"] * 0.9)

# 대용량 CSV는 처음부터 필요한 컬럼/타입만 지정해 메모리 절약
df = pd.read_csv("orders.csv", usecols=["user_id", "amount"], dtype={"user_id": "int32"})

Tip

`df.info(memory_usage="deep")`로 실제 메모리 사용량을 확인하세요 — object(문자열) 타입 컬럼이 예상보다 훨씬 많은 메모리를 차지하는 경우가 흔합니다. 반복되는 문자열 값이 많다면 category 타입으로 바꾸면 메모리를 크게 줄일 수 있습니다.

저장

여기서는 저장을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.

정제 결과를 CSV, Parquet, Excel 등 다음 단계에서 쓰기 좋은 형식으로 저장합니다.
PYTHON
monthly.to_csv("monthly_report.csv", index=False)
monthly.to_parquet("monthly_report.parquet", index=False)

Tip

컬럼이 많고 반복 조회가 잦은 대용량 데이터는 CSV보다 Parquet을 권장합니다 — 컬럼 단위 압축과 스키마(타입 정보) 보존 덕분에 파일 크기와 재로딩 속도 모두 유리합니다.

Pandas 실무 설계

Pandas 실무 설계은 선택지가 갈리는 지점입니다. 표를 기준으로 각 방법의 쓰임새와 운영상의 차이를 비교해두면 이후 판단이 훨씬 쉬워집니다.

Pandas는 notebook 분석 코드와 재사용 가능한 transform 함수를 분리해야 합니다. schema, dtype, missing value 정책을 명시해야 파이프라인이 안정됩니다.
결정 지점확인 질문실무 기준
경계Pandas 코드에서 바뀌기 쉬운 부분은 어디인가?입출력, 설정, 외부 연동, 핵심 규칙을 분리합니다.
상태상태가 어디서 생성되고 어디서 사라지는가?상태 소유자와 수명 주기를 코드로 드러냅니다.
장애실패했을 때 호출자는 무엇을 받는가?timeout, fallback, error contract를 먼저 정합니다.

Pandas 운영 기준

이 섹션은 Pandas 운영 기준을 실무 관점에서 정리합니다. 개념을 외우기보다, 어떤 상황에서 이 기준을 꺼내 쓸지에 초점을 맞춰보세요.

대용량 데이터에서는 copy 비용, object dtype, groupby/join 메모리 사용량, chunk 처리 전략이 중요합니다.

Tip

  • dtype contract
  • chunk processing
  • null ratio checks
  • data drift report

Pandas 검증 전략

Pandas 검증 전략은 선택지가 갈리는 지점입니다. 표를 기준으로 각 방법의 쓰임새와 운영상의 차이를 비교해두면 이후 판단이 훨씬 쉬워집니다.

데이터 품질은 row count, null ratio, unique constraint, distribution drift를 테스트해야 합니다.
품질 축검증 방법완료 기준
정확성정상/실패 케이스를 자동화합니다.핵심 시나리오가 재현 가능하게 통과합니다.
회귀 방지버그 수정 시 동일 케이스를 테스트로 남깁니다.같은 장애가 다시 배포되지 않습니다.
운영성로그, 메트릭, 알림을 확인합니다.문제가 생겼을 때 원인 추적 경로가 있습니다.