비즈니스 분석가 양성과정

[7일차] BDA과정 - 파이썬

MJ.W 2021. 10. 27. 19:16

[KDT] 패스트캠퍼스 비즈니스 데이터 분석가 양성과정 7일 차

파이썬  프로그래밍


원하 ㅎㅎ 오늘은 BDA 과정 7일차가 진행되었던 날입니다. 어제에 이어 Python의 DataType들과 

if ,while,for문 , function 등 많은 양의 내용들을 배웠던 하루였던거 같습니다 휴 

코드까지 올리기에는 양이 너무 많을거 같아서 정의만 간단히 하고 코드 페이지는 따로 만들어서 올리겠습니다.

 

 

Python DataType

 

문자열(String)

  • 문자열 데이터란, 문자(character)의 나열을 의미한다. e.g. "Hello world"  (string ; Character Sequence)
  • 파이썬에 다룰 수 있는 문자열의 크기도 제한이 없다.
  • 파이썬에선 '와 " 두 가지의 기호를 통해 문자열을 나타낸다. 즉 ' 부터 ' 까지 또는 " 부터 " 까지 하나의 문자열이다. e.g. 'Hello', "World"
  • 컴퓨터는 문자(character)를 encoding하여 숫자로 표현한다. 알려진 예로 ASCII, 현재는 이거 사용 utf-8, cp949가 있다.
  •  컴퓨터는 문자를 숫자로 인식한다. e.g. ASCII 코드로 변환하면 A->65, a->97
  • 현재 전세계적으로 웹에서 사용되는 국제 표준은 UTF-8(Universal code character set Transformation Format - 8-bit)이다.

 UTF-8에선 a는 1바이트로, '가'는 3바이트로 인식한다. 이를 가변 인코딩 방식이라고 하며, 영어보다 한글이 더 많은 데이터를 필요로 한다.

 


연속형 데이터 (Sequential Data Types)

  • 연속형 데이터란, 하나의 변수가 하나의 데이터를 가지고 있던 숫자형 데이터와 달리, 여러개의 데이터를 하나의 변수에 가지고 있는 데이터 타입이다.
  • 연속형 데이터 타입에는 리스트(List), 튜플(Tuple), 문자열(String)이 있다. (문자열을 문자들의 나열로 인식하기 때문에, 연속형 데이터이다.)
  • 연속형 데이터의 크기 제한은 없다. 하지만, 사용하는 컴퓨터의 가용 메모리 용량을 인지하며 사용해야 한다.
  • 각 연속형 데이터 타입마다 특징이 다르다. 그 특징을 파악하여 용도에 맞는 데이터 타입을 사용하는 것이 중요하다
  • 사전(dictionary) 타입은 associative array라고 불리며, 흔히 알고있는 Hash table 구조이다.
  • Hash table은 dict(key : values) 처럼 키를 값에 매핑할 수 있는 구조인, 연관 배열 추가에 사용되는 자료 구조라고 생각하시면 됩니다.

리스트(List)

  • 가장 많이 사용되는 연속형 데이터 타입이자, 굉장히 유연한 구조를 가지고 있어 대부분의 데이터를 편하게 다룰 수 있다.
  • 파이썬에서 [  ]를 이용하여 표현한다. e.g. [1, 2, 3]
  • 리스트의 원소는 쉼표로 구분되며, 리스트의 원소는 아무 데이터 타입이나 가능하다. 리스트조차 가능하다.
  • 리스트를 이용하면 파이썬에서 다루는 대부분의 데이터는 아무 무리없이 다룰 수 있다. 하지만 수정이 자유롭기 때문에 수정을 하면 안되는 경우에는 사용하면 안된다.

튜플(Tuple)

  • tuple은 list과 거의 같다.
  • indexing, slicing 모두 동일하게 사용 가능하다. 원소들도 자유롭게 사용 가능하다.
  • 거의 같은데, 다른 점이 딱 2가지 있다.

1) 리스트는 []를 사용하고, 튜플은 ()을 사용한다.

2) 리스트는 생성 후에 변경이 가능하고(mutable) 튜플은 생성 후에 변경이 불가능하다.(immutable)

Mutable : 생성된 이후에 변경(assignment)이 자유롭게 가능한 data type. e.g. List, dict, set
immutable : 생성된 이후에 변경이 불가능한 data type e.g. int, float, string, tuple, frozenset
성능적인 이슈 -> 변경되지는 않는 그 자체로 장점이 생김.
프로그래밍적인 이슈 -> 데이터 수정 자체를 하지 않는 경우 실수를 방지할 수 있다.


