데이터 분석에 대표적으로 사용하는 파이썬 패키지를 소개합니다. 패키지package는 파이썬에서 유용한 기능이 구현된 파일을 묶어서 유통시키는 단위입니다. 다른 언어에서는 라이브러리library라고도 부르며 종종 두 용어를 혼용해서 사용합니다. 파이썬 패키지는 PyPI에서 찾을 수 있습니다.(PyPI · The Python Package Index)
✅넘파이
넘파이NumPy는 numerical python의 줄임말로 고성능 과학 계산과 다차원 배열array을 위한 파이썬 패키지입니다. 대부분의 파이썬 데이터 분석 패키지는 데이터를 다룰 때 넘파이 배열을 사용합니다. 넘파이 기능을 잘 배워 두면 다른 패키지를 사용하는 데 큰 도움을 받을 수 있습니다.
- 주요 함수
- np.array(): 배열 생성, 데이터를 배열 형태로 만들 때 사용
- np.mean(): 배열의 평균값 계산, 통계적 분석이나 데이터 요약에 활용
- np.random.rand(): 균일 분포의 난수 생성, 머신러닝 모델 초기화나 시뮬레이션에 사용
- np.reshape(): 배열의 차원과 크기 변경, 데이터 전처리 단계에서 자주 사용
- np.concatenate(): 배열들을 결합, 데이터셋 병합이나 증강augmentation에 활용
#예제 코드
import numpy as np
#배열 생성 및 평균 계산
arr = np.array([1, 2, 3, 4, 5])
print("평균값:", np.mean(arr))
#랜덤 배열 생성
random_arr = np.random.rand(3, 3)
print("랜덤 배열:", random_arr)
"""
[결과]
평균값: 3.0
랜덤 배열:
[[0.12345678 0.87654321 0.54321098]
[0.23456789 0.65432109 0.43210987]
[0.34567890 0.76543210 0.65432109]]
"""
✅판다스
판다스pandas는 파이썬 데이터 분석을 위한 전문 패키지입니다. 판다스는 넘파이 배열과 다르게 마이크로소프트 엑셀의 시트처럼 숫자와 문자를 섞어서 표 형태로 저장할 수 있는 데이터프레임DataFrame을 사용합니다. 넘파이가 과학 계산에 초점을 맞추고 있다면, 판다스는 편리한 데이터 처리와 분석 작업을 위해 많은 기능을 제공합니다. 또 다양하고 미려한 그래프 출력 기능도 갖추고 있습니다. 파이썬 데이터 분석에서 기본 자료 구조로 넘파이와 판다스를 자주 사용합니다.
- 주요 함수&메서드
- pd.read_csv(): CSV 파일 읽기, 데이터 불러오기에 필수
- df.groupby(): 데이터프레임을 특정 컬럼 기준으로 그룹화, 집계 분석에 사용
- df.fillna(): 결측값 처리, 데이터 전처리 과정에서 중요
- df.merge(): 다른 데이터프레임과 병합, 관계형 데이터 작업에 활용
- df.sort_values(): 특정 컬럼 기준으로 정렬, 데이터 정렬 및 분석에 사용
#예제 코드
import pandas as pd
#데이터 생성
data = {
'category': ['A', 'B', 'A', 'B', 'C'],
'sales': [100, 150, 120, 180, 90]
}
df = pd.DataFrame(data)
#그룹별 평균 계산
grouped = df.groupby('category')['sales'].mean()
print("그룹별 평균 판매액:", grouped)
#결측값 처리 예시
df_with_na = pd.DataFrame({
'column': [1, 2, None, 4, 5]
})
df_with_na['column'].fillna(df_with_na['column'].mean(), inplace=True)
print("결측값 처리된 데이터프레임:", df_with_na)
"""
[결과]
그룹별 평균 판매액:
category
A 110.0
B 165.0
C 90.0
결측값 처리된 데이터프레임:
column
0 1.0
1 2.0
2 3.0
3 4.0
4 5.0
"""
✅맷플롯립
맷플롯립matplotlib은 파이썬 데이터 시각화를 위한 기본 패키지입니다. 정적 혹은 동적인 그래프를 그릴 수 있고, 고품질의 매우 다양한 그래프를 제공합니다. 또한 파이썬의 다른 과학 패키지와 호환성이 높습니다. 파이썬에서는 맷플롯립 외에도 시본seaborn, 보케bokeh 같은 시각화 패키지를 많이 사용합니다.
- 주요 함수
- plt.plot(): 선 그래프 그리기, 기본적인 데이터 시각화
- plt.scatter(): 산점도 그래프, 변수 간 관계 시각화
- plt.bar(): 막대 그래프, 카테고리별 비교에 유용
- plt.hist(): 히스토그램, 데이터 분포 확인
- plt.title(): 그래프 제목 설정, 시각화 설명에 사용
#예제 코드
import matplotlib.pyplot as plt
import numpy as np
#선 그래프
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y)
plt.title('Simple Line Graph')
plt.show()
#산점도
x = np.random.rand(50)
y = np.random.rand(50)
plt.scatter(x, y)
plt.title('Scatter Plot')
plt.show()
✅사이파이
사이파이SciPy는 넘파이를 기반으로 구축된 수학과 과학 계산 전문 패키지입니다. 미분, 적분, 확률, 선형대수, 최적화 등을 알고리즘으로 구현합니다.
- 주요 함수
- scipy.stats.norm(): 정규분포 관련 통계 함수
- scipy.optimize.minimize(): 최적화 문제 해결, 머신러닝 알고리즘에서 중요
- scipy.integrate.quad(): 수치적분 계산
- scipy.spatial.distance.euclidean(): 유클리드 거리 계산, 머신러닝 알고리즘에서 활용
- scipy.signal.convolve(): 신호 처리나 이미지 처리에서 컨볼루션(convolution) 연산
#예제 코드
from scipy import stats
from scipy.spatial.distance import euclidean
#정규분포 확률 계산
prob = stats.norm.pdf(0, loc=0, scale=1)
print("정규분포 확률:", prob)
#유클리드 거리 계산
dist = euclidean([1,2], [4,6])
print("유클리드 거리:", dist)
"""
[결과]
정규분포 확률: 0.3989422804014327
유클리드 거리: 5.0
"""
✅사이킷런
사이킷런scikit-learn은 파이썬의 독보적인 머신러닝 패키지로 넘파이와 사이파이에 크게 의존합니다. 파이썬뿐만 아니라 전체 데이터 과학 분야에서 가장 널리 사용하는 머신러닝 패키지라고 해도 과언이 아닙니다.
- 주요 함수&클래스
- train_test_split(): 데이터셋을 훈련/테스트 세트로 분리
- StandardScaler(): 데이터 표준화, 머신러닝 모델 전처리에 필수
- LogisticRegression(): 로지스틱 회귀 모델 생성
- cross_val_score(): 교차 검증을 통한 모델 성능 평가
- GridSearchCV(): 하이퍼파라미터 튜닝, 모델 최적화에 사용
#예제 코드
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
import numpy as np
#샘플 데이터 생성
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
y = np.array([0, 1, 0, 1])
#데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)
print("훈련 데이터:", X_train)
print("테스트 데이터:", X_test)
#데이터 스케일링
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
print("스케일링된 데이터:\n", X_scaled)
#로지스틱 회귀 모델
model = LogisticRegression()
model.fit(X_train, y_train)
print("모델 정확도:", model.score(X_test, y_test))
"""
[결과]
훈련 데이터: [[5 6], [1 2]]
테스트 데이터: [[3 4], [7 8]]
스케일링된 데이터:
[[-1.1 -1.1 ]
[-0.37 -0.37]
[ 0.37 0.37]
[ 1.1 1.1 ]]
모델 정확도: 1.0
"""
위 내용은 『혼자 공부하는 데이터 분석 with 파이썬』의 일부분을 재구성하여 작성하였습니다.
실제로 일어날 법한 문제를 직접 해결하며 익히는 ‘진짜’ 데이터 분석! 데이터를 직접 수집하고, 파이썬 라이브러리를 활용하여 코딩 감각을 익히고, 핵심 통계 지식으로 기본기를 탄탄하게 다질 수 있습니다.
혼공분석으로 데이터 분석의 A부터 Z까지 제대로 배워보세요!
👀 도서 자세히 보기
✍️ 유튜브 강의
🙋 박해선 저자님께 질문하기
Leave A Comment