03. Pandas: 엑셀을 코드로 다루기
"데이터 분석의 8할은 청소(Preprocessing)입니다. Pandas는 최고의 청소 도구입니다."
NumPy가 기계(CPU)를 위한 도구라면, Pandas는 사람(Analyst)을 위한 도구입니다.
NumPy의 행렬 데이터 [[10, 20], [30, 40]]은 컴퓨터에겐 명확하지만, 사람에겐 "그래서 10이 가격이야? 나이야?"라는 의문을 남깁니다. Pandas는 이 삭막한 행렬에 '이름표(Label)'를 붙여줍니다.
1. Series와 DataFrame의 관계
Pandas에는 두 가지 핵심 부품이 있습니다. 마치 레고 블록과 같습니다.
- Series (시리즈): 데이터가 한 줄로 된 것. (1차원)
- DataFrame (데이터프레임): Series가 여러 개 모여서 표(Table)가 된 것. (2차원)
Series는 곧 '컬럼'이다
엑셀에서 '세로 한 줄'을 뜯어내면 그것이 바로 Series입니다.
graph LR
subgraph DF["DataFrame (표)"]
direction LR
Col1["Name<br>(Series)"]
Col2["Age<br>(Series)"]
Col3["Score<br>(Series)"]
Col1 --- Col2 --- Col3
end
style DF fill:#e8f5e9,stroke:#2e7d32
style Col1 fill:#fff3e0,stroke:#e65100
style Col2 fill:#fff3e0,stroke:#e65100
style Col3 fill:#fff3e0,stroke:#e65100
2. DataFrame: 파워풀한 엑셀
Pandas의 핵심은 DataFrame입니다. 쉽게 말해 "프로그래밍 가능한 엑셀 시트"입니다.
- 행(Row) 인덱스: 데이터의 번호표 (예: 1번 손님, 2번 손님...)
- 열(Column) 이름: 데이터의 속성 (예: 이름, 나이, 키...)
- 데이터(Values): 실제 알맹이는 NumPy Array로 되어 있어 엄청 빠릅니다.
graph TD
subgraph Pandas["Pandas DataFrame"]
direction TB
Cols["Column Names (이름표)<br>['Name', 'Age', 'Score']"]
Idx["Index (번호표)<br>[0, 1, 2]"]
Data["NumPy Array (실제 데이터)<br>[[ 'Kim', 20, 95 ],<br> [ 'Lee', 22, 88 ],<br> [ 'Park', 21, 92 ]]"]
Cols --- Data
Idx --- Data
end
style Pandas fill:#e8f5e9,stroke:#2e7d32
style Data fill:#e1f5fe,stroke:#01579b
style Cols fill:#fff3e0,stroke:#e65100
style Idx fill:#fff3e0,stroke:#e65100
3. 코드 예시: 엑셀을 코드로
엑셀 파일을 더블 클릭해서 여는 대신, 코드 한 줄로 불러와서 분석합니다.
import pandas as pd
# 1. 데이터 만들기 (딕셔너리 활용)
data = {
"Name": ["아이언맨", "토르", "헐크"],
"Strength": [100, 500, 1000],
"Intelligent": [500, 50, 100]
}
# 2. DataFrame 생성 (엑셀 시트 만들기)
df = pd.DataFrame(data)
# 3. 데이터 분석
print(df)
# 결과: 표 형태로 출력됨
print(df["Strength"].mean())
# 결과: 533.33 (힘의 평균을 순식간에 계산)
4. 전처리 (Preprocessing): 더러운 데이터 청소하기
현실의 데이터는 교과서처럼 깔끔하지 않습니다. 구멍(NULL)이 뚫려있고, 오타가 있고, 이상한 값이 섞여 있습니다. AI에게 먹이기 전에 이 데이터를 깨끗하게 씻겨야 합니다.
- 결측치(NaN) 처리: 비어있는 값을 평균값으로 채우거나 삭제합니다.
- 필터링: "힘(Strength)이 500 이상인 영웅만 뽑아줘" 같은 조건을 겁니다.
설계자의 시선: Garbage In, Garbage Out
컴퓨터 공학의 절대 법칙입니다. "쓰레기가 들어가면 쓰레기가 나온다."
아무리 최신 AI 모델(GPT-4 등)을 가져와도, 학습시킬 데이터가 엉망이라면 결과도 엉망입니다. 데이터 사이언티스트는 모델을 만드는 시간보다, Pandas로 데이터를 닦고 조이는(Preprocessing) 시간에 80%를 씁니다. Pandas가 중요한 이유입니다.
이제 데이터를 모으고(Pandas), 숫자로 바꿔서(NumPy) 준비를 마쳤습니다. 드디어 이 데이터를 AI의 두뇌인 신경망으로 보낼 차례입니다. 마지막 관문, Tensor로 이동합니다.