[Numpy] np.dot (Dot Product)
·
python/Pandas | Numpy
왜 dot( )을 써야할까?Dot Product(내적)는 벡터와 행렬 연산에서 가장 기초적이면서 중요한 연산입니다.2개의 벡터를 곱해 하나의 수치(스칼라)로 벡터와 행렬을 곱해 변환을 적용행렬 곱의 기본이자 딥러닝, 선형대수의 핵심Numpy에서는 np.dot( )으로 이 연산을 쉽게 처리할 수 있습니다.np.dot의 수학적 정의를 보겠습니다.두 벡터의 내적은 행렬 곱의 경우에는입니다. 기본문법np.dot(a, b)a, b : 스칼라, 1D 벡터, 2D 행렬 등반환: 내적 결과 (스칼라 or 배열) 1차원 벡터 내적import numpy as npa = np.array([1, 2, 3])b = np.array([4, 5, 6])np.dot(a, b) # → 1×4 + 2×5 + 3×6 = 32 벡터 내적..
[Numpy] NaN과 inf 다루는 방법
·
python/Pandas | Numpy
데이터 분석에서 수치 연산이 제대로 되려면, 비정상 값(NaN, inf) 을 먼저 잡아야 합니다.이 값들은 다음과 같은 문제를 일으킵니다.np.mean, np.sum, np.min 등 모든 통계함수를 무력화Pandas/NumPy/Sklearn이 이상하게 작동함조건 필터링이 안 됨, 모델 입력이 망가짐항목 NaN inf / -inf 의미Not a Number무한대 (±∞)발생 원인0/0, sqrt(-1), log(-x)1/0, overflow비교NaN != NaN (항상 False)inf == inf, -inf == -inf감지 방법np.isnan()np.isinf() NaN과 inf를 감지하는 함수 Numpy에서 NaN과 inf를 감지하는 함수들이 있습니다.바로 np.isnan(x), np.isinf..
[Numpy] where, argmax, unique, argsort
·
python/Pandas | Numpy
데이터를 조건에 맞게 찾고, 정렬하고, 고유값을 뽑아내는 핵심 함수들입니다.데이터 분석에서 "찾기"는 기본 중의 기본이다.특정 조건에 맞는 위치가 궁금하다 → np.where( )가장 큰 값은 어디인가? → np.argmax( )중복 없이 어떤 값들이 들어 있는가? → np.unique( )정렬 순서를 알고 싶다 → np.argsort( )이 네가지 함수는 조건, 추출, 분류, 정렬, 그룹핑의 기반이 되는 매우 자주 쓰이는 함수들이다. np.where( ) - 조건에 따라 인덱스나 값을 선택● 조건이 True인 인덱스 반환import numpy as npa = np.array([10, 20, 30, 25, 15])np.where(a > 20)# (array([2, 3], dtype=int64),)─ 조건..
[Numpy] 슬라이싱, 마스킹, 조건 추출
·
python/Pandas | Numpy
데이터 분석은 "계산" 만큼이나 "필터링"이 중요합니다.필요한 값을 빠르게 꺼내올 수 있어야,이상치를 제거할 수 있고특정 조건만 모델에 투입할 수 있으며불필요한 데이터를 제거하고 속도를 높일 수 있습니다.Numpy는 이를 위해 세 가지 강력한 도구를 제공합니다.슬라이싱 (slicing) → 위치 기반 추출마스킹 (masking) → 조건 기반 필터링조건 추출 → 조건에 맞는 값만 걸러내기 기본 슬라이싱 문법import numpy as nparr = np.array([[10, 20, 30], [40, 50, 60], [70, 80, 90]]) 3 X 3 정수 배열. 행과 열 기준으로 쉽게 부분 배열을 뽑을 수 있다. 행(row) 슬라이싱arr[0] ..
[Numpy] 브로드캐스팅(broadcasting)과 벡터화(vectorization) 연산
·
python/Pandas | Numpy
Python 기본 리스트로 수치 계산을 하려면 보통 for문이 필요하다.하지만 NumPy는 단순한 리스트가 아니라 배열(벡터) 연산이 가능한 구조로 되어 있어,한 줄의 수식만으로도 대량의 데이터를 동시에 처리할 수 있다.그 비결은 바로 벡터화(vectorization) 와 브로드캐스팅(broadcasting) 이다. 용어 설명 벡터화(vectorization)반복문 없이 배열 전체에 연산 수행브로드캐스팅(broadcasting)서로 다른 shape의 배열 간 연산 시 자동 확장 벡터화 연산 기본import numpy as npa = np.array([1, 2, 3])b = np.array([10, 20, 30])a + b # → array([11, 22, 33])a * b ..
[Numpy] ndarray 구조 - 배열의 모양, 차원 ,타입
·
python/Pandas | Numpy
NumPy의 핵심은 바로 ndarray다.이 객체를 제대로 이해하지 못하면 벡터 연산, 브로드캐스팅, 슬라이싱, reshape, 연산 최적화 등 모든 기능이 막히게 된다. ndarray란?N-dimensional array: 다차원 배열리스트와 비슷하지만 훨씬 빠르고, 메모리 효율적이며, 다양한 수치 연산 지원Pandas의 .values도 사실 내부적으로는 ndarray 배열 생성 - np.array()import numpy as npa = np.array([1, 2, 3]) # 1차원 배열b = np.array([[1, 2], [3, 4]]) # 2차원 배열 배열 속성 확인a.shape # (3,)a.ndim # 1a.dtype # int64a.size # ..
[Numpy] percentile() - 백분위수 구하기
·
python/Pandas | Numpy
데이터 분석을 하다 보면 단순 평균으로는 전체 분포를 이해하기 어렵다.예를 들어 한 반의 평균 점수가 75점이라 해도,상위 10%가 100점이고 하위 90%가 60점대라면 분포는 완전히 왜곡돼 있다. 이럴 때 필요한 것이 백분위수(percentile) 이다.상위 10% 이상 성적을 보고 싶다? → 90 percentile하위 25% 컷을 알고 싶다? → 25 percentile중앙값은? → 50 percentile (== median)Numpy는 np.percentile( ) 로 이를 아주 쉽게 계산할 수 있다. 예제 데이터scores = [55, 60, 65, 70, 75, 80, 85, 90, 95, 100] 기본 문법import numpy as npnp.percentile(data, q) 예제1..
[Pandas] clip() - 이상값 방어의 핵심
·
python/Pandas | Numpy
데이터를 전처리를 하다 보면 종종 이런 일이 생긴다:나이에 200살이 들어와 있다.점수가 110점으로 입력되어 있다.상품 가격이 음수로 들어와 있다.이런 이상값을 제거하거나, 상하한을 지정해서 데이터를 안전하게 자르는 작업이 필요하다.이럴 때 Pandas의 clip() 은 최소값보다 작은 값은 최솟값으로, 최대값보다 큰 값은 최대값으로 잘라주는 함수다. 예제 데이터import pandas as pddf = pd.DataFrame({ 'score': [95, 105, 85, 70, 30], 'age': [25, 180, 38, 200, -5]})기본 문법Series.clip(lower=None, upper=None)DataFrame.clip(lower=None, upper=None)lower ..
[Pandas] where() - 조건을 만족하는 값은 살리고, 아니면 치환
·
python/Pandas | Numpy
일반적으로 데이터를 필터링하면 조건에 맞는 행만 추출하게 됩니다. (query(), Boolean Indexing 등)하지만 때로는 조건을 만족하는 값은 유지하고, 만족하지 않는 값은 다른 값으로 바꿔야 하는 경우가 있습니다. 예를 들어:점수가 70점이상이면 그대로 두고, 70 미만이면 '재시험'이라고 표시결측치는 그래도 두고, 음수 값만 0으로 치환특정 범위를 벗어난 값만 수정이럴 때 Pandas의 where() 함수가 진가를 발휘합니다. 예제 데이터import pandas as pdimport numpy as npdf = pd.DataFrame({ 'name': ['Alice', 'Bob', 'Charlie', 'David'], 'score': [85, 67, 90, 45]})기본 문법Da..
[Pandas] applymap() - DataFrame 전체 셀에 함수를 적용
·
python/Pandas | Numpy
Pandas를 사용하다 보면 다음과 같은 작업이 필요할 때가 있습니다.모든 수치에 단위를 붙이고 싶을 때전체 셀의 포맷을 문자열로 바꾸고 싶을 때결측값을 특정 텍스트로 대체하거나, 셀에 조건 기반 포맷팅을 하고 싶을 때이럴 때 DataFrame 전체 셀에 함수를 적용할 수 있는 applymap() 이 강력한 도구가 됩니다. 먼저 예제 데이터를 확인하겠습니다. 예제 데이터import pandas as pdimport numpy as npdf = pd.DataFrame({ 'math': [90, 80, 70], 'eng': [85, 75, 65], 'sci': [88, 78, np.nan]})기본 문법DataFrame.applymap(func)각 셀에 대해 func(value) 를 수행반환 ..