머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(1)

2020. 9. 3. 00:54·AI Study/ML_Basic
반응형

* 위 강의노트는 패스트캠퍼스에서 주관하는 강의를 수강하고 작성한 노트입니다. 

Python Programming 기초

데이터 타입과 컬렉션 - 기본 타입 및 변수의 이해

 

  • 변수란 무엇인가?
    • 데이터를 저장하는 공간, 변수
    • 저장공간(memory)에 값을 생성하고 이름(name)을 지정
      -> 이름(name)이라는 상자(공간) 에 값을 넣는 것
    • =(대입연산자)를 사용하여 왼쪽은 변수명, 오른쪽은 데이터가 위치
a = 10   # int
b = 11.4  # float

 

  • Comment(주석)

    • 코드에서 # 으로 시작하는 뒷 부분은 실행되지 않음
    • python이 소스코드를 실행하면서 # 을 만나면 무시
    • 개발자(사람)가 보기 위한 용도로 사용
    • 코드에 대해 부연설명을 하는 역할

  • print함수

    • 함수란? -> 특정 기능을 반복적으로 호출하여 사용 가능한 코드블럭
    • 해당 변수의 값을 출력
    • , 로 여러 변수를 나열하면 한줄에 모두 출력
    • 기본적으로는 한칸 띄어쓰기 후 출력
print(a, b)
>> 10 11.4.  ## 사이에 띄어쓰기가 존재함

 

  • print함수 설정
    • sep : 구분자, 각 출력할 변수 사이에서 구별하는 역할을 함
    • end: 마지막에 출력할 문자열
print(a, b, 10, 100, sep = ‘*’, end = ‘!!’)
>> 10*11.4*10*100!!

 

  • 변수 값 확인법

    • print() 함수 사용
    • 변수 값을 코드의 마지막에 위치시킨 후 실행
      • 이 경우 output으로 변수의 값이 출력

  • variable naming (변수 이름 규칙)

    • 숫자로 시작하는 이름을 제외하고 영문 대소문자, _, 숫자로 구성가능
    • 아래의 예제는 모두 valid한 변수 이름
    • 일반적으로 해당 변수를 표현하고자 하는 정확하고 간결한 이름을 사용하는 것이 원칙임
      • 코드를 읽은 것을 더 쉽게 할 수 있음
      • e.g) a = 1000의 경우보다 student_num = 1000으로 명시한 것이 변수에 대한 이해가 빠름
    • 숫자로 시작하면 안되는 이유?
      -> 숫자로 변수를 설정한 경우 나중에 변수를 사용할 때 혼동이 오기 때문에

  • reserved keywords (예약어)

    • python에서 미리 선점하여 사용중인 키워드
    • 변수, 함수, 클래스 등등의 사용자 정의 이름으로 사용할 수 없음
    • 사용하려 할 때 녹색으로 바뀌면 그것은 예약어!
      -> ex) class if, else …

Python의 기본 데이터 타입

  • 정수(int)
  • 실수(float)
  • 문자열(str)
  • 불리언(boolean)

  • type 함수

    • 해당 변수, 값의 타입(type)을 알고자 할 때 사용
    • type()을 통해 변수의 타입을 알 수 있다

  • None

    • 아무런 값을 갖지 않을 때 사용
    • 일반적으로 변수가 초기값을 갖지 않게 하여 해당 변수를 생성할 때 사용
    • 기타 언어의 NULL, nil등과 같은 의미로 사용
    • 변수를 사용하나, 어떤 변수를 사용할 지 아직 알지 못할 때 사용

 

  • comparison operator(비교연산자)
    • 프로그래밍에서는 비교를 할 경우, = 대신 ==를 사용
    • <,>(작다, 크다)
    • <=,>=(작거나 같다, 크거나 같다)
    • == (같다)
    • != (같지 않다)
    • 비교 연산자의 결과는 bool 타입
a = 5
b = 4 
print(a > b)
>> True
print(a < b)
>> False

 

  • numbers(숫자형 타입)

    • 정수, 실수로 구성
    • 수학의 기본 연산자(가감승제) 사용 가능

  • operator priorties (연산자 우선순위)

    • 기본적인 수학의 연산자와 동일
    • 강제로 연산을 선수하기 위해선, 괄호()를 사용
