👩‍💻LEARN : ML&Data/Book Study

[머신러닝을 위한 수학 with 파이썬, R] #1. 데이터 과학과 파이썬 소개

쟈니유 2023. 1. 24. 21:11
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와 유사 
  • 특징 
    • 인덱스, 라벨 인덱싱 모두 구현되어 있음
    • 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)