[Pandas] DataFrame 구조와 산술 연산 정리
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 쪽을 정리해볼 예정이다.
댓글남기기