
오늘 공부하면서 정리한 내용을 한 번에 정리해보려고 한다.
주로 다룬 내용은 다음과 같다.
NumPy (Numerical Python) 는
대규모 숫자 데이터를 빠르게 계산하기 위한 Python 라이브러리이다.
데이터 분석, 머신러닝, 과학 계산에서 거의 필수적으로 사용된다.
핵심 자료구조는
ndarray (N-dimensional array)
즉 N차원 배열이다.
예시
import numpy as np
arr = np.array([1,2,3])
print(type(arr))
결과
<class 'numpy.ndarray'>
Python 리스트도 숫자 데이터를 다룰 수 있지만 한계가 있다.
numbers = [1,2,3,4,5]
result = []
for num in numbers:
result.append(num * 2)
문제점
numbers = np.array([1,2,3,4,5])
result = numbers * 2
결과
array([2,4,6,8,10])
NumPy는 벡터화 연산을 지원하기 때문에
반복문 없이 빠르게 계산할 수 있다.
NumPy에서는 행렬을 쉽게 만들 수 있다.
matrix = np.array([
[1,2,3],
[4,5,6]
])
np.zeros((3,3))
np.ones((3,3))
단위행렬은 대각선만 1인 행렬이다.
np.identity(3)
결과
[[1 0 0]
[0 1 0]
[0 0 1]]
배열 형태 변경
arr = np.arange(9)
arr.reshape(3,3)
일정한 간격의 배열 생성
np.linspace(0, 2*np.pi, 100)
np.sin(theta)
예시
theta = np.linspace(0, 2*np.pi, 100)
sin_theta = np.sin(theta)
그래프
plt.plot(theta, sin_theta)
DataFrame은 여러 방식으로 만들 수 있다.
df = pd.DataFrame({
"Name": ["Alice","Bob"],
"Age": [25,30]
})
df = pd.DataFrame([
{"Name":"Alice","Age":25},
{"Name":"Bob","Age":30}
])
data = [
["Alice",25,85.5],
["Bob",30,90.3]
]
columns = ["Name","Age","Score"]
df = pd.DataFrame(data, columns=columns)
nums = np.array([
[25,85.5],
[30,90.3]
])
df = pd.DataFrame({
"Age": nums[:,0],
"Score": nums[:,1]
})
주의할 점
NumPy 배열은 dtype이 자동으로 float로 변할 수 있다.
그래서
astype(int)
로 타입을 맞춰주는 경우도 있다.
학생 점수를 관리하는 예제를 구현했다.
class Student:
def __init__(self, name, korean, english, math):
self.name = name
self.korean = korean
self.english = english
self.math = math
def get_total(self):
return self.korean + self.english + self.math
def get_average(self):
return self.get_total() / 3
def check_pass(student):
if student.get_average() >= 75:
return "합격"
else:
return "불합격"
assert 조건
조건이 False일 경우 발생한다.
예
assert x == 5
x가 5가 아니면 오류 발생.
l.append(5)
append는 값을 반환하지 않는다.
반환값
None
그래서
l.append(5) == something
같이 쓰면 오류가 난다.
오늘 공부하면서 느낀 핵심은 다음이다.
데이터 분석 공부의 기본 흐름은 보통 다음과 같다.
NumPy → Pandas → Visualization → Machine Learning
오늘은 데이터 분석의 기초가 되는
를 함께 정리해봤다.
기본 개념들을 이해해두면 이후에 머신러닝이나 데이터 분석을 할 때 훨씬 수월해질 것 같다.