끄적끄적

2025.07.02 Pandas 실무 기초 세션 1 본문

[스파르타]내일배움캠프 데이터 분석 트랙/Session

2025.07.02 Pandas 실무 기초 세션 1

kminx 2025. 7. 9. 16:46
튜터 김연준 튜터님
학습 목표 1. Pandas의 기본 데이터 구조 SeriesDataFrame을 명확히 이해한다.
2. 결측치 개념인 NaN과 Null의 차이를 파악하고 적절히 처리한다.
3. 비교 연산자/논리 연산자/조건 필터링을 통해 행(row)/열(column) 서브셋 추출을 연습한다.
4. drop_duplicates()isin()isnull()sample()loc/ilocnlargest() 등
실무에서 반복되는 전처리 코드를 직접 다뤄본다.
더보기
더보기

목차

  1. Pandas 기본 구조
    • Series
    • DataFrame
    • NaN vs Null
  2. 조건 필터링과 서브셋 추출
    • 비교 연산자, 논리 연산자, any, all
    • isin(), isnull()
  3. 중복 제거와 샘플링
    • drop_duplicates()
    • sample()
    • nlargest(), nsmallest()
  4. loc / iloc 비교

 

1️⃣ Pandas 기본 구조

 

📌 Series

  • 정의: 인덱스를 가진 1차원 배열
  • 한 열 또는 한 행으로 다룰 수 있다.
import pandas as pd

# Series 예시
s = pd.Series([1, 2, 3])
print(s)

 

📌 DataFrame

  • 정의: 여러 Series가 열 단위로 모인 2차원 표
  • SQL 테이블과 동일.
df = pd.DataFrame(
    {"a": [4, 5, 6],
     "b": [7, 8, 9],
     "c": [10, 11, 12]},
    index=[1, 2, 3]
)
print(df)

 

📌 NaN vs Null

개념 정의  실습
NaN Not a Number 수치 연산에서 결측값
Null 값이 없음 DB에서 Null, Pandas에선 NaN

 

import numpy as np

df = pd.DataFrame({'x': [1, np.nan, 3]})
print(df)
print(pd.isnull(df))# 결측값 여부 True/False

 

 

2️⃣ 조건 필터링과 서브셋 추출

 

📌 비교 연산자 / 논리 연산자

  • ==!=<><=>=
  • &(AND), |(OR), ~(NOT)
  • any(), all() 도 함께 실습
# DataFrame 예시
df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})

# 조건 연산자
df[df['a'] > 1]

# 논리연산자 AND
df[(df['a'] > 1) & (df['b'] < 6)]

# any(), all() 활용
(df > 1).any(axis=0)# 열 단위: 하나라도 True면 True
(df > 1).all(axis=1)# 행 단위: 모두 True면 True

 

📌 isin()

df['a'].isin([5])
# 'a' 컬럼에서 값이 5인 항목 여부 True/False

 

📌 isnull()

pd.isnull(df)
# DataFrame 전체에서 결측값 여부

 

 

3️⃣ 중복 제거와 샘플링

 

📌 drop_duplicates()

df = df.drop_duplicates(keep='last')
# 중복된 행이 있으면 마지막 값만 남기고 제거

 

 

📌sample()

df.sample(frac=0.3)
# 전체의 30%를 무작위 추출

 

📌 nlargest(), nsmallest()

df = pd.DataFrame({'a': [1, 2, 3, 4, 5]})

df.nlargest(1, 'a')
# 'a' 컬럼에서 가장 큰 값 1개 선택

df.nsmallest(2, 'a')
# 'a' 컬럼에서 가장 작은 값 2개 선택

 

 

4️⃣ loc / iloc 심화 비교

 

📌 loc: 인덱스 라벨 기준으로 선택

  • 예시: df.loc[:3, ['a']] → 인덱스 라벨 0~3행의 'a' 컬럼 선택

 

📌 iloc: 인덱스 정수 위치 기준으로 선택

  • 예시: df.iloc[:3, [1, 3]] → 앞쪽 3행의 2번째, 4번째 열 선택
df.iloc[-2:]
# 마지막 두 행 선택