파이썬 기초 : Pandas(판다스) DataFrame과 Series, 빌트인 함수
Pandas란?
Pandas는 Python에서 데이터 분석과 조작을 위한 가장 인기 있는 라이브러리 중 하나입니다.
데이터 처리를 단순화하고 효율적으로 수행할 수 있도록 설계된 도구로, **표 형식의 데이터(스프레드시트처럼)**를 다루기에 최적화되어 있습니다.
주로 DataFrame과 Series라는 두 가지 주요 데이터 구조를 기반으로 작동하며, 데이터를 정리, 분석, 변환, 시각화할 때 사용됩니다.
Pandas의 특징
- 쉽고 직관적인 데이터 조작
- 데이터의 필터링, 정렬, 병합, 그룹화 등을 간단히 처리할 수 있습니다.
- 다양한 데이터 포맷 지원
- CSV, Excel, SQL, JSON, HTML 등의 파일 포맷을 읽고 쓸 수 있습니다.
- 고성능 데이터 처리
- NumPy를 기반으로 최적화되어 대규모 데이터 처리에 적합합니다.
- 강력한 데이터 분석 기능
- 데이터 요약, 집계, 변환, 통계 계산 등을 쉽게 수행할 수 있습니다.
- 시각화와의 통합
- Matplotlib 및 Seaborn과 연동하여 데이터 시각화를 지원합니다.
Pandas 설치
Pandas는 Python과 함께 설치되기도 하지만, 설치가 필요하다면 다음 명령어를 사용합니다
Pandas의 주요기능
1. 데이터 생성 및 파일 입출력
함수 | 설명 |
pd.DataFrame() | 2차원 데이터(표 형식) 생성 |
pd.Series() | 1차원 데이터 생성 |
pd.read_csv() | CSV 파일 읽기 |
pd.to_csv() | DataFrame을 CSV 파일로 저장 |
pd.read_excel() | Excel 파일 읽기 |
pd.to_excel() | DataFrame을 Excel 파일로 저장 |
pd.read_json() | JSON 파일 읽기 |
pd.read_sql() | SQL 쿼리를 실행하고 결과를 DataFrame으로 반환 |
pd.read_html() | HTML 테이블을 DataFrame으로 읽기 |
2. 데이터 탐색
함수 | 설명 |
df.head() | 데이터의 상위 n개 행 반환 (기본 5개) |
df.tail() | 데이터의 하위 n개 행 반환 (기본 5개) |
df.info() | 데이터의 구조와 요약 정보 출력 |
df.describe() | 수치형 데이터의 요약 통계(평균, 표준편차, 최솟값 등) |
df.dtypes | 각 열의 데이터 타입 반환 |
df.shape | 데이터의 (행, 열) 크기 반환 |
df.index | DataFrame의 인덱스 정보 반환 |
df.columns | DataFrame의 열 이름 반환 |
df.values | DataFrame 데이터를 배열 형태로 반환 |
3. 데이터 선택 및 필터링
함수 | 설명 |
df['컬럼명'] | 특정 열(컬럼) 선택 |
df.iloc[] | 정수 기반 인덱싱으로 데이터 선택 |
df.loc[] | 라벨 기반 인덱싱으로 데이터 선택 |
df.at[] | 단일 값 선택 (빠름) |
df.iat[] | 단일 값 선택 (정수 기반, 빠름) |
df.query() | 조건문 기반으로 데이터 선택 |
4. 데이터 처리
함수 | 설명 |
df.isnull() | 결측값(NaN) 확인 |
df.notnull() | 결측값이 아닌 데이터 확인 |
df.dropna() | 결측값이 있는 행/열 제거 |
df.fillna() | 결측값을 특정 값으로 대체 |
df.replace() | 특정 값을 다른 값으로 대체 |
df.duplicated() | 중복된 행 확인 |
df.drop_duplicates() | 중복된 행 제거 |
df.rename() | 행/열 이름 변경 |
df.astype() | 데이터 타입 변환 |
5. 데이터 정렬
함수 | 설명 |
df.sort_values() | 특정 열을 기준으로 데이터 정렬 |
df.sort_index() | 인덱스를 기준으로 데이터 정렬 |
df.reset_index() | 기존 인덱스를 제거하고 새로운 정수 인덱스 생성 |
df.set_index() | 특정 열을 인덱스로 설정 |
6. 데이터 연산 및 변환
함수 | 설명 |
df.apply() | 행 또는 열 단위로 함수를 적용 |
df.applymap() | 각 요소에 함수를 적용 |
df.map() | Series에 함수 적용 |
df.pivot() | 데이터를 재구조화 |
df.pivot_table() | 피벗 테이블 생성 |
df.groupby() | 데이터를 그룹화 |
df.aggregate() | 그룹화된 데이터에 여러 함수를 적용 |
7. 통계 및 집계 함수
함수 | 설명 |
df.sum() | 합계를 계산 |
df.mean() | 평균을 계산 |
df.median() | 중앙값을 계산 |
df.var() | 분산을 계산 |
df.std() | 표준편차를 계산 |
df.min() | 최솟값을 반환 |
df.max() | 최댓값을 반환 |
df.count() | 결측값을 제외한 데이터 개수 반환 |
df.corr() | 열 간의 상관 계수 계산 |
df.cov() | 열 간의 공분산 계산 |
8. 데이터 합치기 및 변형
함수 | 설명 |
pd.concat() | 두 개 이상의 데이터프레임을 연결 |
pd.merge() | 두 데이터프레임을 키를 기준으로 병합 |
df.join() | 다른 데이터프레임과 병합 |
pd.melt() | 데이터프레임을 길게 변환 |
df.stack() | 데이터프레임을 스택 형태로 변환 |
df.unstack() | 스택된 데이터를 펼침 |
9. 시각화 함수
함수 | 설명 |
df.plot() | 기본 그래프 생성 |
df.hist() | 히스토그램 생성 |
df.boxplot() | 박스플롯 생성 |
df.scatter() | 산점도 생성 (Matplotlib과 연동) |
Pandas의 핵심 데이터 구조( Series , DataFrame )
Series의 기본적인 개념과 구조
Pandas의 Series는 1차원 데이터를 저장하는 데이터 구조로, **인덱스(index)**와 **값(value)**으로 구성됩니다.
Python의 리스트나 NumPy 배열과 비슷하지만, 각 데이터에 고유한 인덱스가 부여되어 데이터를 더 직관적이고 유연하게 다룰 수 있습니다.
1. Series의 개념
- 1차원 데이터를 다루기 위한 Pandas의 기본 구조.
- 각 데이터(값)는 인덱스와 쌍을 이루어 저장됩니다.
- 인덱스를 통해 데이터를 선택하거나 조작할 수 있습니다.
- 데이터 타입은 동일해야 하며, 문자열, 숫자, 불리언 등 다양한 데이터 타입을 저장할 수 있습니다.
2. Series 생성
pandas.Series()를 사용하여 Series를 생성합니다.
기본 생성
인덱스 지정
3. Series의 구조
Series는 다음과 같은 두 가지 요소로 구성됩니다
- 인덱스(index): 각 값에 대한 라벨(기본값은 정수 0, 1, 2, ...).
- 값(value): 실제 데이터.
4. 주요 특징
- 인덱스(Index)
- 기본적으로 정수형 인덱스(0, 1, 2, ...)를 사용.
- 사용자가 커스텀 인덱스를 지정할 수 있음.
- 인덱스를 통해 데이터의 고유성을 부여하고 조회/필터링 가능.
- 값(Value)
- 인덱스와 연결된 실제 데이터.
- Series의 값은 NumPy 배열(ndarray)로 저장되므로 빠르고 효율적.
- 데이터 타입(Dtype)
- Series는 단일 데이터 타입만 허용합니다. (혼합 데이터는 허용되지 않음.)
5. Series의 주요 기능
데이터 선택
인덱스 이름으로 선택:

