데이터분석

[데이터 분석] chapter2. 데이터 분석을 위한 파이썬기초

wse46 2024. 10. 6. 23:26

데이터 분석 프로그래밍 언어 : 파이썬, R

프로그래밍 환경 : 구글 Colab

 

 

Colab 단축키

 

Ctrl + Enter : 해당 셀 실행. 커서 이동 x

Shift + Enter : 해당 셀 실행. 커서 다음 셀로 이동

Alt + Enter : 해당 셀 실행. 셀 삽입 후 커서 이동

 

Ctrl + M A : 코드 셀 위에 삽입

Ctrl + M B : 코드 셀 아래 삽입

Ctrl + M D : 셀 지우기

Ctrl + M Y : 코드 셀로 변경

Ctrl + M M : 텍스트 셀로 변경

Ctrl + M Z : 실행 취소

 

 

파이썬 기초

 

콜렉션 자료형

특징 튜플(Tuple) 리스트(List) 세트(Set) 딕셔너리(Dictionary)
순서 있음 있음 없음 있음
가변성 불변 가변 가변 가변
중복 허용 허용 허용 불허 키 : 불허 / 값 : 허용
표현 방식 '( )' '[ ]' '{ }' (또는 'set()') '{ }'
사용 사례 변경되지 않아야 할 값의 묶음 동적 데이터 목록 고유한 값의 집합 키-값 쌍으로 데이터를 저장할 때

 

1. 튜플(Tuple)

순서가 있는 데이터의 목록

 

2. 세트(Set)

데이터 중복을 허용하지 않으며 데이터 입력 순서는 중요하지 않음

set_1 = {1, 2, 3, '가', '나', '다'}

set_1.add('추가') 
print(set_1) 
set_1.remove('가') 
print(set_1) 
set_1.clear( ) 
print(set_1)

 

- 실행결과
세트의 데이터는 유일하기 때문에 순서는 중요하지 않음. 따라서 데이터의 순서가 예시와 다르게 출력될 수 있음.

더보기

{'다', 1, 2, 3, '나', '가', '추가'}

{'다', 1, 2, 3, '나', '추가'}

set()

 

3. 리스트(List)

데이터를 다루기 편리하여 매우 자주 활용되는 콜렉션 자료형

추가(Append), 삽입(Insert), 삭제(Remove), 정렬(Sort)

#리스트 생성하기 
list_1 = [1, 2, 3] 
print(list_1)

#리스트 변경하기
list_1[2] = 9999
print(list_1) 
list_1.append(100) 
print(list_1) 
list_1.remove(9999) 
print(list_1) 
list_1.insert(0,777) #인덱스 0 
print(list_1)

 

- 실행결과

더보기

[1, 2, 3]

[1, 2, 9999]

[1, 2, 9999, 100]

[1, 2, 100]

[777, 1, 2, 100]

- 리스트 데이터 정렬

list_2 = [897, 2, 1, 4, 99, 5.24, 17] 
print(list_1)

#뒤집기
list_2.reverse( ) 
print(list_2)

#오름차순 정렬하기 
list_2.sort( ) 
print(list_2)

#내림차순 정렬하기 
list_2.sort(reverse=True) 
print(list_2)

 

- 실행결과

더보기

[897, 2, 1, 4, 99, 5.24, 17]

[17, 5.24, 99, 4, 1, 2, 897]

[1, 2, 4, 5.24, 17, 99, 897]

[897, 99, 17, 5.24, 4, 2, 1]

 

4. 딕셔너리(Dictionary)

값(value)과 키(key)가 한 쌍을 이루어 요소가 되는 자료구조

키를 이용하여 쌍을 이루는 값에 접근할 수 있으므로 신속하게 값을 찾아내야 할 때 사용

#딕셔너리 생성하기
dict_1 = {'name': '홍길동', 'birth':1990}
print(dict_1['birth'])

#키와 값 추가하기
dict_1['weight'] = 60.5
print(dict_1)

#키와 값을 수정하기
dict_1.update({'weight':67.8})
print(dict_1)

