1주차 학습정리_3

Simbean·2021년 8월 5일

NUMPY

Numerical Python

파이썬의 고성능 과학 계산용 패키지
Matrix, Vector와 같은 Array 연산의 사실상의 표준
일반 리스트에 비해 빠르고 메모리가 효율적임
import numpy as np
dynamic typing을 지원하지 않음 -> 사전에 정의된 한가지 타입을 받아야함
Numpy의 dtype = C의 data type과 compatible함
nbytes = ndarray object의 메모리 크기를 반환함

  • ex) np.array([~], dtype = np.float32) = array 크기 * 4bytes

reshape = Array의 shape를 변경함, element의 개수가 다르면 ValueError

  • ex) .reshape(2, 2).shape = (2, 2)
import numpy as np
arr = np.zeros(8)
print(arr.reshape(4, 2))

'''
[[0. 0.]
 [0. 0.]
 [0. 0.]
 [0. 0.]]
'''

flatten = 1차원 array로 변경

  • ex) 2 * 2 행렬을 .flatten() => (4,)로 변경

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.]]
  • k=a 옵션으로 시작 index를 변경할 수 있다.

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 = 축

  • ex) shape = (5, 6) axis = 0 -> 5, axis = 1 -> 6
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 합치는(붙이는) 함수

  • vstack = 행끼리 결합 hstack = 열끼리 결합
  • 따라서 vstack은 열 개수가 같아야하고 hstack은 행끼리 같아야함
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

  • np.where(조건, True일 경우, False일 경우 : true, false에 따라 값을 넣음
  • np.where(조건) : Index값 반환
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로 사용해서 값을 추출할 수 있다

  • ex) array1[array2] or array.take(array2) (이때, array2의 요소는 모두 정수형이어야 한다)
    .save = .npy로 저장
    .load = 불러오기

pandas

import pandas as pd
numpy와통합하여, 강력한“스프레드시트” 처리기능을제공
인덱싱, 연산용함수, 전처리함수등을제공함
데이터처리 및 통계분석을 위해 사용
head : 처음 다섯 줄 출력

pandas의 구성

  • Series : 하나의 Column에 해당하는 데이터의 모음 Object
  • DataFrame : Data Table 전체를 포함하는 Object

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

    • ascending: 오름차순, 내림차순

    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>
'''

소상공인시장진흥공단_상가 데이터 출처

0개의 댓글