728x90
더보기
🐍👣
Self book study 진행하며 개인적으로 정리가 필요한 내용들을 블로그에 기록해 놓으려고 한다.
책의 내용 중 내가 부족한 부분을 정리하는 것이 목적으로 아는 부분은 과감하게 스킵할 것이다. (저작권도 무섭고...)
항상 책을 읽어도, 기억은 휘발되기 때문에 어딘가에 끄적이는 편이지만 손으로 쓴 것은 검색이 잘 안된다
돌아돌아 온 곳은 결국 다시 블로그 (클래식 이즈더 베스트)
언젠간 이 정리들이 빛을 발할 날을 기다리며 차곡 차곡 쌓아갈 예정 👩💻
#1. 데이터 과학과 파이썬 소개
[파이썬 자료 구조 종류]
- 기본 빌트인 구조
- 시퀀스 형태의 자료 구조
- 특징 : 요소의 위치값인 인덱스를 통해 접근 가능. 슬라이싱 / 추가 / 아이템유무 확인 등의 연산 주로 진행
- 종류 : 리스트, 튜플
- 비시퀀스 형태의 자료 구조
- 특징 : 값의 순서를 고려하지 않음 (인덱스X)
- 종류 : 세트
- 시퀀스 형태의 자료 구조
- 모듈 내장 구조(pandas, numpy) : array, series...
[리스트 List]
- 형태
list_sample = [1,2,3,4,5,6,7,8,9,10]
- 개념 : 수치 값, 문자열 등 여러 값을 한 줄로 모은 것
- 가능한 기능
- 시퀀스 구조 : 기본적인 인덱싱, append, 값 반환 등이 가능
- 사용 가능한 함수
# append. 기존 리스트에 '11' 추가
list_sample.append(11)
# count. 리스트 안에 있는 '1'의 개수 새기
list_sample.count(1)
# insert. 특정 위치에 100 넣기 (여기에선 맨 앞)
list_sample.insert(0,100)
# remove. 삭제하기
list_sample.remove(100)
# sort. 정렬
list_sample.sort
# 그 외
#pop
#reverse
[튜플 Tuple]
- 형태
t = (1,2,3,4,5)
- 개념 : 시퀀스 형태의 자료 구조
- 특징
- 순서가 있음 (인덱스는 0에서 시작)
- 생성하게 되면 값을 변경할 수 없다 (sort, append, reverse 등 사용 불가능)
- 메모리 사용, 속도 등에 효율적이라 임시 변수 생성에 유리함
- 딕셔너리에서 Key, Value 반환 시 튜플 구조 사용 (리스트 형태는 key가 될 수 없음)
- 튜플 간 크기, 값 비교 시 첫번째 비교 밗이 같으면 다음 값을 비교하는 로직
[세트 Set]
- 형태
a = {1,2,3}
b = {4,5,6}
- 개념 : 값의 모임이나 값의 순서가 없음
- 특징
- 집합과 관련된 연산을 지원함
#합집합
a.union(b)
#교집합
a.intersection(b)
#차집합
a-b
#합집합
a|b
#교집합
a&b
※ 리스트, 튜플, 세트의 관계
- 개념
- 리스트, 튜플은 시퀀스 형태로 인덱스가 존재함
- 세트는 순서가 없으며 인덱스가 없음
- 형태
## 자료 구조 변환하기
a = [1,2,3]
# 리스트를 세트로
b = set(a)
# 세트를 튜플로
c = typle(b)
※ 인덱스와 슬라이싱
인덱스
- 인덱스는 해당 요인의 '앞'에 있는 개념
- 인덱스는 0 부터 시작
슬라이싱
- 인덱스 기준으로 범위를 지정해서 값을 가져오는 것
>>> lst = [1,2,3,4,5]
#첫번째부터 네번째 값까지 가져오기
>>> lst[0:4]
[1,2,3,4]
#두번째부터 다섯번째값까지 가져오기
>>> lst[1:]
[2,3,4,5]
#첫번째부터 세번째값까지 가져오기
>>> lst[:3]
[1,2,3]
[딕셔너리]
- 개념
- 값마다 이름이 있는 값의 모음
- Key - Value로 매칭됨
- 인덱스는 없으나 Key값으로 접근하여 값 수정 가능
#딕셔너리 생성
>>> d_sample = dict()
>>> d_sample_2 = dict()
#키값 할당 _ 하나하나 할당하기
>>> d_sample['age'] = 12
>>> d_sample['class'] = 120
>>> d_sample['weight'] = 50
>>> print(d_sample)
['age' : 12, 'class' : 120, 'weight' : 50]
#키값 할당 _ 한번에 할당하기
>>> d_sample_2 ["apple":"red", "banana":"yellow"]
#키에 따른 값 확인하기
>>> d_sample_2["banana"]
'yellow'
[시리즈]
- 개념
- 1차원의 자료 구조 (pandas)
- numpy의 array와 유사
- 1차원의 자료 구조 (pandas)
- 특징
- 인덱스, 라벨 인덱싱 모두 구현되어 있음
- group by 적용 가능
[데이터프레임]
- 개념
- pandas에서 제공하는 2차원의 자료 구조 (행열 존재)
- 인덱스 기능 구현되어 있으며, 인덱스가 같은 여러개의 시리즈들로 구성되었다고 보면 됨
- Column 마다 다른 자료형태 가능 (1열은 정수, 2열은 문자 등등)
#판다스에서 시리즈, 데이터프레임 가져오기
>>> import pandas as pd
# 시리즈 만들기
>>> s = pd.series([0.1, 1.2, 2.3, 3.4, 4.5], index = ['a','b','c','d','e']
>>> s['a']
0.1
>>> s[0]
0.1
>>>s[['a','c']]
a 0.1
c 2.3
>>>s[[0,2]]
a 0.1
c 2.3
# 데이터프레임 만들기
>>> data = {
'col0' : [1,2,3,4],
'col1' : [10,20,30,40],
'col2' : [100,200,300,400]
}
>>> data = pd.DataFrame(data)
※ 반복문
시퀀스 자료 구조의 꽃,,, 반복문,,, 해도해도 생소한 반복문,,,
# 반복문 간단한 사용 방법
>>> for i in [1,2,3,4] :
>>> print(i)
# range 함수 사용해서 1~5 리스트로 자동으로 만들기
>>> for i in range (1,5):
>>> print(i)
'👩💻LEARN : ML&Data > Book Study' 카테고리의 다른 글
[머신러닝을 위한 수학 with 파이썬, R] #5. 확률분포와 통계적 추론 (0) | 2023.01.30 |
---|---|
[머신러닝을 위한 수학 with 파이썬, R] #4. 확률과 통계 (2) | 2023.01.29 |
[머신러닝을 위한 수학 with 파이썬, R] #3. 미분과 적분의 이해와 응용 (0) | 2023.01.28 |
[머신러닝을 위한 수학 with 파이썬, R] #2. 머신 러닝을 위한 선형 대수 part2. 고윳값, 고유벡터, 대각화 (1) | 2023.01.26 |
[머신러닝을 위한 수학 with 파이썬, R] #2. 머신 러닝을 위한 선형 대수 part1. 벡터, 내적외적, 역행렬 (0) | 2023.01.24 |