본문 바로가기
DataFrame

ndarry

by 자동매매 2022. 4. 7.

출처 : 금융 데이터 분석을 위한 파이썬 판다스

 

 

금융 데이터 분석을 위한 파이썬 판다스

최근 인공지능 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

numpy-user.pdf
3.79MB

 

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]

ch02정리.ipynb
0.01MB

댓글