끄적이는 개발노트
260518_강의 정리 (Pandas) 본문
728x90
■ Pandas
- 정의
- NumPy 기반으로 만들어진 Python의 대표적인 데이터 분석 라이브러리
- NumPy의 빠른 수치계산 기능을 기반으로 동작
- 엑셀/SQL 같은 테이블 데이터를 쉽게 다룸
- 데이터 전처리, 통계, 시계열 처리 등에 특화
- NumPy 기반으로 만들어진 Python의 대표적인 데이터 분석 라이브러리
- 특징
- 데이터 분석에 최적화된 고수준 자료구조 제공
- NumPy 기반
- Pandas 내부 연산은 대부분 NumPy ndarrary 기반으로 동작
- 테이블 구조 지원
- Pandas는 엑셀/SQL 같은 구조를 다루기 쉬움
- 인덱스 (Index) 기반 데이터 관리
- Pandas는 단순 배열 번호가 아닌 label 기반 인덱스 가능
- 자료구조
- Series (1차원)
- 하나의 열(column)같은 구조
- NumPy 배열과 유사
- 하나의 변수 표현
- DataFrame (2차원)
- 엑셀 테이블 형태
- 행(row) + 열(column) + 인덱스(index)
- Series (1차원)
- 내부 구조 이해
- NumPy ndarray + dict 구조
- DataFrame은 개념적으로 dict(column_name → Series) 형태에 가까움
- 열(column) 중심 저장 방식
- NumPy ndarray + dict 구조
- 열 중심 저장 (Column-Oriented)
- 열(column) 단위로 저장
- 데이터 분석은 보통 열 전체 계산이 많기 때문에 열 중심이 더 빠르게 수행됨
- 벡터화 (Vectorized Operation)
- Pandas는 반복문보다 배열 전체 연산을 지향
- 내부적으로 NumPy/C 기반 연산 사용 → 처리 빠름
- 코드 간결
- ex) df["age"] + 1 -> 모든 값에 자동 적용
- 데이터 전처리 (Data Transformation)
- Pandas의 가장 핵심 기능
- 결측값 처리
- df.dropna()
- df.fillna(0)
- 데이터 필터링
- df[df["age"] > 20]
- 정렬
- df.sort_values("age")
- 그룹화 (GroupBy)
- df.groupby("gender").mean()
- 데이터 병합 (Merge)
- pd.merge(df1, df2, on="id")
- SQL JOIN과 유사
- 결측값 처리
- Pandas의 가장 핵심 기능
- 통계 함수와 상관분석
- 기술통계 : df.describe()
- 평균 (mean)
- 표준편차 (std)
- 최소값 (min)
- 최대값 (max)
- 상관분석 : df.corr()
- -1 ~ 1
- 기술통계 : df.describe()
- 문자열 처리
- Pandas는 벡터화된 문자열 함수 제공
- ex) df["name"].str.upper()
- 데이터 요약 기능
- 빈도수 계산
- df["gender"].value_counts()
- 집계 함수
- df.mean()
- df.sum()
- df.max()
- df.min()
- 빈도수 계산
- 데이터에 함수 적용
- map
- Series에 적용
- ex) df["age"].map(lambda x: x+1)
- apply
- 행/열 단위 적용
- ex) df.apply(np.sum)
- applymap
- DataFrame 전체 원소 적용
- ex) df.applymap(str)
- map
- 계층적 인덱스 (MultiIndex)
- 인덱스를 여러 단계로 구성 가능
- 아래 표에서 (서울, 2024) (서울, 2025) 처럼 관리 가능
| 지역 | 연도 | 매출 |
| 서울 | 2024 | 100 |
| 서울 | 2025 | 120 |
- 시계열 데이터 처리
- Pandas의 매우 강력한 기능 중 하나
- 날짜 변환
- pd.to_datetime(df["date"])
- 날짜 인덱스 설정
- df.set_index("date")
- 리샘플링 (Resampling)
- df.resample("M").mean()
- 이동평균
- df["value"].rolling(7).mean()
- 날짜 변환
- Pandas의 매우 강력한 기능 중 하나
- 데이터 저장 포맷
- CSV
- 쉼표 기반 텍스트 파일
- df.to_csv("data.csv")
- JSON
- 웹/API 데이터 형식
- df.to_json()
- Pickle
- Python 객체 자체 저장
- df.to_pickle("data.pkl")
- Parquet
- 컬럼 기반 저장 포맷
- df.to_parquet("data.parquet")
- CSV
- Arrow (Apache Arrow)
- 언어 간 데이터 교환용 공통 메모리 포맷
- Python ↔ R ↔ Spark ↔ Pandas 간 데이터 이동을 빠르게 해줌
- 특징
- 컬럼 기반 구조
- 메모리 공유 가능
- 복사 최소화
- 고속 처리
- Parquet과 함께 자주 사용
- Serialization / De-Serialization
- 직렬화 (Serialization)
- 객체 → 저장 가능한 형태 변환
- ex) DataFrame → CSV
- 역직렬화 (De-Serialization)
- 저장된 파일 → 객체 복원
- ex) CSV → DataFrame
- 직렬화 (Serialization)
- Pandas와 SQL 대응 관계
| SQL | Pandas |
| SELECT | df[] |
| WHERE | filter |
| GROUP BY | groupby |
| ORDER BY | sort_values |
| JOIN | merge |
| COUNT | count |
| AVG | mean |
- 데이터베이스 연동
- SQL 데이터를 직접 읽을 수 있음
- pd.read_sql(query, conn)
- df.to_sql()
- SQL 데이터를 직접 읽을 수 있음
- Pandas와 Excel
- 엑셀 파일도 직접 처리 가능
- pd.read_excel("data.xlsx")
- df.to_excel("result.xlsx")
- 엑셀 파일도 직접 처리 가능
- statsmodels와 연동
- Pandas DataFrame은 회귀분석, 시계열 분석, 통계 모델링에 바로 사용 가능
728x90
'Python' 카테고리의 다른 글
| 260520_강의 정리 (Data Summerization & EDA) (0) | 2026.05.20 |
|---|---|
| 260519_강의 정리 (데이터 전처리) (0) | 2026.05.20 |
| 260512_강의 정리 (NumPy) (0) | 2026.05.13 |
| 260513_강의 정리 (Matplotlib) (0) | 2026.05.13 |
| 260415_강의 정리 (Flask) (1) | 2026.04.15 |
