(2/2)Understanding Data Types in Python

1️⃣ 튜플 자료형 (Tuple data type)
2️⃣ 딕셔너리 자료형 (Dictionary data type)
3️⃣ 집합 자료형 (Set data type)
4️⃣ 불 자료형 (Boolean data type)
5️⃣ 자료형 실습 (Data type)
1️⃣ 튜플 자료형 (Tuple data type)
**튜플 자료형이란? (What is Tuple data type)
튜플은 ()를 사용하여 데이터를 정의할 수 있다.
튜플은 값의 변경을 허용하지 않는다.
튜플의 인덱싱 값을 이용하여 데이터에 접근할 수 있다.
튜플의 슬라이싱을 이용해 데이터의 일부분을 추출할 수 있다.
튜플에서도 +, * 연산자를 사용할 수 있다.
**리스트와 유사한 자료형이다. 리스트는 생성, 삭제, 수정이 가능하고 [대괄호]로 둘러싸여 있는 반면, 튜플은 값 변경이 불가능하다. (소괄호)로 둘러싸여 있다.

튜플이 1개의 요소만을 가질 때는 요소 뒤에 콤마(,)를 반드시 붙이고 괄호를 닫아야 한다. 콤마가 없다면 수학적인 소괄호로 인식하게 되기 때문이다. 예) t2 = (1,)
튜플은 괄호를 생략하고 컴마(,)를 사용해도 무방하다.
언제 튜플을 사용해야 할까? 프로그램이 실행되는 동안 값을 유지해야 한다면 튜플을, 수시로 값을 변경해야 한다면 리스트를 사용한다.
값 변경의 여지가 남아서 무엇으로 설정해야 할지 모르겠다면 리스트로 선택해야 한다.
튜플 자료형 사용시 주의점(What to watch when using tuple)
튜플의 요솟값은 한번 정하면 지우거나 변경할 수 없다.

위의 예제를 보듯이 del t1[0] 처럼 지우려고 시도한다면 아래와 같은 TypeError 오류가 발생한다.

위의 예제를 보듯이 t1[0] = 'c' 변경하려고 하면 같은 오류가 난다.

- t2 = (1) 에서 콤마(,)를 생략하고 프린트하면 1로 출력되지만 타입은 int로 뜬다. (원래 튜플로 떠야 정상이다)
튜플 자료형 다루는 방법 (How to handle Tuple data type)
인덱싱(Indexing)
슬라이싱(Slicing)
더하기와 곱하기(Plus and multiply)
len()함수(len funciton)
✅ 인덱싱 (Indexing)

데이터의 순서인 0번째를 기반으로 접근한다. 0번째는 1, 3번째는 b이다.
✅ 슬라이싱(Slicing)

[1:]에서 :은 1부터 끝까지 슬라이싱 한다는 뜻이다. 슬라이싱은 [대괄호]로 접근한다. t1의 데이터를 바뀌진 않고 유지가 된다. 다만 t2 = t1[1:] 이런식으로 또 다른 변수를 만든 뒤 변경은 가능하다.
✅ 더하기와 곱하기(Plus and multiply)

t1 = (1, 2, 'a', 'b', 3, 4) 이고 t2 = (3,4) 일때, t2 * 3 하면 6이 아니고 (3,4,3,4,3,4)로 3,4가 3번 반복된다.
더하기의 경우는 위를 참고
✅ len() 함수 (len function)

len은 length 의 줄임말이다. len(t1)은 t1에 데이터가 몇개 들어있는지 길이를 파악할 때 쓰인다.
✅ 튜플 적용하기 (Applying tuple)

- transaction1001과 1002는 바꿀 수 없는 튜플이다.

- 위의 transaction1001과 같은 방법으로 튜플이 적용되었다.
2️⃣ 딕셔너리 자료형
(Dictionary data type)
딕셔너리란? (What is Dictionary)
딕셔너리는 {key, value}로 이루어진 데이터를 다룰 때 유용하다
Key 값을 이용해 value를 찾아낸다.
딕셔너리는 대응 관계를 나타내는 데이터 타입인데 대응 관계란 Key와 Value를 한쌍으로 갖는 데이터 타입을 뜻한다. 순차적으로 해당 요솟값을 구하지 않고, Key를 통해 Value를 구한다.
이름: 수진
나이: 30
주소: 서울이름, 나이, 주소는 Key 이고 수진, 30, 서울은 Value이다.

딕셔너리를 사용하는 방법 (How to use Dictionary data type)
✅ 딕셔너리 선언 (declare dictionary)


위의 예제처럼 Key와 Value의 쌍 여러개로 이루어져 있다. {Key : Value}
보이듯이 {중괄호}로 둘러싸여 있고 각 요소는 쉼표(,)로 구분된다.

- a처럼 키는 숫자가 와도 되고 b처 문자열이 와도 된다.
딕셔너리 다루기 (How to manipulate dictionary)
✅ 딕셔너리 쌍 추가하기 (add dictionary)

- 키를 대괄호(bracket)로 감싸고 밸류는 작은따옴표(Single quotation mark)로 감싼다.
✅딕셔너리 쌍 제거하기 (delete dictionary)

- del a[1]로 키와 밸류 삭제할 수 있다. '키의 값'을 기준으로 삭제된다. (순서 아님)
✅ 딕셔너리에서 key 를 사용해 value 얻기 (Get a value from a dictionary using a key)

