1주차 학습정리_3

Simbean·2021년 8월 5일
0

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개의 댓글

관련 채용 정보