numpy에서의 데이터 표현
소리
흑백 이미지
컬러 이미지
자연어
A Visual Intro to NumPy and Data Representation
이미지는 픽셀들로 구성
각의 픽셀은 R, G, B 값 3개 요소의 튜플로 색상이 표시
Color는 투명도를 포함하는 A를 포함해 RGBA 4개로 표시
Image의 좌표는 보통 왼쪽 위를 (0, 0)으로 표시하고, 오른쪽과 아래로 내려갈수록 좌표가 증가
출처: AIFFEL FUNDAMENTAL_ 7. Data 어떻게 표현하면 좋을까? 배열(array)과 표(table)
matplotlib
,PIL
:
이미지파일을 열고, 자르고, 복사하고, rgb 색상값을 가져오는 등 이미지파일과 관련된 몇 가지 작업을 수행
# size
img.size
W, H = img.size
print((W, H))
# 파일 타입, 색상 정보 알아보기
print(img.format)
print(img.mode)
# 이미지 크롭
img.crop((30,30,100,100))
# 저장
img.crop((30,30,100,100)).save(새로운 파일명)
# 행렬 변환
import numpy as np
img_arr = np.array(img)
print(type(img))
print(type(img_arr))
print(img_arr.shape)
print(img_arr.ndim)
# 흑백모드
img_g = Image.open(img_path).convert('L')
# get color: 각 색상이 RGB값으로 어떻게 표현되는지를 반환
red = ImageColor.getcolor('RED','RGB')
reda = ImageColor.getcolor('red','RGBA')
yellow = ImageColor.getcolor('yellow','RGB')
print(red)
print(reda)
print(yellow)
구조화된 데이터:
데이터 내부에 자체적인 서브 구조를 가지는 데이터
hash
: Key
와 Value
로 구성되어 있는 자료 구조로 두 개의 열
만 갖지만 수많은 행을 가지는 구조체
파이썬 라이브러리로 Series와 DataFrame이라는 자료 구조를 제공.
이 데이터 타입을 활용하면 구조화된 데이터를 더 쉽게 다룰 수 있다.
# 설치
pip install pandas
NumPy기반에서 개발되어 NumPy를 사용하는 어플리케이션에서 쉽게 사용 가능
축의 이름에 따라 데이터를 정렬할 수 있는 자료 구조
다양한 방식으로 인덱스(index)하여 데이터를 다룰 수 있는 기능
통합된 시계열 기능과 시계열 데이터와 비시계열 데이터를 함께 다룰 수 있는 통합 자료 구조
누락된 데이터 처리 기능
데이터베이스처럼 데이터를 합치고 관계연산을 수행하는 기능
일련의 객체를 담을 수 있는, 1차원 배열과 비슷한 자료 구조.
배열형태인 리스트, 튜플을 통해서 만들거나 NumPy 자료형으로도 만들 수 있다.
index와 value를 가짐
import pandas as pd
ser = pd.Series(['a','b','c',3])
순서를 나타낸 숫자
인덱스에 다른 값을 넣을 수 있다.
Series 객체를 만들때 인자로 넣어주거나 할당 연산자를 이용해서 인덱스의 값을 지정할 수 있다.
# 인덱스와 값 확인
ser.index
ser.values
# 인덱스 설정
ser2 = pd.Series(['a', 'b', 'c', 3], index=['i','j','k','h'])
ser2.index = ['Jhon', 'Steve', 'Jack', 'Bob']
# 딕셔너리 활용
Country_PhoneNumber = {'Korea': 82, 'America': 1, 'Swiss': 41, 'Italy': 39, 'Japan': 81, 'China': 86, 'Rusia': 7}
ser3 = pd.Series(Country_PhoneNumber)
# 슬라이싱
ser3['Italy':]
Series 객체와 Series 인덱스는 모두 name 속성이 있다.
ser3.name = 'Country_PhoneNumber'
ser3.index.name = 'Country_Name'
표(table)와 같은 자료 구조.
여러 개의 칼럼을 나타낼 수 있다.
s.index=['one','two','three','four','five']
s.columns = ['a','b','c','d']
출처: AIFFEL FUNDAMENTAL_ 7. Data 어떻게 표현하면 좋을까? 배열(array)과 표(table)
.head()
: 데이터셋의 처음 5개 행 표시
(정수 인자를 넣어서 출력할 행의 개수를 조정)
.tail()
: 마지막 5개 행 표시
(정수 인자를 넣어서 출력할 행의 개수를 조정)
.columns
: 데이터셋에 존재하는 컬럼명을 확인
.info()
: 각 컬럼별로 Null값과 자료형을 보여주는 메소드
.describe()
: 컬럼별로 기본 통계데이터를 보여주는 메소드
.isnull()
: missing 데이터 확인
.value_counts()
: 각 범주(Case, Category)별 값의 개수 구하기
.value_counts().sum()
: 컬럼별 통계수치의 합을 확인
.sum()
: 컬럼 값의 총합
.corr()
: 모든 컬럼이 다른 컬럼 사이에 가지는 상관관계 확인
count()
: NA를 제외한 수를 반환
describe()
: 요약통계를 계산
min()
, max()
: 최소, 최댓값을 계산
sum()
: 합을 계산
mean()
: 평균을 계산
median()
: 중앙값을 계산
var()
: 분산을 계산
std()
: 표준편차를 계산
argmin()
, argmax()
: 최소, 최댓값을 가지고 있는 값을 반환
idxmin()
, idxmax()
: 최소, 최댓값을 가지고 있는 인덱스를 반환
cumsum()
: 누적 합을 계산
pct_change()
: 퍼센트 변화율을 계산