- 리스트나 튜플, 문자열은 요솟값 접근 시 인덱싱이나 슬라이싱 기법을 적용하지만 딕셔너리는 key 를 사용해서 value를 얻는 것이 기본적인 방법이다.
딕셔너리 관련 함수 (Function related to dictionary)
keys()values()Items()clear()inget()
keys() : key만을 모아서 dict_keys 의 객체로 반환할 수 있다.
첫번째 줄을 통해 딕셔너리를 선언하였다. 그 뒤에 둘째줄처럼 (.)을 찍으면 파이썬은 a가 딕셔너리 내장함수를 사용한다고 인식하게 된다. 마지막 줄처럼 key만 모은 결과인 dict_keys가 나타난다.

그리고 dick_keys 객체를 리스트(함수)로 변환하는 방법은 아래와 같다. 즉 키만을 모아서 리스트로 만들 수 있다는 뜻이다.


values() : 위의 keys()가 키만을 모으는 거였다면 values()는 value만을 모아서 dict_values 객체 반환하는 것이다. 추가로 밸류만을 모아서 리스트로 만들고 싶다면 위와 같이 list(a.values())로 가능하다.


Items() : Key와 value와 쌍을 튜플로 묶은 값을 모아서 dic_items 객체 반환한다. 즉 items()를 통해 리스트[]안에 요소값으로 튜플()이 있게 출력이 가능하다. 이것들을 리스트로 만들고싶다면 list(a.items())로 가능하다.

clear() : 딕셔너리 내의 모든 요소를 삭제한다. 빈 딕셔너리는 {}로 표현한다.

in :Key가 딕셔너리 안에 있는지 조사할 수 있는 함수이다. Key 딕셔너리 안에 존재하면 True, 존재하지 않으면 False를 반환한다. not in은 논리 부정(negation)으로 email이 a에 없는가? 라는 뜻이다.


get() : Key에 대응되는 value를 반환한다. 존재하지 않는 키 사용 시 None을 반환한다. (마지막 예제처럼)

3️⃣ 집합 자료형 (Set data type)
집합 자료형은 set 키워드를 이용하여 정의한다.
데이터의 중복을 허용하지 않는다.
집합이란? (What is Set) 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형이다. 수학에서 나오는 집합과 같은 개념이다. 파이썬 2.3 버전부터 지원한다. Set 키워드를 사용하여 생성할 수 있다.

입력된 리스트들은 {curly braces}안에서 출력된다.
문자열을 입력하여 생성된 집합을 보면 l이 1개만 출력된 것을 볼 수 있다. 이는 수학의 집합 특징을 생각하면 쉽다. (중복 허용 X) 아래의 추가 설명 참조

집합의 특징(The characteristics of a set)
중복을 허용하지 않는다(Does not allow duplicate)
순서가 없다 (Unordered)
✅ 중복을 허용하지 않는다(Does not allow duplicate)

✅ 순서가 없다 (Unordered)
리스트나 튜플은 순서가 있기 때문에 인덱싱을 통해 자료형(data type)의 값을 얻지만 set 자료형은 순서가 없기 때문에 인덱싱이 사용 불가능하다. (딕셔너리도 마찬가지 이다.)만약 인덱싱 사용을 하고 싶을 때는 리스트[]나 튜플()로 변환하여 사용할 수 있다.

교집합(intersection), 합집합(union), 차집합(difference) 구하기
✅ Set 자료형 정의

✅교집합 (Intersection) : ‘&(ampersand)’ 기호나 intersection()함수를 사용한다.

& (ampersand) 를 이용해서 s1과 s2의 공통적인 값 {4, 5, 6}이 출력되었다.
.intersection()를 통해 같은 결과값을 도출하였다.
✅합집합(union) : ‘|(vertical bar)’ 기호나 union()함수를 사용한다.

- ‘|(vertical bar)’ 를 이용해서 합쳐진 값이 출력되고 아래도 마찬가지이다.
✅차집합(difference): ‘-(hyphens)’ 기호나 difference()함수를 사용한다.

집합 관련 함수 (Function related to Set)
add()remove()update()
add()이미 만들어진 set 자료형에 값을 추가한다. 4라는 요소값을 s1.add(4)를 통해 추가할 수 있다.


remove() 특정 값을 제거할 수 있다. 기존의 [1, 2, 3]에서 {1, 3}으로 변경되었다.

update()여러 개의 값을 한꺼번에 추가할 수 있다. add는 한 요소만 추가가 가능하다.

4️⃣ 불 자료형 (Boolean data type)
불 자료형은 참 또는 거짓을 표현하는 데이터를 저장한다.
True, False라는 키워드를 사용하여 참, 거짓 정보를 나타낸다.
불(Bool)이란? (What is Bool?) 참(True)과 거짓(False)만을 나타내는 자료형이다. 두번째 예제처럼 'bool' 이렇게 나온다. 1바이트가장 적은 메모리 공간을 확보한다. type() 함수를 사용하여 자료형을 확인할 수 있다.


불(Bool)은 조건문의 반환 값으로도 사용된다.


- 문자열이 있으면 True, 없으면 False
자료형에서 표현되는 참, 거짓 정보
(True and false information represented in data types)
각각에 자료형에서 데이터가 들어있다면 참, 없다면 거짓으로 표현한다는 뜻이다. 문자열은 ""을 사용하는데 빈 ""은 거짓으로 표현되었다. 실습시 if "python": 하면 true로 나올것이다. if ""는 false로 나온다.

텍스트 데이터 전처리 : 다양한 데이터 소스로부터 주소를 받아 표현할때 몇가지의 경우로 '피츠로이'를 표현하는지 알아보기

1) +를 이용해 모두 합쳐준다
2) .lower()를 이용해 소문자로 바꿔준다
3) list 와 split을 이용해 리스트로 변경한다
4) set(집합)을 이용해서 중복을 제거한다
5) len()함수로 몇개인지 센다.
Quiz