> a = 5
> b = 4
> print(a + b * 4)
> >> 21
> print((a+b)*4)
> >> 36

 

  • expression evaluation & assignment (식평가 & 대입)
    • 변수의 값이 변경되기 위해서는 = 을 사용하여 대입이 발생하는 경우에만 해당
    • 다시 = 를 사용하여 대입하지 않는 이상 값이 변동하지는 않음

데이터 타입과 컬렉션 - 문자열 타입의 이해 및 활용하기

  • string(문자열)
    • 복수개의 문자를 순서대로 나열한 것
    • 문자열은 ‘(작은 따옴표) 혹은 “(큰 따옴표) 사이에 문자를 넣어 생성
    • 문자열 자체에 ‘,”가 있는 경우에는 각각 그 반대의 기호로 생성
    • ‘’’ ‘’’ 사용하여 표현 가능
    • 차이점
      • ‘’, “” -> 한줄 문자열 표현
      • ‘’’ ‘’’ -> 여러 줄에 걸쳐 문자열 표현 가능
a = ‘hello world’
b = “hello world’
c= ‘’hello world’’
d = “”” hello world”””
>> 다 같은 모양으로 출력

 

  • escaoe string(이스케이프 문자)

    • 문자열 내의 일부 문자의 의미를 달리하여 ‘특정한 효과’를 주는 것
    • \n : new line, \t : tab

  • indexing & slicing sting (문자열 인덱스 및 추출)

    • 문자열의 각 문자는 순서가 있음
    • 이때 각 문자열의 순서를 인덱스 라고 함
    • 첫번째 문자부터 마지막까지 차례대로의 순서를 가짐
    • 첫번째 시작문자의 순서는 0으로 시작 (1이 아님!)
a = ‘hello world’ # 길이 : 11
print(len(a)) 
>> 11
print(a[10])
>> d

 

  • -1 인덱스
    • 다른 언어와는 달리, python의경우 음수 인덱스를 지원
    • -1이 가장 마지막 인덱스를, -2가 마지막에서 두번재 인덱스를 의미
a = ‘hello world’
print(a[0]) # h
print(a[10]) # d

print(a[-1]) # d
print(a[-11]) # h

 

  • 인덱스의 범위

    • 인덱스는 [0, 문자열의 길이) 의 범위만 유효
    • 음수 인덱스를 사용할 경우, [-문자열의 길이, -1]
    • 범위를 넘어갈 경우 에러 발생

  • 문자열 slicing

    • 인덱스가 하나의 문자만을 추출한다면,
    • slicing은 부분 문자열을 추출한다고 볼 수 있음
    • [시작:끝]와 같이 명시하여 [시작:끝) 에 해당하는 부분 문자열을 추출
    • 시작, 끝 인덱스가 생략이 되어 있다면 0부터 혹은 끝까지로 간주
a = ‘hello world’
a[0:4] # 마지막 인덱스는 가져오지 않음
>>‘hell’
a[:5] # 앞뒤생략 가능, 생략하면 처음부터라고 생각하면 됨!
>>’hell’

 

  • 문자열 함수
    • 문자열은 여러가지 기능 제공을 위한 함수를 내장
a = ‘hello world’
a.upper # 대문자로 전환
>> ‘HELLO WORLD’
a.replace(‘h’, ‘j’) # 문자열 내의 특정 문자를 치환
>>’jello world’

# format : 문자열 내의 특정한 값을 변수로부터 초기화하여 동적으로 문자를 생성
temperature = 25.5
prob = 80
a = ‘오늘 기온은 {}도이고, 비올 확률은 {}% 입니다’.format(temperature, prob)
print(a)
>> ‘오늘 기온은 25.5도이고, 비올 확률은 80% 입니다’

a = ‘hello world what a nice weather’
a.split() # 특정 문자열을 기준으로 문자열을 쪼개는 함수 (defalt : ‘ ‘) 
>> [‘hello’, ‘world’, ‘what’, ’a’, ‘nice’, ‘weather’]

데이터 타입과 컬렉션 - 컬렉션 타입의 이해

리스트 & 튜플

  • 복수개의 값을 담을 수 있는 데이터 구조
  • 실생활에서 사용하는 리스트(학생 리스트, 성적 리스트 등) 과 동일한 의미로 이해
  • list - mutable(생성된 후에 변경 가능)
  • tuple - immutable(생성된 후에 변경 불가능)

리스트 초기화

  • [] 안에 값을 담아서 생성
  • list() 함수로 생성
  • str.split()함수로 생성
