본문 바로가기
  • ㄹㅇ
패스트캠퍼스

[패스트캠퍼스] 데이터 분석 부트캠프 13기 3주차

by 한강석 2024. 3. 8.
이번주 강의는 파이썬에 대한 기초 교육으로 이루어졌다. 
파이썬을 한번 배워본 적이 있었던만큼 강의 내용을 통해 가볍게 복습하는 느낌으로 들었다. 

 

파이썬 요약

변수

변수란?

데이터를 저장하고 추후에 사용할 수 있게 해주는 저장 공간

이름과 값으로 구성.

이름은 변수를 참조할 때 사용되고 값은 실제 데이터를 의미

변수이름 = 저장할 값

변수 이름 규칙

  1. 영문자 + 숫자(혹은 언더바_)의 형식
  2. 숫자가 맨 앞에 오면 안된다.
  3. 언더바 외 특수문자는 안된다.
  4. 공백이 들어가면 안된다.
  5. 소문자와 대문자는 구분되어 사용됨.

변수의 종류(자료형)

  1. 숫자형 a =1
  2. 문자형 b = “hello”
  3. 리스트 c = [1,2,3]
  4. 튜플 d = (1,2,3,4)
  5. 딕셔너리 e = {’a’: 1, ‘b’ : 2}
  6. 집합 f = {1,2,3,3}

자료형_숫자

숫자형은 크게 정수형(int) 와 실수형 (float)으로 이루어져 있다.

숫자형끼리는 사칙연산이 가능하다. ( + , - , * , / )

