일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- BFS
- 음수와 size 비교
- C++
- 스터디
- 프로그래머스
- 상어중학교
- 코테연습
- 코테준비
- 개인정보수집유효기간
- Ai
- map
- 머신러닝
- 알고리즘
- 크롤링
- 에이블스쿨
- 21609
- 백준
- python
- kt에이블스쿨
- 코딩테스트
- 데이터전처리
- 파이썬
- 코테
- 미니프로젝트
- 코딩
- Queue
- 취준
- dfs
- 코테공부
- 모델링
- Today
- Total
얼레벌레
[py] 데이터 유형과 numpy 본문
데이터의 유형과 보는 방법
데이터 분석/모델링을 위해 다룰 수 있는 데이터 2가지 - 숫자형 / 범주형
범주형
집단으로 묶을 수 있는, 질적 데이터 (정성적 데이터)
- 명목형 데이터 (모일 수 있는)
ex) 성별, 시/도, 흡연 여부, 음주 여부 - 순서형 데이터(원래 숫자인데, 숫자를 범주로 나타낸 것)
ex) 연령대, 매출 등급
수치형
양적 데이터 (정량적 데이터)
- 이산형(countable) 데이터 (딱 떨어지는 숫자)
ex) 판매량, 매출액, 나이 - 연속형 데이터 (딱 떨어지지 않는)
ex) 온도, 몸무게
범주형, 수치형 판별 법 : 예를 들어 3월과 1월이 있을 때 3월의 3이 1월의 1의 3배를 의미하는가? 아님, 아니면 범주형이다.
이렇게 분석할 수 있는 데이터는, 데이터를 모을 때 2차원 구조(표/테이블) 형태로 모은다.
기본이 2차원이라는 것임.
- 열(column): 변수, 요인, features, x, input, 독립 변수
- 행(row) : 분석 단위, 샘플, 관측치, 데이터
강사님이 '행이 분석단위이다.' 라는 말을 굉장히 강조하셨다. (실제 실무에 들어가면 이 분석단위를 정하는 게 굉장히 어렵다고 함)
Mnist 같은 경우, 이미지 1장이 하나의 분석 단위이다.
이 하나의 분석 단위 여러개가 모여 dataset이 되는데, 2차원이 여러개 있으면 dataset은 3차원이다.
+ 마찬가지로, 만약 분석 단위가 3차원이라면 dataset은 4차원
Numpy
사용법
import numpy as np
a = np.array([1, 2, 3, 4, 5])
# 특정 함수만 가져오기
from numpy import array
a = array([1, 2, 3, 4, 5])
Numpy 배열
용어 정리
axis : 배열의 축 (axis 0이 열 방향-세로, axis 1이 행 방향-가로)
rank : 축의 개수 (ndim과 비슷)
shape: 축의 길이, 배열의 크기
ex) 3*4 배열의 경우
axis0과 axis1을 갖는 2차원 배열,
rank는 2, shape은 (3, 4)
reshape - shape 바꾸기
shape을 굳이 바꿔주는 이유는? 딥러닝에서는 데이터의 구조를 맞춰주는 것이 중요하기 때문!
# 2*3 배열
a = np.array([1, 2, 3],
[4, 5, 6])
b = np.reshape(a, (6, 1))
c = a.reshape(3, 2)
a.reshape(3, -1) #행은 3으로 맞추고 싶은데 열은 아무렇게나 해줘
a.reshape(-1, 2) #열은 2로 맞추고 싶은데 행은 아무렇게나 해줘
+ 만약 1차원을 2차원으로 바꾼다면 행으로 들어간다.
인덱싱
a = np.array([1, 2, 3], [4, 5, 6], [7, 8, 9]) 를 통해
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
이렇게 생긴 numpy 배열을 만들었다고 생각해보자.
- 첫번째 행, 두번째 열에 있는 요소 조회하기.
a[0, 1] 혹은 a[[0], [1]]
첫번째 방법의 경우 단일 값 (스칼라) 형태로 나온다. => 2
두번째 방법은 목록으로 가져와 1차원 값으로 나타난다. => [2] - 첫번째, 두번째 행 조회하기.
a[[0, 1]] 혹은 a[[0, 1], :
이렇게 여러개 행을 조회하고 싶을 때 리스트 형태로 조회함. - 첫번째, 두번째 열 조회하기.
a[:, [0, 1]]
마찬가지로 여러개 열을 조회하고 싶을 때 리스트 형태로 조회함,
열을 조회할 때 행 인덱스 자리의 :는 생략이 안됨. - 첫번째행 첫번째열, 두번째행 두번째열 조회
a[[0, 1], [0, 1]]
앞 뒤를 조합해서 a[0, 0]과 a[1, 1]을 가져온다. => [1 5]
슬라이싱
마찬가지로 위의 a 배열로 예시를 들어보자.
- 첫번째 ~ 두번째 행 조회
a[0:2, :] 혹은 a[0:2] - 첫번째 행의, 첫번째~두번째 열 조회
a[0, 0:1] - 첫번째~세번째 행, 두번째~세번째 열 조회
a[0:3, 1:3] - 두번째 ~ 마지막 행, 두번째 ~ 마지막 열 조회
a[1:, 1:]
조건 조회
조건에 맞는 요소를 선택하는 방식 '불리안 방식'
조회 결과는 1차원 배열
#예시 코드
score = np.array([[78, 91, 84, 89, 93, 65],
[82, 87, 96, 79, 91, 73]])
score >= 90
#결과
# array([[False, True, False, False, True, False],
# [False, False, True, False, True, False]])
score[score>=90]
#결과
#[91 93 96 91]
여러 조건을 &나 |로 묶어서 조회 가능,
조건을 여러 개 엮을 때는 각 조건을 괄호()로 묶어서 조회해야 한다.
배열 연산
- 배열 더하기
+ 또는 np.add() 함수 사용
ex) print(x+y) 또는 print(np.add(x, y)) - 배열 빼기
- 또는 np.subtract() 함수
ex) x-y 또는 np.subtract(x, y) - 배열 곱하기
* 또는 np.multiply() 함수 - 배열 나누기
/ 또는 np.divide() 함수 - 배열 제곱
** 또는 np.power() 함수
배열 집계
np.sum() 또는 array.sum() 이용
axis=0 이면 열 기준 집계, axis=1 이면 행 기준 집계
np.max(), np.min(), np.mean(), np.std() 도 마찬가지로 사용
a = np.array([[1, 5, 7], [2, 3, 8]])
np.sum(a) #전체 => 26
np.sum(a, axis=0) # 열 기준 => [3 8 15]
np.sum(a, axis=1) # 행 기준 => [13 13]
where, linspace
- np.where( 조건문, 참일 때 값, 거짓일 때 값)
- a = np.array([1, 3, 2, 7])
print(np.where(a>2, 1, 0)) - 결과: [0 1 0 1]
- a = np.array([1, 3, 2, 7])
- np.linspace(시작값, 끝값, 사이값 개수) : 시작값~끝값, 사이값개수 만큼의 값을 만들기
- list(range(1, 10, 2))
=> [1, 3, 5, 7, 9] - np.linsapce(0.1, 10, 100)
=> array ([0.1, 0.2, 0.3, ... 9.9, 10. ])
- list(range(1, 10, 2))
'취업 > KT AIVLE SCHOOL' 카테고리의 다른 글
[크롤링] 웹 - 서버와 클라이언트, 웹 구조 (0) | 2022.08.07 |
---|---|
[py] pandas 패키지 (0) | 2022.08.07 |
[py] 기본 문법 (2) | 2022.08.04 |
[git] git 사용법 (0) | 2022.08.03 |
KT AIVLE School (에이블스쿨) AI 과정 2기 합격 후기 (6) | 2022.08.03 |