Numerical Python
파이썬의 고성능 과학 계산용 패키지
Matrix, Vector와 같은 Array 연산의 사실상의 표준
일반 리스트에 비해 빠르고 메모리가 효율적임
import numpy as np
dynamic typing을 지원하지 않음 -> 사전에 정의된 한가지 타입을 받아야함
Numpy의 dtype = C의 data type과 compatible함
nbytes = ndarray object의 메모리 크기를 반환함
reshape = Array의 shape를 변경함, element의 개수가 다르면 ValueError
import numpy as np
arr = np.zeros(8)
print(arr.reshape(4, 2))
'''
[[0. 0.]
[0. 0.]
[0. 0.]
[0. 0.]]
'''
flatten = 1차원 array로 변경
python의 list와 달리 행과 열을 동시에 슬라이싱하는 것이 가능함.
arange(start, end, step) = 범위를 지정해 값의 리스트를 생성하는 명령어
zeros, ones = 0, 1로 가득찬 ndarray 생성
empty = 비어있는 ndarray 생성, 단, 이전에 사용한 값이 초기화 되지 않아 초기화되지 않은 값이 그대로 나옴
zeros_like = 기존 ndarray의 크기만큼 zeros를 수행 (ones, empty 수행)
identity = 단위 행렬 생성
eye = 대각선이 1인 행렬 생성
import numpy as np
print(np.eye(3))
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
diag = 대각 행렬의 값을 추출함
import numpy as np
print(np.arange(24).reshape(6, 4))
print(np.diag(np.arange(24).reshape(6, 4), k = 1)) #k = 시작 인덱스
'''
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]
[ 1 6 11]
'''
sum = 합
axis = 축
import numpy as np
print(np.arange(24).reshape(6, 4))
print(np.arange(24).reshape(6, 4).sum(axis = 0))
print(np.arange(24).reshape(6, 4).sum(axis = 1))
'''
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]
[60 66 72 78]
[ 6 22 38 54 70 86]
'''
mean = 평균
std = 표준편차
var = 분산
vstack, hstack = numpy 합치는(붙이는) 함수
import numpy as np
a = np.arange(0, 4).reshape(1, 4)
b = np.arange(4, 8).reshape(1, 4)
print(np.vstack((a, b)))
a = np.arange(0, 4).reshape(4, 1)
b = np.arange(4, 8).reshape(4, 1)
print(np.hstack((a, b)))
'''
[[0 1 2 3]
[4 5 6 7]]
[[0 4]
[1 5]
[2 6]
[3 7]]
'''
concatenate = array를 합치는(붙이는) 함수, axis로 조절가능
np.array * np.array = 요소끼리의 곱
np.array @ np.array 또는 .dot = 행렬곱
import numpy as np
a = np.arange(0, 4).reshape(2, 2)
b = np.arange(4, 8).reshape(2, 2)
print(a @ b), print(a.dot(b))
'''
[[ 6 7]
[26 31]]
[[ 6 7]
[26 31]]
'''
.transpose() 또는 .T = 전치행렬
numpy는 Scalar - vector 이나 vector- matrix 간의 연산을 지원함
all , any = 전부 또는 일부가 조건에 만족하는지 판단함
import numpy as np
arr = np.arange(0, 5).reshape(5)
print(arr, np.any(arr > 2), np.all(arr > 2))
#[0 1 2 3 4] True False
logical_and, logical_or 등 and , or ,not 연산도 가능하다
where
import numpy as np
arr = np.arange(0, 5).reshape(5)
print(arr, np.where(arr > 2))
#[0 1 2 3 4] (array([3, 4], dtype=int64),)
isnan = nan값, isfinite = 유한값
argmax, argmin = array에서 가장 큰, 작은 값의 Index 반환
argsort = array에서 작은 값의 index부터 큰 값의 index까지 정렬
numpy는 array를 전부 index value로 사용해서 값을 추출할 수 있다
array1[array2]
or array.take(array2)
(이때, array2의 요소는 모두 정수형이어야 한다) import pandas as pd
numpy와통합하여, 강력한“스프레드시트” 처리기능을제공
인덱싱, 연산용함수, 전처리함수등을제공함
데이터처리 및 통계분석을 위해 사용
head : 처음 다섯 줄 출력
pandas의 구성
Indexing
시리즈 인덱싱
- a['index 이름'] = 해당 인덱스의 값 출력
- values = 시리즈 값 리스트 출력
- index = 시리즈 index 리스트 출력
- dataframe 인덱싱
- df["colume 이름"] = 해당 인덱스의 시리즈 출력, 이때 여러개 ex)df["a", "b", "c"]와 같이 여러개의 column 선택이 가능함
- loc = index 이름, iloc = **index number**를 기준으로 슬라이싱
- T = 전치 행렬 출력, values = 모든 values 출력(array 타입으로)
del df[~] = 해당 column 주소 자체를 삭제
drop(~, axis = 1) = 해당 column을 삭제한 것을 출력(원 dataframe에서는 삭제되지 않음)
inplace = True -> 자기 자신이 변하도록 하는 operation
Series 조작시 map 함수 사용 가능
apply: map과 달리 series 전체에 해당 함수를 적용
unique: series data의 값을 중복 없이 list 반환
sum: column 또는 row 값의 연산을 지원
sort_values: column값을 기준으로 데이터를 sorting
corr : 상관계수
cov : 공분산
corrwith : 특정 column과 나머지 column간의 상관계수
print(df.corrwith(df.상가업소번호).sort_values(ascending = False))
#column 상가업소번호를 기준으로 상관계수를 구해 내림차순으로 정렬
'''상가업소번호 1.000000
건물본번지 0.034681
행정동코드 0.014458
지번코드 0.014455
시군구코드 0.014454
도로명코드 0.014446
법정동코드 0.014335
위도 0.005581
구우편번호 0.003952
건물부번지 0.000711
대지구분코드 -0.000977
경도 -0.011256
신우편번호 -0.014061
지번본번지 -0.020684
지번부번지 -0.023831
시도코드 NaN
호정보 NaN
dtype: float64'''
value_counts : 특정 개수가 몇개인지 세는 요소
df["상호명"].value_counts
'''
<bound method IndexOpsMixin.value_counts of 0 동그라미중고타이어
1 세인트존스호텔Ohcrab
2 평창라마다호텔
3 호텔탑스텐스카이라운지
4 행복나눔
...
106863 오덕정미소
106864 정가네가마솥삼계탕
106865 엄마의부엌
106866 봉포김여사
106867 치포스
Name: 상호명, Length: 106868, dtype: object>
'''