pandas란 — Series와 DataFrame
이 토픽을 마치면
pandas의 Series와 DataFrame이 무엇인지 설명할 수 있고, CSV 파일을 불러와서 기본적인 조작을 할 수 있습니다.
pandas가 뭔가
pandas는 Python에서 표 형태의 데이터를 다루는 라이브러리입니다. Excel의 스프레드시트를 코드로 다룬다고 생각하면 됩니다.
python
import pandas as pd
# CSV 파일 읽기 — 이 한 줄이면 됩니다df = pd.read_csv("students.csv")print(df)text
이름 나이 점수
0 김훈 25 85
1 이수 23 92
2 박진 27 78pd는 pandas의 관례적 약어입니다. 데이터 분석 코드에서는 거의 항상 이렇게 씁니다.
Series — 한 줄짜리 데이터
Series는 인덱스가 붙은 1차원 배열입니다. DataFrame의 한 열(column)이 Series입니다.
python
import pandas as pd
# Series 만들기scores = pd.Series([85, 92, 78], index=["김훈", "이수", "박진"])print(scores)text
김훈 85
이수 92
박진 78
dtype: int64python
# 인덱스로 접근print(scores["이수"]) # 92
# 조건 필터print(scores[scores >= 80])# 김훈 85# 이수 92
# 연산print(scores.mean()) # 85.0print(scores.max()) # 92리스트와 비슷하지만, 이름으로 접근할 수 있고, 통계 메서드가 내장되어 있습니다.
DataFrame — 표 전체
DataFrame은 여러 Series가 모인 2차원 표입니다. 행(row)과 열(column)이 있습니다.
python
import pandas as pd
# 딕셔너리로 만들기data = { "이름": ["김훈", "이수", "박진"], "나이": [25, 23, 27], "점수": [85, 92, 78]}df = pd.DataFrame(data)print(df)text
이름 나이 점수
0 김훈 25 85
1 이수 23 92
2 박진 27 78기본 조작
python
# 열 선택print(df["이름"]) # Series 반환print(df[["이름", "점수"]]) # DataFrame 반환
# 행 선택print(df.loc[0]) # 0번 행 (이름으로)print(df.iloc[0]) # 0번 행 (위치로)
# 조건 필터high = df[df["점수"] >= 80]print(high)# 이름 나이 점수# 0 김훈 25 85# 1 이수 23 92
# 기본 통계print(df.describe())# 나이와 점수의 평균, 표준편차, 최소/최대 등자주 쓰는 메서드
python
df.head(3) # 처음 3행df.tail(3) # 마지막 3행df.shape # (행 수, 열 수) — 예: (3, 3)df.columns # 열 이름 목록df.dtypes # 각 열의 데이터 타입df.info() # 요약 정보 (결측치 포함)df.sort_values("점수", ascending=False) # 점수 내림차순 정렬열 추가와 삭제
python
# 새 열 추가df["합격"] = df["점수"] >= 80print(df)# 이름 나이 점수 합격# 0 김훈 25 85 True# 1 이수 23 92 True# 2 박진 27 78 False
# 열 삭제df = df.drop("합격", axis=1)# axis=0은 행, axis=1은 열왜 pandas인가
| 작업 | 순수 Python | pandas |
|---|---|---|
| CSV 읽기 | 10줄+ (open, split, 반복) | pd.read_csv() 1줄 |
| 평균 구하기 | sum()/len() 직접 계산 | df.mean() |
| 조건 필터 | for + if | df[df["열"] > 값] |
| 정렬 | sorted() + key | df.sort_values() |
코드량이 줄어들 뿐 아니라, pandas는 내부적으로 C/Cython으로 최적화되어 순수 Python보다 10~100배 빠릅니다.