a = [1,2,3] # []안에 값을 담아서 생성
a = [‘korea’ , 1 , [23, 34]] # 리스트 안에 어떤 형태든 괜찮음

a = ‘hello world’
b = list(a) # list()로 리스트 생성
print(b)
>> [‘h’,’e’,’l’,’l’,’o’,‘ ‘,’w’,’o’,’r’,’l’,’d’]

a = ‘hello world’
b = a.split() # str.split()로 리스트 생성
print(b)
>> [‘hello’ , ‘world’]

 

  • 리스트 indexing
    • 문자열의 인덱싱과 동일하게 동작
    • []연산자를 이용하여 항목 얻어오기
    • [i] - i번째 원소를 반환
    • i가 음수인 경우도 가능하며 마지막 원소가 -1로하여 앞으로 갈때마다 1씩 감소함
a = [1,2,3,4,5,6]
print(a[1])
>> 2

 

  • 리스트 개별 아이템에 접근

    • 인덱스에 접근하여 값을 업데이트 가능
    • [중요] str은 불변 객체이기 때문에 item assignment가 되지 않는다!
    • list는불변 객체가 아니기 때문에 값에 대한 변경이 가능하다!

  • 리스트 slicing

    • 문자열 슬라이싱과 동일하게 동작
    • 슬라이싱의 결과 역시 list!!

  • list 멤버 함수

    • 생성된 리스트 객체에 동작하는 함수

  • append()
    • 리스트의 끝에 항목을 추가함
a = [1,2,3,4,5]
a.append(10) # list의 끝에 항목 추가
print(a)
>> [1,2,3,4,5,10]

 

  • extend()
    • 리스트를 연장
    • +=로도가능함
a = [1,2,3,4,5]
b = [6,7,8,9,10]

a.append(b)
>> [1,2,3,4,5,[6,7,8,9,10]]
a.extend(b)
>> [1,2,3,4,5,6,7,8,9,10]

 

  • insert()로 항목 추가
    • 리스트의 원하는 위치에 추가 가능
    • 앞에 인덱스를, 뒤에 아이템을 명시
a = [1,2,3,4,5]
a.insert(1, 40) # 첫번째 자리에 40이라는 요소를 추가(2는사라짐)

print(a)
>> [1, 40, 3, 4, 5] 

 

  • remove()
    • 값으로 항목 삭제
a = [1,2,3,4,5]
a.remove(2)
>> [1,3,4,5]

a = [1,2,3,3,4,5]
a.remove(3) # 가장 앞의 것만 없어짐
>> [1,2,3,4,5]

 

  • pop()
    • 지우고자 하는 아이템을 반환하고 삭제
a = [1,2,3,4,5]
a.pop(2) # 값 반환
>> 2
print(a) # 반환 후 값 삭제
>> [1,3,4,5]

 

  • index()
    • 찾고자 하는 값의 인덱스를 반환
a = [1,2,3,4,5]
a.index(3) 
>> 2    

 

  • in 키워드
    • 리스트 내에 해당하는 값이 존재하는지 확인
    • value in [list]
    • True, False 중 한가지로 반환
a = [1,2,3,4,5]
3 in a
>> True
10 in a
>> False

 

  • list 정렬
    • sort() -> 리스트 자체를 내부적으로 정렬
    • sorted() -> 리스트의 정렬된 복사본을 반환
a = [9, 10, 7, 19, 1, 2, 20, 21, 7, 8]
a.sort() # 오름차순으로 정렬
print(a)
>> [1, 2, 7, 7, 8, 9, 10, 19, 20, 21]
a.sort(reverse = True) # 내림차순으로 정렬
print(a)
>> [21, 20, 19, 10, 9, 8, 7, 7, 2, 1]

tuple

  • 리스트와 같이 복수개의 값을 갖는 컬렉션 타입
  • 생성된 후 변경이 불가능
a = (1, 2, 3) # ()를사용해서 튜플 생성
print(a)
>> <class ‘tuple’>

 

  • 튜플은 언제 사용하는가?

    • 문법적으로 편의성을 주기 위해서!
    • 괄호를 생략해도 튜플로 나옴

  • tuple unpacking

    • 튜플의 값을 차례대로 변수에 대입
    • 변수를 여러개 생성할 때 사용
a, b, c, d = 100, 200, 300, 400

print(a)
>> 100
print(b)
>> 200

# tuple unpacking을 이용해서 값을 서로 바꿀수도 있음
a, b = b, a

