판다스 기본 — 시리즈와 데이터프레임
교재 6.1 ~ 6.3 절. 판다스의 두 핵심 자료구조 Series · DataFrame 과 자료형, 결손값을 정리합니다.
1. 시리즈 (Series) — 1차원 레이블 배열
같은 자료형의 데이터를 저장하는 인덱싱된 1차원 배열.
PYTHON
import pandas as pd
se = pd.Series([10, 20, 30, 40])
print(se)
# 0 10
# 1 20
# 2 30
# 3 40
# dtype: int641.1 인덱싱 — 리스트와 같은 문법
PYTHON
se[0] # 10
se[1] # 201.2 인덱스를 레이블로 변경
PYTHON
se.index = ['a', 'b', 'c', 'd']
se['a'] # 101.3 딕셔너리로부터 생성
PYTHON
income = {'1월': 80, '2월': 95, '3월': 120, '4월': 110}
income_se = pd.Series(income)
income_se.max() # 120
income_se.mean() # 101.252. 결손값 (Missing Value)
정제되지 않은 현실 데이터에는 비어있는 값이 많습니다. 판다스는 이를 NaN(Not a Number) 으로 표기하고, 전용 함수로 탐지·처리합니다.
PYTHON
import numpy as np
s = pd.Series([1, 2, np.nan, 4])
s.isna()
# 0 False
# 1 False
# 2 True
# 3 False세 가지 핵심 함수:
| 함수 | 역할 |
|---|---|
isna() | Boolean 으로 결손 여부 반환 |
dropna() | 결손 포함 행/열 제거 |
fillna(value) | 결손을 특정 값으로 채움 |
3. 데이터프레임 (DataFrame) — 2차원 테이블
3.1 왜 2차원이 필요한가?
수익뿐 아니라 지출도 같이 관리하고 싶다면 1D Series 로는 부족합니다.
PYTHON
income_se = pd.Series({'1월': 80, '2월': 95, '3월': 120, '4월': 110})
expenses_se = pd.Series({'1월': 50, '2월': 55, '3월': 70, '4월': 65 })
df = pd.DataFrame({'수익': income_se, '지출': expenses_se})
print(df)
# 수익 지출
# 1월 80 50
# 2월 95 55
# 3월 120 70
# 4월 110 653.2 Series 와의 차원 비교
income_se는 월 이름이 인덱스일 뿐이므로 실질적으로 1차원df는 행(월) + 열(수익/지출) 2차원
3.3 출력 모양
- 주피터 노트북에서는
df만 입력하면 HTML 표 print(df)는 텍스트 형식
4. 자료형 요약
| 자료구조 | 차원 | 예시 |
|---|---|---|
pd.Series | 1D | 월별 수익, 한 열 |
pd.DataFrame | 2D | 여러 열을 가진 표 전체 |
pd.Index / pd.MultiIndex | 레이블 메타데이터 | 행·열 이름 관리 |
📝 Checkpoint
Quiz
판다스 기본 Checkpoint
Q 1 / 3