Pandas
Pandas
Pandas는 파이썬 기반의 강력한 데이터 조작 및 분석 라이브러리로, 데이터 과학, 머신러닝, 통계 분석, 비즈니스 인텔리전스 등 다양한 분야에서 널리 사용됩니다. Pandas는 구조화된 데이터를 효율적으로 처리할 수 있는 고수준의 데이터 구조와 조작 도구를 제공하여, 데이터 정제, 변환, 분석 작업을 직관적이고 빠르게 수행할 수 있도록 도와줍니다. 이 문서는 Pandas의 핵심 개념, 주요 기능, 사용 예시 및 실무 팁을 중심으로 설명합니다.
개요
Pandas는 2008년 웨스 맥키니(Wes McKinney)에 의해 개발되었으며, 오픈 소스 프로젝트로 현재도 활발히 유지보수되고 있습니다. 이름의 유래는 "Panel Data"(패널 데이터)에서 비롯되었으며, 다차원 시계열 데이터를 다루는 데서 착안되었습니다. Pandas는 NumPy를 기반으로 구축되어 있으며, 데이터프레임(DataFrame)과 시리즈(Series)라는 두 가지 핵심 데이터 구조를 통해 데이터를 유연하게 조작할 수 있습니다.
핵심 데이터 구조
Series
Series
는 일차원 배열 형태의 데이터 구조로, 라벨(인덱스)이 붙은 데이터의 집합입니다. 각 요소는 고유한 인덱스를 가지며, NumPy 배열과 유사하지만 인덱싱 기능이 훨씬 강력합니다.
import pandas as pd
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s)
출력:
a 10
b 20
c 30
dtype: int64
DataFrame
DataFrame
은 이차원 테이블 형태의 데이터 구조로, 열(column)과 행(row)으로 구성됩니다. 각 열은 Series로 간주할 수 있으며, 다양한 데이터 타입을 동시에 포함할 수 있습니다. Excel 스프레드시트나 SQL 테이블과 유사합니다.
df = pd.DataFrame({
'이름': ['김철수', '이영희', '박민수'],
'나이': [25, 30, 35],
'직업': ['학생', '개발자', '디자이너']
})
print(df)
출력:
이름 나이 직업
0 김철수 25 학생
1 이영희 30 개발자
2 박민수 35 디자이너
주요 기능
데이터 읽기 및 쓰기
Pandas는 다양한 파일 형식을 지원하여 데이터 입출력이 매우 편리합니다.
pd.[read_csv](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B4%80%EB%A6%AC/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%B6%84%EC%84%9D%20%EB%8F%84%EA%B5%AC/read_csv)()
: CSV 파일 읽기pd.[read_excel](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B4%80%EB%A6%AC/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%B6%84%EC%84%9D%20%EB%8F%84%EA%B5%AC/read_excel)()
: 엑셀 파일 읽기pd.[read_json](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B4%80%EB%A6%AC/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%B6%84%EC%84%9D%20%EB%8F%84%EA%B5%AC/read_json)()
: JSON 파일 읽기df.[to_csv](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B4%80%EB%A6%AC/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%B6%84%EC%84%9D%20%EB%8F%84%EA%B5%AC/to_csv)()
: CSV로 저장df.[to_excel](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B4%80%EB%A6%AC/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%B6%84%EC%84%9D%20%EB%8F%84%EA%B5%AC/to_excel)()
: 엑셀로 저장
# CSV 파일 읽기
df = pd_csv('data.csv')
# 결과를 CSV로 저장
df.to_csv('output.csv', index=False)
데이터 정제
실제 데이터는 결측치, 중복값, 형식 오류 등을 포함하는 경우가 많습니다. Pandas는 이를 처리하기 위한 다양한 메서드를 제공합니다.
df.isnull()
: 결측치 확인df.[dropna](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%A0%95%EC%A0%9C/dropna)()
: 결측치 제거df.[fillna](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%A0%95%EC%A0%9C/fillna)(value)
: 결측치 대체df.[duplicated](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%A0%95%EC%A0%9C/duplicated)()
: 중복 행 확인df.[drop_duplicates](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%A0%95%EC%A0%9C/drop_duplicates)()
: 중복 행 제거
# 결측치를 평균값으로 대체
df['나이'].fillna(df['나이'].mean(), inplace=True)
데이터 선택 및 필터링
Pandas는 데이터를 선택하고 필터링하는 다양한 방법을 제공합니다.
df['열이름']
: 특정 열 선택df.[loc](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%84%A0%ED%83%9D/loc)[]
: 라벨 기반 선택df.[iloc](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%84%A0%ED%83%9D/iloc)[]
: 위치 기반 선택- 불리언 인덱싱: 조건에 맞는 데이터 필터링
# 나이가 30 이상인 사람 필터링
adults = df[df['나이'] >= 30]
데이터 변환
df.[groupby](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%B6%84%EC%84%9D/groupby)()
: 그룹화 연산df.[apply](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%ED%95%A8%EC%88%98%ED%98%95%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/apply)()
: 사용자 정의 함수 적용df.[rename](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%B3%80%ED%99%98/rename)()
: 열 이름 변경df.[sort_values](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%B6%84%EC%84%9D/sort_values)()
: 정렬
# 직업별 평균 나이 계산
avg_age_by_job = df.groupby('직업')['나이'].mean()
실무 팁
- 메모리 효율성: 큰 데이터셋을 다룰 때는
dtype
을 적절히 지정하여 메모리 사용량을 줄일 수 있습니다. - inplace=True 주의:
inplace=True
는 원본 데이터를 수정하므로, 사전 복사본을 유지하는 것이 안전합니다. - 벡터화 연산 활용: 반복문 대신 Pandas의 벡터화 연산을 사용하면 성능이 크게 향상됩니다.
관련 기술 및 도구
- NumPy: Pandas의 기반 라이브러리로, 수치 연산을 담당합니다.
- Matplotlib/Seaborn: Pandas 데이터 시각화에 자주 함께 사용됩니다.
- Jupyter Notebook: Pandas와의 호환성이 뛰어나 데이터 탐색에 적합합니다.
참고 자료
- 공식 문서
- McKinney, W. (2017). Python for Data Analysis. O'Reilly Media.
- GitHub 저장소: pandas-dev/pandas
Pandas는 데이터 과학의 핵심 도구 중 하나로, 데이터 조작의 표준으로 자리 잡고 있습니다. 익숙해지면 반복적인 데이터 작업을 몇 줄의 코드로 해결할 수 있어, 데이터 분석 프로세스의 효율성을 크게 높일 수 있습니다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.