1 분 소요

Pandas 기본기: DataFrame과 연산

데이터 분석을 하다 보면 Pandas는 거의 무조건 쓰게 된다. 단순히 CSV 불러오는 정도는 금방 익히는데, 막상 데이터프레임끼리 연산하거나 변화율을 뽑아야 할 때 매번 검색하게 되더라. 그래서 마침 강의에서 다룰 때 제대로 정리하려 해봤다.

1. DataFrame 구조 다시 보기

DataFrame을 그냥 엑셀 시트 정도로 생각하기 쉬운데, 실제로는 인덱스(Index), 컬럼(Columns), 값(Values)이 각각 독립적으로 관리되는 구조다.

DataFrame 생성 파라미터

pd.DataFrame() 호출 시 자주 쓰는 옵션들:

  • data: 딕셔너리, 넘파이 배열 등 실제 데이터
  • index: 행 라벨 (기본값 0, 1, 2…)
  • columns: 열 이름
  • dtype: 데이터 타입 강제 지정
  • copy: 입력 데이터 복사 여부

딕셔너리로 넘기면 Key가 컬럼명이 되니까 직관적이다.


2. DataFrame 간 산술 연산

데이터프레임끼리 연산할 때 그냥 +, - 써도 되지만, 메서드를 쓰면 결측치(NaN) 처리가 가능해서 훨씬 유연하다.

연산 메서드들

  • add() / sub(): 더하기, 빼기
  • mul() / div(): 곱하기, 나누기
  • mod(): 나머지
  • pow(): 거듭제곱
  • dot(): 행렬곱

fill_value로 결측치 처리

두 데이터프레임 연산 시 한쪽에만 값이 있으면 결과가 NaN이 된다. 이게 은근 귀찮은데, fill_value 옵션으로 해결 가능하다.

# 결측치를 0으로 채우고 더하기
df1.add(df2, fill_value=0)

3. 자주 쓰는 통계/변환 메서드

전처리하면서 자주 쓰는 것들 정리:

  • round(): 소수점 반올림
  • sum(), prod(): 행/열 단위 합계, 곱
  • abs(): 절대값
  • transpose() (또는 .T): 행열 전환
  • rank(): 순위 매기기

4. 변화율 분석

현재 값 자체보다 “이전 대비 얼마나 변했나”가 중요할 때가 있다. 주가 데이터나 시계열 분석에서 특히 많이 쓴다.

diff()와 pct_change()

  • diff(): 이전 값과의 차이 (절대값)
  • pct_change(): 이전 값 대비 변화율 (백분율)

expanding(): 누적 연산

1행부터 현재 행까지 누적으로 합계/평균 등을 구할 때 쓴다. 시간이 흐르면서 데이터가 쌓이는 상황을 다룰 때 유용하다.

# 누적 합계
df.expanding().sum()

정리

DataFrame 구조, 연산 메서드, 변화율 분석까지 다시 훑어봤다. 사실 이런 기본기는 알고 있다고 생각해도 막상 실무에서 쓸 때 헷갈리는 부분이 있어서, 이렇게 한 번 정리해두면 나중에 참고하기 좋다.

다음엔 rolling(), groupby, ewm 쪽을 정리해볼 예정이다.

댓글남기기