반응형

파이썬 데이터 분석 - NumPy와 Pandas 기초

데이터 분석을 할 때 파이썬에서 가장 많이 사용하는 라이브러리는 NumPyPandas입니다.

  • NumPy(넘파이): 다차원 배열과 행렬 연산을 위한 라이브러리
  • Pandas(판다스): 표 형태(테이블)의 데이터를 다루기 쉽게 만들어주는 라이브러리

이번 글에서는 NumPy와 Pandas의 기본 개념과 필수적인 기능을 다뤄보겠습니다.

 


 

1. NumPy 기초

NumPy는 숫자 데이터를 빠르고 효율적으로 처리할 수 있는 배열(Array) 구조를 제공합니다.

1.1 NumPy 배열 생성

NumPy 배열(ndarray)은 파이썬 리스트보다 메모리 효율적이고 연산 속도가 빠릅니다.

import numpy as np  

# 리스트를 NumPy 배열로 변환
arr = np.array([1, 2, 3, 4, 5])
print(arr)
# 출력: [1 2 3 4 5]

# 다차원 배열 생성
matrix = np.array([[1, 2, 3], [4, 5, 6]])
print(matrix)
# 출력:
# [[1 2 3]
#  [4 5 6]]
 

1.2 배열 연산

NumPy 배열은 리스트보다 연산 속도가 빠르며, 요소별 연산을 쉽게 수행할 수 있습니다.

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

print(arr1 + arr2)  # 출력: [5 7 9]
print(arr1 * arr2)  # 출력: [ 4 10 18]
print(arr1 ** 2)    # 출력: [1 4 9]

 

 

1.3 NumPy 주요 함수

  • np.zeros((행, 열)): 0으로 채워진 배열 생성
  • np.ones((행, 열)): 1로 채워진 배열 생성
  • np.random.rand(개수): 0~1 사이의 랜덤 숫자로 배열 생성
  • np.linspace(시작, 끝, 개수): 시작부터 끝까지 균등 간격의 숫자 생성
print(np.zeros((2, 3)))
# 출력:
# [[0. 0. 0.]
#  [0. 0. 0.]]

print(np.linspace(1, 10, 5))  
# 출력: [ 1.    3.25  5.5   7.75 10.  ]
 
 

2. Pandas 기초

Pandas는 표 형태(테이블)의 데이터를 다루기 쉽게 만들어주는 라이브러리입니다.
엑셀과 비슷한 구조를 가지고 있으며, 데이터 분석에 최적화되어 있습니다.

2.1 Pandas 데이터 구조

Pandas는 두 가지 주요 데이터 구조를 사용합니다.

  1. Series: 1차원 데이터 (리스트, 배열과 유사)
  2. DataFrame: 2차원 데이터 (엑셀 표와 유사)

Series 생성

import pandas as pd  

data = pd.Series([10, 20, 30, 40], index=['A', 'B', 'C', 'D'])
print(data)
# 출력:
# A    10
# B    20
# C    30
# D    40
# dtype: int64

print(data['B'])  # 출력: 20

DataFrame 생성

df = pd.DataFrame({
    '이름': ['철수', '영희', '민수'],
    '나이': [25, 30, 28],
    '점수': [90, 85, 88]
})

print(df)
# 출력:
#    이름  나이  점수
# 0  철수  25  90
# 1  영희  30  85
# 2  민수  28  88

 


2.2 데이터 불러오기 및 저장

CSV, Excel, SQL 같은 다양한 형식의 데이터를 쉽게 불러오고 저장할 수 있습니다.

# CSV 파일 불러오기
df = pd.read_csv('data.csv')

# 엑셀 파일 불러오기
df = pd.read_excel('data.xlsx')

# 데이터 저장
df.to_csv('output.csv', index=False)  # CSV 저장
df.to_excel('output.xlsx', index=False)  # 엑셀 저장

 


2.3 데이터 탐색

데이터를 빠르게 확인하는 함수들을 알아봅니다.

print(df.head())  # 처음 5개 행 출력
print(df.tail())  # 마지막 5개 행 출력
print(df.info())  # 데이터 타입, 결측치 확인
print(df.describe())  # 수치형 데이터 요약 통계

 


2.4 데이터 선택 및 필터링

특정 컬럼 선택

print(df['이름'])  # '이름' 컬럼 선택

특정 행 선택

print(df.loc[1])  # 인덱스 1번 행 선택

조건 필터링

print(df[df['나이'] > 26])  # 나이가 26 이상인 데이터

 


2.5 데이터 정렬 및 그룹화

정렬하기

df_sorted = df.sort_values(by='점수', ascending=False)  # 점수 기준 내림차순 정렬

그룹화하기

grouped = df.groupby('나이')['점수'].mean()  # 나이별 점수 평균
print(grouped)

 


3. NumPy vs Pandas 차이점

데이터 구조 배열(ndarray) 표(DataFrame)
연산 속도 빠름 상대적으로 느림
데이터 형태 숫자 위주 숫자 + 문자열
주요 기능 배열 연산, 벡터화 데이터 분석, 테이블 조작

 


결론

  • NumPy는 빠른 수치 연산과 다차원 배열을 다루는 데 최적화
  • Pandas는 데이터 분석에 최적화된 라이브러리로 표 형식 데이터를 다룸

다음 글에서는 Pandas를 활용한 데이터 전처리(결측치 처리, 데이터 변형, 그룹화 등)에 대해 다뤄보겠습니다! 

반응형

+ Recent posts