정수 인덱스로 선택:
슬라이싱

연산
Series는 배열처럼 연산이 가능합니다.

6. Series와 다른 데이터 구조 비교
특징 | 리스트(List) | NumPy 배열(ndarray) | Pandas Series |
데이터 타입 | 혼합 가능 | 단일 타입 | 단일 타입 |
인덱스 | 자동(0부터 시작) | 자동(0부터 시작) | 커스텀 가능 (문자열 등) |
연산 기능 | 제한적 | 고속 연산 지원 | 고속 연산 + 인덱스 연동 |
메모리 사용 | 더 큼 | 작음 | NumPy 기반으로 효율적 |
DataFrame의 개념
- 2차원 데이터 구조로, 행(row)과 열(column)을 통해 데이터를 구성합니다.
- 각 행과 열에 고유한 **인덱스(index)**와 컬럼(column) 이름이 존재합니다.
- NumPy 배열처럼 수치 데이터를 다룰 수 있으면서도, 다양한 데이터 타입(숫자, 문자열, 날짜 등)을 함께 저장할 수 있습니다.
- 데이터 분석 및 조작을 위한 강력한 메서드와 함수를 제공합니다.
1. DataFrame의 개념
- 2차원 데이터 구조로, 행(row)과 열(column)을 통해 데이터를 구성합니다.
- 각 행과 열에 고유한 **인덱스(index)**와 컬럼(column) 이름이 존재합니다.
- NumPy 배열처럼 수치 데이터를 다룰 수 있으면서도, 다양한 데이터 타입(숫자, 문자열, 날짜 등)을 함께 저장할 수 있습니다.
- 데이터 분석 및 조작을 위한 강력한 메서드와 함수를 제공합니다.
2. DataFrame 생성
리스트로 생성
행(row): 0, 1, 2 (기본 인덱스) , 열(column): ID, Name, Age
딕셔너리로 생성
레이블로생성
3. DataFrame의 기본 구조
구성 요소
- 행(Row):
- 데이터를 가로 방향으로 나타낸 단위.
- 행은 **인덱스(index)**로 구분됩니다.
- 기본적으로 0부터 시작하는 정수형 인덱스를 사용하지만, 사용자가 원하는 값으로 변경할 수 있습니다.
- 열(Column):
- 데이터를 세로 방향으로 나타낸 단위.
- 열은 컬럼(column) 이름으로 구분됩니다.
- 컬럼 이름은 문자열 또는 숫자일 수 있습니다.
- 값(Value):
- 각 셀(cell)에 저장된 실제 데이터.
4. DataFrame 주요 특징
- 인덱스(Index):
- 각 행에 대한 고유 식별자 역할.
- 기본값은 정수형(0부터 시작)이나, 사용자 정의 인덱스를 사용할 수 있음.
- 컬럼(Column):
- 각 열은 특정 속성이나 변수를 나타냄.
- 동일한 데이터 타입을 가질 필요는 없음.
- 데이터 값(Value):
- 2차원 형태로 저장되며, NumPy 배열(ndarray)에 기반.
- 다양한 데이터 타입 지원:
- 숫자, 문자열, 날짜, Boolean 등 혼합 데이터를 저장 가능
6. DataFrame과 Series의 차이
특징 | Series | DataFrame |
차원 | 1차원 | 2차원 |
데이터 구조 | 인덱스 + 값 | 인덱스 + 컬럼 + 값 |
인덱스 지원 | 단일 인덱스 | 행과 열 각각 인덱스를 가짐 |
사용 목적 | 단일 열 데이터 처리 | 여러 열(표 형식 데이터) 처리 |