본문 바로가기

인공지능 대학원/데이터분석

Matplotlib / Numpy

Matplotlib (맷플롯립) 

1. Matplotlib이란?

  • 파이썬의 시각화 라이브러리로, 데이터를 그래프로 쉽게 표현할 수 있음
  • Pyplot은 Matplotlib의 가장 많이 쓰는 서브모듈

2. Pyplot 구성 요소

구성 요소설명
figure 전체 그래프의 틀 (도화지 전체)
axes 그래프가 실제로 그려지는 영역 (x축, y축 포함)
subplot 한 figure 안에 여러 개의 axes를 넣을 수 있는 기능

예시:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()  # figure와 axes 생성
ax.plot([1, 2, 3], [4, 5, 6])  # 그래프 그리기
plt.show()
  • plt.subplots()는 도화지 위에 공간을 나눠 그래프를 여러 개 그릴 때 사용.

데이터 전처리 (Pandas 중심)

1. 머신러닝의 기본 전제:

데이터를 입력하면 함수처럼 결과가 나옴 → y = f(x)

2. 데이터 종류

데이터 타입예시설명
기수형 (정량) 키, 나이, 점수 수치 간 간격이 일정
서수형 (순서) 학년, 등급 순서만 있고 간격은 일정하지 않음

3. 결측치(Missing Value)

  • 존재하지만 기록되지 않은 값
  • Pandas에서 isna() 또는 isnull()로 확인 가능

예:

df.isnull().sum()  # 결측치 개수 확인

처리 방법:

방법설명
dropna() 결측치가 포함된 행/열 삭제
fillna() 평균, 최빈값, 중간값 등으로 채우기
inplace=True 원본 데이터를 직접 수정함 (복사본이 아닌)
 
df.dropna(inplace=True)  # 결측치 포함된 행 제거
df.fillna(df.mean(), inplace=True)  # 평균으로 채움
  • how='all': 모든 값이 NaN인 경우에만 제거
  • thresh=5: NaN 아닌 값이 5개 이상 있어야 해당 행 유지

4. 이상치 처리

  • 평균에서 너무 벗어난 값
  • 보통 IQR (사분위 범위) 또는 표준편차 기준으로 판단
  • 제거하거나 변환해서 처리

5. transform과 fillna 조합

  • groupby()와 함께 사용하면 그룹별 평균값으로 결측치 채우기 가능
df['column'].fillna(df.groupby('group_col')['column'].transform('mean'), inplace=True)

Numpy (넘파이) 핵심 요약

1. 축(Axis)의 개념

차원예시axis 0axis 1
2D (행렬) 표, 이미지 행 방향 (세로) 열 방향 (가로)
3D 이상 영상, 시계열 0은 가장 바깥쪽 축 그다음 차례대로 1, 2...

예:

import numpy as np
arr = np.array([[1, 2], [3, 4]])

np.sum(arr, axis=0)  # 열끼리 더하기 => [4, 6]
np.sum(arr, axis=1)  # 행끼리 더하기 => [3, 7]

2. 배열 연결 함수

함수설명
vstack() 수직으로 쌓기 (행 증가)
hstack() 수평으로 쌓기 (열 증가)

예:

 
a = np.array([1, 2])
b = np.array([3, 4])

np.vstack((a, b))  # [[1 2], [3 4]]
np.hstack((a, b))  # [1 2 3 4]

3. 사칙연산

  • 배열 간 같은 위치끼리 계산
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

a + b  # [5 7 9]
a * b  # [4 10 18]
  • broadcasting이 가능하여 스칼라와 벡터 연산도 쉬움
a + 1  # [2 3 4]

요약

 

Matplotlib figure: 도화지, axes: 축 있는 그래프, subplot: 여러 그래프 배치
결측치 처리 dropna(), fillna(), isnull() 등 활용
이상치 평균에서 벗어난 값, 제거하거나 변환
Numpy 축 axis=0: 행(세로), axis=1: 열(가로)
배열 연결 vstack: 아래로, hstack: 옆으로
사칙연산 동일 위치끼리 연산, broadcasting 지원
728x90