#딕셔너리 값 변경하기
dict_1['hobby'] = ['축구', '등산']
print(dict_1)

#데이터 삭제하기
del dict_1['weight']
del dict_1['birth']
print(dict_1)

 

- 실행결과

더보기

1990

{'name': '홍길동', 'birth': 1990, 'weight': 60.5}

{'name': '홍길동', 'birth': 1990, 'weight': 67.8}

{'name': '홍길동', 'birth': 1990, 'weight': 67.8, 'hobby': ['축구', '등산']}

{'name': '홍길동', 'hobby': ['축구', '등산']}

 


 

중요 실습 코드 정리

#논리연산자 2-4

박지성, 손흥민, 이강인의 이름을 한글자씩 분류하여 변수에 저장하고, 저장된 변수에 내 이름의 성이 들어있는가를 판단하는 프로그램을 작성하시오.

name1 = '조'
football = ['박', '지', '성', '손', '흥', '민', '이', '강', '인']
print(name1 in football)

 

#반복문 2-9

5단부터 7단까지 출력되도록 while문과 for문을 사용하고자 합니다. 아래 프로그램을 완성하시오.

a = 5
while a <= 7:
  for i in range(1, 10):
    print(str(a) + ' X ' + str(i) + ' = ' + str(i*a))
  print("----------------")
  a = a + 1

 

#자료형 찾기 2-18
아래의 데이터가 접은글과 같이 실행되도록 프로그램을 완성하시오.

('1', 20, False)
{1, 2, 3, '', '', ''}
[1, 2, 3, '', '', '', 1, 2]

{'': 1, '': '2'}

더보기

('1', 20, False) <class 'tuple'>

{'다', 1, 2, 3, '나', '가'} <class 'set'>

[1, 2, 3, '가', '나', '다', 1, 2] <class 'list'>

{'가': 1, '나': '2'} <class 'dict'>

a1 = ('1', 20, False)
a2 = {1, 2, 3, '가', '나', '다'}
a3 = [1, 2, 3, '가', '나', '다', 1, 2]
a4 = {'가':1, '나':'2'}
print(a1, type(a1))
print(a2, type(a2))
print(a3, type(a3))
print(a4, type(a4))

 

#3단, 4단, 5단 출력 2-21
함수를 이용하여 3, 4, 5단을 출력하도록 아래 프로그램을 완성하시오.

def gugudan(gugu):
  for i in gugu:
    for j in range(1, 10):
      print(str(i) + ' X ' + str(j) + ' = ' + str(i*j))
    print("-------------")

gugu = [3, 4, 5]
print(gugudan(gugu))

 

#세트 변경 및 복제 2-23
자신의 이름을 세트의 자료형으로 저장하고, 전화번호를 추가하는 프로그램입니다

name_1 = {'조', '성', '은'}

name_1.add('02-950-7676')
print(name_1)
name_1.remove('조')
print(name_1)
name_1.clear( )
print(name_1)

 

#리스트 2-24

앞 장의 세트와 같이 동일하게 자신의 이름을 리스트로 저장하고, 전화번호를 추가한 후, 자신의 성을 삭제하여 출력하도록 빈칸을 채우시오.

name_1 = ['조', '성', '은']

name_1.append ('02-950-7626')
print(name_1)
name_1.remove ('조')
print(name_1)
name_1.clear ( )
print(name_1)

 

#자판기 프로그램 2-25

사용자에게 숫자를 입력 받고 숫자가 짝수인지 판별하는 프로그램 만들기

사용자로부터 숫자를 입력 받음

사용자가 입력한 값이 x이면 2로 나누어 나머지가 0인가를 판단

 나머지가 0이면 짝수 아니면 홀수

짝수인지 판별하는 함수 def check_even_num(x):

def check_even_num(x):
  if x % 2 == 0:  #x가 2로 나누어 떨어지면 짝수
    return True
  else:
    return False

number = int(input('판별할 자연수를 입력하세요:'))
if check_even_num(number):
  print('짝수')
else:
  print('홀수')