또한 제곱(**), 나눗셈 후 나머지(%), 나눗셈 후 몫 (//) 의 연산도 가능하다.

a= a + 1 ( a += 1) 로도 표현

자료형 문자

문자 형태로 이루어진 자료형

큰 따옴표 혹은 작은 따옴표로 감싸주면 문자열이 된다.

\” 로 표시하면 따옴표를 출력가능

a = ‘’’여러줄을

한번에

변수에 넣고 싶을 때’’’

문자열은 ‘+’ 연산을 하면 공백 없이 이어진다.

a = 'Hello, World'
b = 'Hello, Python'
c = a + b
print(c)

a = 'Python'
print(a * 2)

인덱싱

인덱스는 []를 통해 지정할 수 있으며 [0] 이 첫번째 이후로 1씩 증가하는 형태

  • : 를 통해 슬라이싱하여 원하는 부분만 꺼낼 수 있다.
  • [start : stop : step] range랑 비슷

길이 구하기

len(a) 로 공백이나 특수문자까지 포함된 문자열의 길이를 알 수 있다.

문자열이랑 숫자를 더하면 에러가 난다. 형식을 맞춰줘야함.

int(), float(), str() 로 자료형을 서로 바꿀 수 있음. 만약 int(’abc’) 와 같이 변환할 수 없으면 에러

문자열 포맷팅

num1 = 14
num2 = 17
a = f'My favorite numbers are {num1} and {num2}'
print(a)

ㅁ문자열 함수 ( a.upper())

  • upper: 대문자로 변환한 값을 출력
  • lower: 소문자로 변환한 값을 출력
  • lstrip, rstrip, strip: 공백 제거한 값을 출력 a.strip() 공백 제거
  • count: 문자열 안의 특정 문자열 개수 세기 a= ‘hobby’ a.count(’b’)
  • find: 문자열 안의 특정 문자열이 처음 나온 위치 반환 (문자열이 없으면 -1을 반환)
  • index: find와 같으나 문자열이 없으면 오류 발생
  • join: 특정 문자열을 각각의 문자 사이에 삽입하여 출력 “넣을 문자열”.join(’text’)
  • split: 특정 문자열을 기준으로 문자열을 나눈 값을 출력 .split(”기준”)
  • replace: 특정 문자열을 특정 문자열로 반환 .replace(’바꿀 문자열’ , “새로 넣을 문자열”)
  • startswith, endswith: 특정 문자열로 시작하는지/끝나는지 확인 a.startswith(’특정 문자열’)

input()

변수 = input() 형식으로 입력값을 받아 문자열로 변수에 저장한다.

리스트

  • 요소들의 모음을 나타내는 자료형
  • 요소들을 대괄호([])로 감싸주어 만들 수 있습니다.
  • 모든 자료형을 리스트의 요소로 담을 수 있습니다.

리스트끼리 연산

  • 더하기와 곱하기를 할 수 있습니다.
  • +: 리스트와 리스트를 순서대로 연결하여 하나의 리스트를 만듭니다.
  • ``: 리스트와 숫자형을 곱하여 리스트 안의 요소를 숫자만큼 반복한 하나의 리스트를 만듭니다.

리스트 값 치환

  • 리스트는 인덱싱을 통해 값을 수정할 수 있습니다.

리스트 함수

  • len 함수: 리스트의 길이를 구합니다. len(a)
  • sum, min, max 함수: 리스트 요소들의 합, 최솟값, 최댓값을 구합니다. (평균: sum(a)/len(a))
  • in: 특정 요소가 리스트 안에 있는지 확인합니다. ‘a’ in list
  • append, extend: append는 리스트의 맨 마지막에 요소를 추가, extend는 리스트의 맨 마지막에 다른 리스트를 추가합니다. a.append(4) , a.extend(list)
  • insert: 리스트의 특정 위치에 특정 요소를 삽입합니다. a.insert(인덱스, 넣을 값)
  • remove, pop: 리스트의 요소를 삭제합니다.
    remove: 특정 요소를 제거, pop : 특정 요소를 제거하고 반환.
  • count: 리스트의 특정 요소의 개수를 반환합니다. a.count(1)
  • index: 리스트에 요소가 있는 경우 인덱스 값을 반환합니다. a.index(3) 3번 인덱스 반환
  • sort, sorted: 리스트를 정렬합니다. a.sort() , sorted(a, reverse=True)
  • join: 리스트의 요소들을 하나의 문자열로 합칩니다. ‘문자열’.join(list) 문자열로 리스트를 이어줌
  • split: 문자열을 리스트의 요소들로 쪼갭니다. a.split(’기준’)

range 함수

  • range(시작, 끝, 간격)
  • 간격은 입력 안하면 디폴트가 1
  • list(range())
  • list로 변환하고 싶을 때는 list()함수를 씌워주면 됩니다.

튜플

  • 리스트와 비슷하게 여러 요소들을 묶을 수 있습니다.
  • 다만 튜플의 요소는 수정이나 삭제가 불가능합니다.
  • 프로그램 실행 중 절대 변하지 않거나 변해서는 안되는 값들이 있다면 튜플로 저장하는 것이 좋습니다.
  • 요소들을 괄호(())로 감싸주면 튜플이 됩니다.
  • 튜플의 요소는 수정하거나 삭제할 수 없으므로 값의 치환이 불가능합니다.

튜플 함수 심화

  • max(튜플, key = lambda x:x[인덱스]) : 다중 튜플의 경우 정렬 기준을 정의하여 튜플 내 최댓값을 탐색함
  • min(튜플, key = lambda x:x[인덱스]) : 다중 튜플의 경우 정렬 기준을 정의하여 튜플 내 최솟값을 탐색함
a = (('a', 1), ('b',7), ('c', 3), ('d', -5), ('e', -9))
print(max(a, key = lambda x:x[0]))
print(max(a, key = lambda x:x[1]))

print(min(a, key = lambda x:x[0]))
print(min(a, key = lambda x:x[1]))

딕셔너리

  • 키(Key): 값(Value)의 쌍이 모여있는 사전 형태의 자료형입니다.
  • 키: 값의 쌍을 중괄호({})로 감싸줍니다.
  • 변수명 = {'키1':값, '키2':값, ...}
  • 키는 중복될 수 없고, 리스트는 키가 될 수 없습니다.
  • 위치로 인덱싱이 되지 않습니다.
  • 추가: 딕셔너리변수명[추가할키]=추가할값
  • 삭제: del 딕셔너리변수명[삭제할키]
  • 값 찾기 딕셔너리변수명[찾을키]

딕셔너리 함수

  • keys(): 키들을 반환합니다.
  • values(): 값들을 반환합니다.
  • items(): 키와 값의 튜플 쌍들을 반환합니다.
  • get(원하는키값): 원하는 키 값에 대응되는 값을 반환합니다.
  • 딕셔너리변수명[원하는키값]과 똑같은 값을 반환합니다.
  • update: 딕셔너리에 새로운 딕셔너리를 추가합니다.
  • zip: 튜플/리스트 두 개를 하나의 딕셔너리로 변환합니다.

딕셔너리 함수들은 반복문과 함께 자주 쓰인다.

for k, v in dic.items():
    print('키: ', k)
    print('값: ', v)

자료형 집합, 불리언

  • 순서가 없고 중복이 없는 자료형입니다.
  • 요소들을 중괄호({})로 감싸면 됩니다.
  • 순서가 없기 때문에 인덱싱이 되지 않습니다.
  • 인덱싱을 하고 싶으면 리스트나 튜플로 변환 후 인덱싱을 합니다

집합 함수

  • intersection or &: 교집합
  • difference or - ``: 차집합
  • union or | : 합집합
  • add: 요소를 추가
  • remove: 요소를 제거
s1 = set([1,2,3,4,5,6,7,8,9,10])
s2 = set([5,6,7,8,9,10,11,12])
print(s1&s2)
print(s1.intersection(s2))

print(s1-s2)
print(s1.difference(s2))

print(s1|s2)
print(s1.union(s2))

불리언

  • 참 또는 거짓을 나타내는 자료형
  • True, False로 나타내야 한다. (첫 문자가 항상 대문자)

변수 심화 - copy()

a = [1,2,3]
b = a
print(a)
print(b)
print(a==b)
print(b is a) 

#a의 특정 인덱스 값을 바꾸면 b도 같이 바뀜
# id(a) == id(b) 이기 때문이다.

#b에 a의 값을 가져오면서 다른 주소를 가르키도록 하려면 copy()함수를 이용

a = [1,2,3]
b = a.copy()
print(id(a))   
print(id(b))     # a,b id값이 다름
print(a)
print(b)
print(a == b)

a[2]=4
print(a)
print(b)
print(a==b) #False가 나온다.

if

if 문의 기본 구조는

if 조건문:
    수행문1
    수행문2
    ...

이고, 조건이 여러개라면 elif와 else를 사용합니다.

if 조건문1:
    수행문1
    수행문2
    ...
elif 조건문2:
    수행문1
    수행문2
    ...
...
else:
    수행문1
    수행문2
    ...

들여쓰기에 민감하니 주의해야 함.

while

  • 특정 조건이 지속될 때까지 반복하여 수행합니다.
     수행문1 수행문2 ...
    
    while문은 조건이 거짓이 되면 끝나게 되는데, 중간에 특정 조건에 다다르면 빠져나가고 싶을 때는 break를 쓰면 됩니다.
  • continue는 해당 조건에서 그 루프가 끝나고 다음 루프로 넘어가도록 합니다.
  • while 조건문:

for

  • 가장 많이 쓰이는 반복문
  • 리스트/튜플/문자열의 첫 번째 요소부터 마지막 요소까지 차례로 변수를 받아 반복적으로 수행문을 실행합니다. if 와 함께 조건 반복문
    • continue는 해당 조건에서 그 루프가 끝나고 다음 루프로 넘어가도록 합니다.
    • pass는 실행할 코드가 없는 것과 마찬가지로 해당 루프는 모두 실행하고 다음 루프로 넘어갑니다.
    • break는 조건문 자체를 중단시킵니다.
  • ls = [1,2,3,4,5] for i in ls: print(i) #range와 연계해서 자주 쓰임 for i in range(1,6): print(i)
  • for 변수 in 리스트/튜플/문자열: 수행문1 수행문2 ...

리스트에 for 문 쓰기

ls = []
for i in range(1, 51):
    if i % 5 == 0:
        ls.append(i)   #append를 써서 값을 넣어준다.

print(ls)

딕셔너리에 for 문 쓰기

dic = {'name':'Merry',\\
      'num':1,\\
      'birth':'jan'}
dic.items()                   #items로 딕셔너리에서 키, value를 가져옴
for k, v in dic.items():
    print(k, ':', v)

name : Merry
num : 1
birth : jan

튜플에서 for 문 쓰기

a = [(1,2), (3,4), (5,6)]
for i, j in a:
    print(i + j)

3
7
11

list, dict, comprehension

List Comprehenshion

  • 리스트 안에 for문을 포함하여 한 줄로 편하게 코드를 작성할 수 있게 하는 문법입니다.
  • [표현식 for 항목 in 반복가능객체 if 조건문]
ls = [i for i in range(1,5) if i % 2 == 0]
print(ls)

[2,4]

gugudan = [i*j for i in range(2,10) for j in range(1,10)]
print(gugudan)

Dict comprehension

  • list comprehension과 마찬가지로 딕셔너리도 for문을 간편하게 이용할 수 있다.
names = ['Merry','John','Chris']
num = [1,2,3]

dic = {k:v for k, v in zip(names, num)}
print(dic)

함수

  • 입력값을 받아서 명령을 수행하고 결괏값을 반환하는 것입니다.
  • 코드의 반복을 줄이기 때문에 매우 유용합니다.
def twice(x):
    return x*2
  • 함수 안에서의 변수는 그 함수 안에서만 작동합니다. 함수 밖의 변수 이름과는 전혀 상관이 없습니다.

lambda로 간결하게 함수 만들기

x = 1
twice = lambda x: x*2
print(twice)

예외처리

  • 오류를 처리하는 방법입니다.
    try:
        a = 10 / 0
    except ZeroDivisionError:
        a = 0
    
  • try: #try문을 실행하고 ... except 발생오류 as 오류변수: #만약 에러가 나면 수행문을 실행하라. ...

• 발생오류를 명시하지 않으면, 모든 오류에 대해 except문을 처리합니다.

• 오류명을 모를 때 Exception으로 오류명을 출력할 수 있습니다.

try:
    print(a.index(b))
except Exception as e:
    print(e)

name 'a' is not defined

else와 finally

else : 오류가 없을 때만 수행

finally : 오류가 나더라도 수행

try:
    a = int(input('정수를 입력해주세요. '))
except Exception as e:
    print(e)
else:
    print(a + 1)
finally:
    print('종료')