[데이터분석] 데이터 분석 기초2

유가연·2022년 2월 2일
0

TIL

목록 보기
9/32

데이터 형식 : 딕셔너리(dictionary)

딕셔너리의 기본 구조

{ key : value }

key : 값을 찾기 위해 넣어 주는 데이터. 변할 수 없는 값만 사용.
value : 찾고자 하는 데이터

딕셔너리 만들기

dic = {'name':'가연', '나이':25}

# 딕셔너리 쌍 추가하기

dic['직업'] = '학생'

딕셔너리 수정하기

리스트에서 값을 얻기 위해 리스트[인덱스] = 값 인덱싱을 사용한 것 처럼 딕셔너리['key'] = value 로 사용할 수 있음.

딕셔너리의 장점은 원하는 값을 빠르게 찾아냄. 값을 찾을 때 리스트에서 사용한다면 for문을 사용해서 모든 데이터를 순회 후 찾아낼 수 있기 때문에 많은 성능 차이가 발생할 수 있음.

✔️ key와 value들로 이루어진 리스트를 반환하고 싶다면?

list(딕셔너리.keys())
list(딕셔너리.values()) 
list(딕셔너리.items())

# 혹은 약간의 변형을 주기 위해 for문을 사용하여
accounts = {'7ryean' : '유가연' }

for id, username in accounts.items() :
  print(id + '-' + username)

# 만약 리스트로 묶어주지 않는다면?
# dict_keys(['a', 'b', 'c']) 와 같이 반환됨

✔️ 딕셔너리 내 key값의 존재 유무를 확인하고 싶다면?

'7ryean' in accounts
> True

'jacob' in accounts
> False

데이터 구조 : 집합(set)

집합은 여러가지 원소가 모여 있지만 중복이 없고 순서가 없음. 따라서 집합의 값을 인덱싱으로 접근하려면 리스트나 튜플로 변환 해야함.

집합의 기본구조

num_set = {1, 3, 5, 7}
s1 = set([1, 2, 3, 4]}

# 비어있는 집합 자료는 
s = set()

딕셔너리와 달리 : 가 없음.

값 1개 추가하기 : add()

num_set.add(9)

값 여러개 추가하기 : update()

num_set.update([3, 5, 14])

특정 값 제거하기 : remove(), discard()

num_set.remove(7)
num_set.discard(17)

remove와 discard의 차이점은?
remove는 무조건 집합 내에 삭제하려는 값이 존재해야 하고 존재하지 않을 경우 에러 발생. discard는 있으면 삭제하고 없어도 아무런 문제가 없음.

✔️ 집합 내 값의 존재 유무와 크기를 확인하고 싶다면?

3 in num_set
> True

len(num_set)
> 5

집합의 연산

서로 다른 여러개의 집합 사이에서 집합 간의 관계를 나타내는, 또 새로운 집합을 만들어내기도 하는 연산.

s1 = {1, 3, 5, 7}
s2 = {1, 3, 9, 27}

교집합

집합 A와 B가 존재할 때 A, B에 모두 속하는 집합.

intersection = s1 & s2

합집합

집합 A 혹은 B에 속하는 집합.

union = s1 | s2

차집합

집합 A에 속하지만 B에는 속하지 않는 집합.

diff = s1 - s2

XOR

집합 A에 속하고 B에도 속하지만 A, B 모두에 속하지는 않는 집합.

xor = s1 ^ s2

JSON

.txt .doc와 같은 파일 형식으로 내부는 딕셔너리와 매우 유사하게 구성되어 있음. 웹 환경에서 데이터를 주고 받는 가장 표준적인 방식으로 장점또한 딕셔너리와 비슷함. 키를 이용하여 원하는 데이터만 빠르게 추출하고 데이터가 쉽게 오염되지 않지만 용량이 조금 크다는 단점이 있음.

json을 딕셔너리로 변환할 때는 loads(), 딕셔너리를 json으로 변환할 때는 dumps()

CSV

JSON과 같은 파일 형식. Comma Separated Value, 콤마로 구분되어져 있는 값. 각 열이 특정한 의미를 가짐. 모든 데이터가 key와 value가 있던 json과는 다름. key가 없기 때문에 각 열이 어떤 값을 나타내는지 알 수 없으면 해석할 수 없음. 콤마(,) 말고 (|) 로 구분되어 있기도 함. 표로 시각화 하기 쉽고 value들만 저장하기 때문에 용량이 작음. 만약 값에 콤마(,)가 들어있다면 구분하는 콤마(,)와 헷갈릴 수 있기 때문에 값에 ""를 사용함. 이래서 데이터 오염에 취약하기도함.

import csv
with open('파일이름.csv') as file :
  reader = csv.reader(file, delimiter = '구분자(,)')
  for 데이터 in reader :
    print(데이터)
profile
유가연

0개의 댓글