출처 : 금융 데이터 분석을 위한 파이썬 판다스
금융 데이터 분석을 위한 파이썬 판다스
최근 인공지능 AI(Artificial Intelligence)이 보급화되면서 방대한 양의 데이터를 처리하는 방식이 중요해지기 시작했습니다. 판다스(Pandas)는 오픈 소 ...
wikidocs.net
예제파일
GitHub - sharebook-kr/book-pandas-for-finance: 금융 데이터 분석을 위한 파이썬 Pandas
금융 데이터 분석을 위한 파이썬 Pandas. Contribute to sharebook-kr/book-pandas-for-finance development by creating an account on GitHub.
github.com
NumPy documentation
NumPy documentation — NumPy v1.22 Manual
The reference guide contains a detailed description of the functions, modules, and objects included in NumPy. The reference describes how the methods work and which parameters can be used. It assumes that you have an understanding of the key concepts.
numpy.org
NumPy documentation pdf
ndarray생성
import numpy as np
data = [1,2,3]
arr = np.array(data,dtype=np.int8)
print(arr)
print(type(arr))
import numpy as np
data1 = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
arr1 = np.array(data1)
print(arr1)
ndarray 연산
import numpy as np
data = [1, 2, 3]
arr = np.array(data)
print(arr * 10) # [10 20 30]
인덱싱, 슬라이싱
import numpy as np
data1 = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
arr1 = np.array(data1)
print(arr1)
print(arr1[1, 1]) # ndarray[row,col]
print(arr1[1][1]) # ndarray[row][col]
print(arr1[:, 0]) # 0열 array
print(arr1[[0, 2], 2]) # 부분 슬라이싱
import numpy as np
arr = np.arange(4)
print(arr[1]) # 1
arr = np.arange(4).reshape(2, 2) # [0 1]
print(arr[0])
print(arr[1][1]) # 3
print(arr[1, 1]) # 3
저장된 데이터의 정보를 조회
print(arr1.shape) # 크기정보 (2, 4)
print(arr1.ndim) # 차원 정보 2
print(arr1.dtype) # 데이터 타입 int32
# 1차원 데이터
data2 = [1,2,3,4]
arr2 = np.array(data2)
print(arr2.shape) # 크기정보 (4,)
print(arr2.ndim) # 차원 1
# 4*1 데이터
data3 = [
[1],
[2],
[3],
[4]
]
arr3 = np.array(data3)
print(arr3.shape) # 크기정보 (4, 1)
print(arr3.ndim) # 차원 2
zeros, ones
import numpy as np
# np.zeros(shape)
print(np.zeros(3)) # [0. 0. 0.]
print(np.zeros(3,))
print(np.zeros((3,3)))
print(np.ones((2,2)))
arrange
import numpy as np
print(np.arange(5)) # [0 1 2 3 4]
print(np.arange(1, 5)) # [1 2 3 4]
print(np.arange(1, 5, 2)) # [1 3]
reshape
import numpy as np
ndarr1 = np.arange(6)
ndarr2 = ndarr1.reshape(2, 3)
print(ndarr2)
"""
[[0 1 2]
[3 4 5]]
"""
데이터 타입
import numpy as np
arr = np.array([1, 2, 3], dtype=np.uint8)
print(arr.dtype) # uint8
# kind : dtype종류 - i/u/f/c - int, uint, float, complex
# alignment : byte수
print(arr.dtype.kind) # u
print(arr.dtype.alignment) # 1
arr = arr.astype('int8')
print(arr.dtype) # int8
a16 = np.array([ 1.0 ], dtype=np.float16)
a32 = np.array([ 1.0 ], dtype=np.float32)
print(a16/3) # [0.3333]
print(a32/3) # [0.33333334]
# 무한대, 결측치(숫자가 아닌 값 or 정의 되지 않은 숫자)
print(np.nan, type(np.nan)) # nan <class 'float'>
print(np.inf, type(np.inf)) # inf <class 'float'>
print(-np.inf, type(-np.inf)) # -inf <class 'float'>
arr = np.array([-1, 2, -3])
print(arr + np.nan) # [nan nan nan]
print(arr + np.inf) # [inf inf inf]
import numpy as np
a = np.array([0, 255], dtype=np.uint8)
b = a.astype('int8')
print(a) # [ 0 255]
print(b) # [ 0 -1]
브로드캐스팅
import numpy as np
a = np.array([1, 2, 3])
b = np.array([2, 3, 4])
print(a + b) # [3 5 7]
print(a * b) # [ 2 6 12]
print(a % b) # [1 2 3]
조건연산 : ndarray[조건]
import numpy as np
arr = np.array([10, 20, 30])
cond = arr > 10
print(cond) # [False True True]
print(arr[cond]) # [20 30]
print(cond.all()) # False
print(cond.any()) # True
import numpy as np
# and(&), or(|), not(~)
arr = np.array([10, 20, 30])
cond0 = arr > 10
cond1 = arr < 30
print(arr[ cond0 & cond1 ]) # [20]
cond = arr > 10
arr[cond] = 1
arr[~cond] = 0
print(arr) # [0 1 1]
arr = np.array([10, 20, 30])
arr = np.where( arr > 10, 1, 0)
print(arr) # [0 1 1]
arr1 = np.array([10, 20, 30])
cond = arr1 > 10
arr1[cond] += 10
print(arr1) # [10 30 40]
arr2 = np.array([10, 20, 30])
cond = arr2 > 10
arr2[~cond] -= 10
print(arr2) # [ 0 20 30]
arr3 = np.array([10, 20, 30])
cond = arr3 > 10
result = np.where(~cond,arr3-10,arr3)
print(result) # [ 0 20 30]
함수와 메서드
import numpy as np
# sum함수
arr = np.arange(8).reshape(4, 2)
print(arr)
print(arr.sum())
print(arr.sum(axis=0)) # 열단위 [12 16]
print(arr.sum(axis=1)) # 행단위 [ 1 5 9 13]
# random함수
a = np.random.randint(3) # 범위
print(a)
b = np.random.randint(46, size=5) #size = 반복횟수
print(b) # [19 19 42 19 11]
c = np.random.randint(46, size=(2, 5)) #size = (행,열)
print(c)
"""
[[13 20 4 8 7]
[16 1 21 29 32]]
"""
# linspace함수
x = np.linspace(0, 10, 3)
print(x) # [ 0. 5. 10.]
y = x ** 2
print(y) # [ 0. 25. 100.]
# vstack, hstack
a = np.arange(4)
b = np.arange(4, 8)
c = np.vstack([a, b])
d = np.hstack([a, b])
print(c)
"""
[[0 1 2 3]
[4 5 6 7]]
"""
print(d) # [0 1 2 3 4 5 6 7]
# jupitor 동작시간 측정
a = np.arange(10000).reshape(100, 100)
%timeit a[0, 50]
'DataFrame' 카테고리의 다른 글
판다스 데이터프레임 (데이터 읽기/ 저장하기) (0) | 2022.04.07 |
---|---|
판다스 데이터프레임 (고급기능2) (0) | 2022.04.07 |
판다스 데이터프레임 (고급기능1) (0) | 2022.04.07 |
판다스 데이터프레임 (0) | 2022.04.07 |
Series (0) | 2022.04.07 |
댓글