집합(Set)

  • 집합 자료형은 정말 말그대로 수학에서 배우는 집합 그 자체이다. 포함관계만을 나타냄 , 데이터를 모아놓을때 유용
  • 수학에서는 집합을 {}로 표시했지만, 파이썬에서는 안타까운 이유로 {}를 사용하긴 하는데 그냥 사용할 수는 없다. 왜냐면 사전(Dictionary) 자료형도 {}를 사용하기 때문이다. 이에 대해서는 뒤에 자세히 배운다.
  • 공집합을 생성할 때는 반드시 set()으로 생성해야 한다. {}로 생성하면 빈 사전이 생성된다.

e.g. {1, 2, 3} : 집합, {'a':1, 'b':2} : 사전

  • 집합의 연산자인 교집합, 합집합, 차집합을 모두 지원한다.
  • 집합의 특징이 2가지 있는데, 이 특징이 리스트와의 차이점이라 사용한다. 첫번째 특징이 집합 자료형을 사용하는 주된 이유이다.

1) 집합은 원소의 중복을 허용하지 않는다. 즉, 원소의 종류를 나타내기 좋다.

2) 집합은 원소의 순서가 존재하지 않는다. 즉, 원소의 index가 없다.


사전(Dictionary)

파이썬에서 리스트와 함께 굉장히 많이 사용되는 구조. 특히 이번 교육과정 중에 많이 사용되니 꼭 마스터하는 것을 추천한다.

  • 파이썬에서 제공하는 사전 자료형은 key - value 방법을 통해 저장한다.

namecode

"John" 0011
"Maria" 1234
  • 이런 table concept을 의미하며, 정수 index가 아닌 key값을 통해서 value를 access한다.

key-value 방식으로 저장을 하는 것으로 얻는 이점은?
A.순서가 아닌 의미가 있는 값을 통해서 데이터 접근이 가능하다.

  • 같은 말로 Hash Table이라고 불리며 데이터 관리에서 굉장히 중요한 개념이다.
  • 파이썬에서 사전 자료형은 {}을 이용하여 표현하는데, 집합과의 차이점을 두기 위해 원소에 반드시 :가 들어가야 한다.
  • 사전을 표현할 때는 {key : value, key2 : value2, ... } 형태로 표현한다.

e.g. {'a' : 1', "b" : 3}

 


If statement (조건문)

  • 프로그램에서 가장 중요한 조건 판단이다.
  • 모든 프로그램은 조건을 판단하여 다음 진행 과정을 결정한다.
  • 파이썬은 if, elif, else 구문을 이용하여 조건을 사용할 수 있다.
money = 500
# 돈이 300원인데, 돈이 300원이랑 같으면 coffee를 준다.
if money == 300 :
    print("coffee")
elif money < 300 :
    print("%d 돌려줍니다." % (money))
else : # 나머지 
    print("coffee")
    print("%d 거스름돈" % (money - 300))

 

While statement

  • while문은 조건을 만족할 때 까지 반복한다.

while (조건):   

 <statement1> <statement2> <statement3>

조건이 만족하는 동안(while) statement1, 2, 3을 반복한다.

 

 

for statement

  • while문은 조건이 만족하는 동안 반복을 수행했지만, for문은 지정 횟수동안 반복을 수행한다.여기서 지정된 횟수라는 것은 반복 대상의 크기가 된다.
  • 보통 iteratable object(반복 가능한 객체)를 대상으로 수행되며, 연속형 데이터 타입 변수들이 여기에 해당된다.List, Tuple, string, ...

for 변수 in 리스트(튜플, 문자열, iterator):

<statement1> <statement2> <statement3>

 


Function이란?

수학적인 의미의 함수와 개념은 비슷하지만 역할이 다르다.

  • input이 들어와서 output이 정해진 규칙에 따라 나온다는 개념은 같지만, 프로그램에서의 하나의 함수는 하나의 기능을 나타낸다.
  • 정확하게 함수는 특정 기능을 구현한 코드 묶음이다.

def 함수이름(param1, param2, ... ):

      <statement1>

      <statement2>

      return

 

함수를 쓰는 이유는 재사용성 때문이다.

함수를 사용하는 가장 중요한 이유는 재사용성 때문이다. Reusability라고 하며, 똑같은 구조의 코드가 반복되는 것을 피하기 위해 사용된다. 똑같은 구조의 코드는 보통 한 가지의 기능 단위로 묶이게 되며, 이 기능 단위를 코드로 묶어서 함수로 만든다.

 

 

오늘 배운 내용들의 중요한 부분과 정의만 정리해봤습니다. 휘발성이 높은 내용들인거 같아서 얼른가서 복습을 해보겠습니다.  

 

그럼 인디오 사스 !!!