일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- NLP
- 데이터분석
- 스크랩
- 함수
- 아이펠
- 머신러닝
- 파이썬코딩도장
- 파이썬
- 카카오
- 후기
- 제어문
- 코딩도장
- 제로베이스 데이터사이언스
- 기사
- AI
- 데이터사이언티스트
- TensorFlow
- 딥러닝
- 추천시스템
- AIFFEL
- 속성
- numpy
- 사이킷런
- 데이터사이언스 스쿨
- Set
- 자연어처리
- 클래스
- 재귀함수
- 딕셔너리
- Python
- Today
- Total
뮤트 개발일지
AIFFEL 아이펠 5일차 본문
평균
표준편차
입력받은 숫자들을 저장할 리스트가 필요하다. 이 때, 파이썬은 동적배열로 몇 개의 원소가 들어가는지 미리 정하지 않아도 괜찮다.
list와 arrya의 차이점
- list와 달리 array는 import가 필요하다.
- list는 서로 다른 타입의 자료형이 허용되지만, array는 처음에 유형을 지정해서 생성하기 때문에 다른 타입의 element 추가는 허용되지 않는다.
리스트를 활용한 시그마 표현
total = 0.0
for i in range(len(X)):
total = total + X[i]
mean = total / len(X)
print('sum of X: ', total)
중앙값
중앙값median: 주어진 숫자를 크기 순서대로 배치할 때 가장 중앙에 위치하는 숫자
def median(nums): # nums : 리스트를 지정하는 매개변수
nums.sort() # sort()로 리스트를 순서대로 정렬
size = len(nums)
p = size // 2
if size % 2 == 0: # 리스트의 개수가 짝수일때
pr = p # 4번째 값
pl = p-1 # 3번째 값
mid= float((nums[pl]+nums[pr])/2)
else: # 리스트의 개수가 홀수일때
mid = nums[p]
return mid
print('X :', X)
median(X) # 매개변수의 값으로 X를 사용함
표준편차와 평균
평균
def means(nums):
total = 0.0
for i in range(len(nums)):
total = total + nums[i]
return total / len(nums)
means(X)
표준편차
def means(nums):
total = 0.0
for i in range(len(nums)):
total = total + nums[i]
return total / len(nums)
means(X)
NumPy
1) ndarray
numpy.adarray도 모든 element의 타입이 동일해야 하는데, 모든 숫자를 문자열로 바꿀 수 있다. 숫자만 있던 ndarray에 문자열이 들어가면 모든 숫자를 문자열을 해석해서 array의 요건을 맞춘다.
2) 개념
size: 행렬 내 원소의 개수
shape: 행렬의 모양
ndim: 행렬의 축axis의 개수
reshape(): 행렬의 모양을 바꿈
3) type
numpy.array.dtype: ndarray '원소'의 데이터타입 반환
type(A): 행렬A의 자료형 반환
deprecate: error가 아닌 warning 문구로 경고를 하는 것. 기능을 못쓰는 것은 아니지만 관리를 하지 않아 오류가 날 확률이 높다는 뜻. 어떻게 코드를 수정해야 하는지 알려준다.
np.eye(): 단위행렬
np.zeros(): 0행렬
np.ones(): 1행렬
broadcast: ndarray와 상수, 혹은 크기가 다른 ndarray끼리 산술연산이 가능한 기능
np.random.randint(): 정수형 난수 1개를 생성
np.random.choice(): 리스트에 주어진 값 중 하나를 랜덤하게 생성
np.random.permutation(): 무작위로 섞인 배열 생성
np.random.normal(): 어떤 분포를 따르는 변수를 임의로 표본추출함
np.random.uniform(): 균등분포를 따름
전치행렬
arr.T: 행과 열 맞바꾸기
np.transpose: 축을 기준으로 행렬의 행과 열 바꾸기
numpy 기본 계산 함수
sum(): 합
mean(): 평균
std(): 표준편차
median(): 중앙값
http://jalammar.github.io/visual-numpy/
소리 데이터를 numpy로 표현하기
1차원 array로 표현. CD음원파일의 경우, 44.1kHz의 샘플링 레이트로 -32767 ~ 32768의 정수 값을 가진다.
흑백 이미지 numpy로 표현하기
이미지 사이즈의 세로 * 가로 형태의 행렬(2차원 ndarray)로 나타내고, 각 원소는 픽셀별로 명도(grayscale)를 0 ~ 255의 숫자로 환상하여 표시한다. 0은 검정, 255는 흰색
컬러 이미지 Numpy로 표현하기
이미지 사이즈의 세로 * 가로 * 3 형태의 3차원 행렬. 3은 red, green, blue 계열의 3색을 의미
자연어 numpy로 표현하기
임베딩embedding이라는 과정을 거쳐 ndarray로 표현한다. 토큰화 과정: 예) 71,290개의 단어가 들어있는 데이터셋이 있을 때, 이를 단업려로 나누고 0 - 71,289로 넘버링함 이 토큰을 50차원의 word2vec embedding을 통해 [batch_size, sequence_length, embedding_size]의 ndarray로 표현할 수 있다.
픽셀과 이미지
- 이미지는 픽셀(수많은 점들)로 구성됨
- 각각의 픽셀은 R, G, B 값 3개 요소의 튜플로 색상 표시
- 흰색(W) : (255,255,255)
- 검정색(B) : (0, 0, 0)
- 빨간색(R) : (255, 0, 0)
- 파란색(B) : (0, 0, 255)
- 녹색(G) : (0, 128, 0)
- 노란색(Y) : (255, 255, 0)
- 보라색(P) : (128, 0, 128)
- 회색(Gray) : (128, 128, 128)
- 흑백: Gray 스케일로 나타냄. 0~255 범위의 숫자 1개의 튜플 값
- 컬러: 투명도를 표함하는 A(alpah)를 포함해 RGBA 4개로 표시하기도 함
- image 좌표는 왼쪽 위를 (0, 0)으로 표시, 오른쪽과 아래로 내려갈 수록 좌표 증가
이미지와 관련된 파이썬 라이브러리
- matplotibl
- PIL
: 이미지 파일 열기, 자르기, 복사하기, RGB 색상 값 가져오기 등 이미지 파일과 관련된 작업 수행. 이렇게 처리한 파일을 numpy를 이용해 행렬로 빠르게 연산해서 이미지를 빠르게 작업함
이미지 조작에 필요한 매소드
- open: Image.open()
- size: Image.size => 이미지 사이즈의 가로*세로가 튜플 형태로 반환
- filename: Image.filename
- crop: Image.crop((x0, y0, xt, yt)) => 이미지 자르기. 인자로 튜플값을 받고, 가로세로 시작점과 끝점을 입력
- resize: Image.resize((w, h))
- save: Image.save() => 이미지 저장. 매개변수로 파일 이름
- 흑백모드로 이미지 열기: Image.open().conver('L')
행렬로 이미지 변환하기
import numpy as np
img_arr = np.array(img)
- getcolor(): 각 색상이 RGB값으로 어떻게 표현되는지 반환
해시 hash: 어떤 데이터의 값을 찾을 때 인덱스가 아닌 키key를 사용해 데이터에 접근하는 데이터 구조. key와 value로 구성되어 있는 자료구조로 2개의 '열'만 갖지만 수많은 '행'을 가지는 구조체
구조화된 데이터: 데이터 내부에 자체적인 서브 구조를 가지는 데이터. 테이블table 형태로 전개됨
pandas
: 구조화된 데이터를 효과적으로 표현하기 위해 pandas는 Series와 DataFrame이라는 자료 구조를 제공한다.
- numpy 기반에서 개발되어 numpy를 사용하는 애플리케이션에서 쉽게 사용 가능
- 축의 이름에 따라 데이터를 정렬할 수 있는 자료 구조
- 다양하게 인덱싱하여 데이터를 다룰 수 있음
- 통합된 시계열 기능과 시계열 데이터와 비시계열 데이터를 함께 다룰 수 있는 통합 자료 구조
- 누락된 데이터 처리 기능
- 데이터베이스처럼 데이터를 합치고 관련 연산을 수행
(무슨 말인지 하나도 모르겠다..)
Series
import pandas as pd
ser = pd.Series(['a','b','c',3])
ser
Series에는 index와 value가 존재
Series 객체의 values를 호출하면 array 형태로 반환
ser.values
인덱스는 RangeIndex가 반환
ser.index
인덱스 설정: Series의 인자로 넣어주는 법
ser2 = pd.Series(['a', 'b', 'c', 3], index=['i','j','k','h'])
ser2
인덱스 설정: 할당 연산자
ser2.index = ['Jhon', 'Steve', 'Jack', 'Bob']
ser2
여기서 index를 조회하면 위의 RangeIndex가 아닌 Index 타입의 객체가 표시된다.
==> Series에서 인덱스는 기본적으로 정수 형태로 설정되고, 사용자가 원하면 값을 할당할 수 있다.
또한 파이썬 딕셔너리를 사용하면 index의 기본값으로 키가 들어간다.
Series의 Name 속성
ser3.name = 'Country_PhoneNumber'
ser3.index.name = 'Country_Name'
ser3
EDA(Exploratory Data Analysis): 데이터 탐색
head(): 데이터 셋의 처음 5개 행을 보여줌. 인자로 보여줄 행의 갯수를 지정할 수 있다.
tail(): 마지막 5개 행을 보여줌
columns: 데이터셋에 있는 컬럼 명을 확인할 수 있다.
info(): 각 columns 별로 Null값과 데이터 타입을 알려준다.
describe(): 개수count, 평균mean, 표준편차std, 최솟값min, 4분위수(25%, 50%, 75%), 최댓값max를 보여준다.
isnull().sum(): missing 데이터를 isnull로 확인, sum으로 missing 데이터 개수의 총합을 구할 수 있다.
value_counts(): 각 범주case or category 별로 값이 몇 개 있는지 구할 수 있다.
value_counts().sum(): 칼럼별 통계 수치의 합을 구할 수 있다.
sum(): 해당 컬럼의 총합을 구할 수 있다.
data.sum(): DataFrame 전체의 각 컬럼별로 합을 구할 수 있다.
corr(): dara.corr()을 통해 모든 컬럼이 다른 컬럼 사이에 가지는 상관관계를 확인할 수 있다.
drop(): 컬럼 삭제
count(): NA를 제외한 수를 반환
describe(): 요약 통계 계산
min(), max(): 최소, 최댓값 계산
sum(): 합을 계산
mean(): 평균 계산
median(): 중앙값 계산
var(): 분산 계산
std(): 표준편차 계산
argmin(), argmax(): 최소, 최댓값을 가지고 있는 값 반환
idxmin(), idmax(): 최소, 최댓값을 가지고 있는 인덱스 반환
cumsum(): 누적 합 계산
pct_change(): 퍼센트 변화율 계산
https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html
'AIFFEL' 카테고리의 다른 글
AIFFEL 아이펠 6일차 (0) | 2022.01.03 |
---|---|
AIFFEL 아이펠 파이썬으로 코딩 시작하기 (0) | 2022.01.03 |
AIFFEL 아이펠 4일차 (0) | 2021.12.30 |
AIFFEL 아이펠 3일차 (0) | 2021.12.29 |
AIFFEL 아이펠 2일차 배운 것 정리 및 느낀 점 (0) | 2021.12.28 |