dictionary

* 키와 값을 갖는 데이터 구조
* 키는 내부적으로 hash값으로 저장 -> 키를 알면 그걸 불러오는 시간이 걸리지 않는다는 장점!
* 순서를 따지지 않음. 즉, 인덱스가 없음
a = {‘korea’ : ‘seoul’, 
        ‘canada’ : ‘Ottawa’,
        ‘usa’ : ‘washington D.C’}
b = {}

type(a)
>> dict
type(b)
>> dict

print(a[‘korea’]) # ‘korea’에 해당하는 값을 가져오기
>> seoul 

 

  • 항목 추가 및 변경
    • 기존에 키가 존재하면, 새로운 값으로 업데이트
    • 존재하지 않으면, 새로운 키, 값 생성
a = {‘korea’ : ‘seoul’, 
        ‘canada’ : ‘Ottawa’,
        ‘usa’ : ‘washington D.C’}

a[‘japan’] = ‘tokyo’ # key, value 값 추가

print(a)
>> {‘korea’ : ‘seoul’, ‘canada’ : ‘Ottawa’, ‘usa’ : ‘washington D.C’, ‘japan’ : ‘tokyo’}

[중요] : dict는 키와 값이 있기 때문에 키의 중복이 되지 않는다. 같은 키를 두번 대입하면 업데이트 될 뿐이다.

  • set
    • dictionary에서 key만활용하는 데이터 구조로 이해
    • 수학에서의 집합과 동일한 개념
    • 중복되이 되지 않음
    • 인덱싱이 없음
a = {1,2,3,4,5,5,5}
print(a)
>> {1,2,3,4,5}

# set()으로 집합으로 변환
a = [1,2,3,4,5,5,5] # list
ptint(set(a))
>> {1,2,3,4,5}

a = {1, 2, 3}
b = {2, 3, 4}

# union으로 두개의 set 합집합으로 만들기
print(a.union(b))
>> {1, 2, 3, 4}

# intersection으로 교집합 만들기
print(a.intersection(b))
>> {2, 3}

# difference로 차집합 만들기
print(a.difference(b))
>> {1}

# issubset으로 부분집합인지 확인하기
print(a.issubset(b)) # a가 b의부분집합인가?
>> False
반응형

'AI Study > ML_Basic' 카테고리의 다른 글

머신러닝과 데이터 분석 A-Z 올인원 패키지 - 데이터 수집을 위한 Python(1)  (0) 2020.09.10
[수강 후기]머신러닝과 데이터분석 A-Z 올인원 패키지 - python programming 기초  (0) 2020.09.08
머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(4)  (0) 2020.09.03
머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(3)  (0) 2020.09.03
머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(2)  (0) 2020.09.03
'AI Study/ML_Basic' 카테고리의 다른 글
  • [수강 후기]머신러닝과 데이터분석 A-Z 올인원 패키지 - python programming 기초
  • 머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(4)
  • 머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(3)
  • 머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(2)
자동화먹
자동화먹
많은 사람들에게 도움이 되는 생산적인 기록하기
    반응형
  • 자동화먹
    자동화먹의 생산적인 기록
    자동화먹
  • 전체
    오늘
    어제
    • 분류 전체보기 (144)
      • 생산성 & 자동화 툴 (30)
        • Notion (24)
        • Obsidian (0)
        • Make.com (1)
        • tips (5)
      • Programming (37)
        • Python (18)
        • Oracle (6)
        • Git (13)
      • AI Study (65)
        • DL_Basic (14)
        • ML_Basic (14)
        • NLP (21)
        • Marketing&Recommend (4)
        • chatGPT (0)
        • etc (12)
      • 주인장의 생각서랍 (10)
        • 생각정리 (4)
        • 독서기록 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    gcp
    GPT
    기초
    데이터분석
    파이토치로 시작하는 딥러닝 기초
    노션첫걸음
    빅데이터
    dl
    nlp
    Transformer
    딥러닝
    notion
    Jupyter notebook
    git commit
    자연어처리
    머신러닝
    cnn
    LSTM
    Github
    노션
    ML
    파이토치
    python기초
    git
    seq2seq
    데이터베이스
    Python
    빅데이터분석
    Google Cloud Platform
    pytorch
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
자동화먹
머신러닝과 데이터분석 A-Z 올인원 패키지 - Python Programming 기초(1)
상단으로

티스토리툴바