홍동이의 성장일기

[👩‍💻TIL 1일차 ] 유데미 스타터스 취업 부트캠프 4기 본문

교육/유데미 스타터스 4기

[👩‍💻TIL 1일차 ] 유데미 스타터스 취업 부트캠프 4기

홍동2 2023. 2. 6. 20:00

1. 파이썬 데이터분석 소개

가장 먼저 왜 데이터 분석을 배워야하는지에 대해서 알아보았다.

나도 가치창출을 할 수 있는 데이터 분석을 하기 위해 열심히 배워봐야겠다. 💪

데이터분석의 절차는 다음과 같다.

 

 

2. 아나콘다 설치

anaconda3 파일을 만들어서 아나콘다를 설치해주었고

코드 관리를 위해 pythondata 파일을 만들었다.

 

아나콘다를 실행할때 Anaconda Prompt (anaconda3)을 실행하여

cd c:\pythondata

jupyter notebook

해당 코드를 작성하면 손쉽게 원하는 파일로 들어갈 수 있다.

 

 

3. 주피터노트북 사용법

  • 셀 추가 단축키: a(위), b(아래)
  • 셀 삭제 단축기: dd
  • 마크다운에서 줄을 바꾸고 싶다면 공백 2번 or <br>

 

📍 그런데 주피터 노트북에서 목차를 생성할 수 있는 기능이 잘 구현되지 않았다.

자꾸 jupyter-contrib가 없다고 한다.

구글링을 했는데도 마땅한 방법을 찾지 못해서 내일 질문해야겠다!

 

 

4. 파이썬 시작하기

기본 출력

  • 출력이 끝나면 줄바꿈이 된다.
  • 콤마로 구분하여 여러 개의 값을 한번에 출력할 수 있다.
  • 콤마로 구분된 여러 값 사이에는 공백이 추가된다.

 

끝문자 지정하여 출력

  • 출력이 끝나면 줄바꿈 대신 출력할 끝문자를 정한다.

 

 

5. 기본자료형과 변수

기본자료형

  • 정수형(int): 소수점이 없는 수
  • 실수형(float): 소수점이 있는 수
  • 문자열형(str)
  • 부울형(bool): True/False 값을 가진다.

 

변수 이름 작성 규칙

  • 영문, 숫자, _만으로 구성한다.
  • 대소문자를 구분한다.
  • 중간에 공백이 존재해서는 안된다.
  • 문자나 밑줄로 시작해야 한다.
  • 예약어는 변수명으로 사용할 수 없다.
  • 데이터의 의미나 역할을 짐작할 수 있는 이름을 사용한다.

 

변수의 자료형 결정 시기

  • 파이썬에서는 변수 타입을 미리 지정하지 않는다.
  • 변수에 값이 할당될 때 데이터 형에 따라 변수 타입이 결정된다.

 

변수에 값 입력받기

input으로 입력받은 값은 문자열타입이다.

따라서 숫자로 변환하고 싶다면 int를 적용해주어야한다.

*자료형 변환하기: int/float/str(value)

 

6. 산술연산 문자연산

산술연산자의 종류

 

산술연산의 우선순위

 

문자열 연산

  • +: 문자열 연결 → 덧셈 연산자로 연갈할 때는 데이터가 모두 문자열이어야 한다.
  • *: 문자열 반복

 

할당연산자

  • 변수에 값 저장하기
    • = : 값 할당
    • == : 같다

 

복합할당연산자

 

f스트링으로 변수값 출력하기

  • 문장 사이에 변수값을 편리하게 출력할 수 있다.

 

 

7. 문자열 다루기

문자열 인덱스

  • 양수 인덱스: 앞쪽부터 세며 0부터 시작
  • 음수 인덱스: 뒤쪽부터 세며 -1부터 시작

 

문자열 슬라이싱

문자열의 일정 범위를 추출하는 작업

  • 문자열의 시작 인덱스부터 끝 인덱스 -1까지 지정한 간격으로 추출한다.

 

문자열 함수

 

# 사용자의 영문이름 입력받기 (성과 이름은 공백으로 구분)
full_name = input('영문이름(성과 이름은 공백으로 구분하세요):')

# 공백의 위치 찾기
space = full_name.find(' ')
print(space)
# 성, 이름을 슬라이싱하여 각각 변수에 담기
first_name = full_name[:space]
last_name = full_name[space+1:]

print()

# 성, 이름의 순서를 바꾸어 출력하기
print(last_name, first_name)

 

8. 조건에 따라 분리하기(if)

프로그램의 기본 제어 구조에는 3가지 구조가 있다.

 

반복구조: 동일한 명령이 반복되면서 실행되는 구조

순차구조: 명령들이 순차적으로 실행되는 구조

선택구조: 조건에 따라 명령을 선택하여 실행하는 구조

  • if

       if 조건식:

          실행할 코드

score = int(input('점수:'))

if score>=60:
    print('합격')
    print('축하합니다.')
print('수고하셨습니다.')
  • elif

       if 조건식:

          명령어1

       elif 조건식2:

          명령어2

       else:

          명렁어3

score = int(input('점수:'))
if score>=90:
    grade='A'
elif score>=80:
    grade='B'
elif score>=70:
    grade='C'
elif score>=60:
    grade='D'
else:
    grade='F'

print('grade:',grade)
  • else

       if 조건식:

          명령어1

       else:

          명령어2

score = int(input('점수:'))

if score>=60:
    print('합격')
    print('축하합니다.')
print('수고하셨습니다.')
# 정수를 입력받아 짝수/홀수를 판별하세요.

num = int(input('정수:'))

if num%2 == 1:
    print('홀수')
elif num==0:
    pirnt(0)
else:
    print('짝수')

 

조건문을 만들기 위한 관계(비교) 연산자

  • 두 개의 피연산자를 비교한다.
  • 결과는 부울값(True/False)으로 계산된다.

 

+) 2023.02.07 추가

 

9. 횟수로 반복하기(for)

프로그램의 기본 제어 구조에는 3가지 구조가 있다.

 

반복구조: 동일한 명령이 반복되면서 실행되는 구조

순차구조: 명령들이 순차적으로 실행되는 구조

선택구조: 조건에 따라 명령을 선택하여 실행하는 구조

 

횟수 제어 반복(for)

  • 반복 횟수를 알 수 있다.
  • 무한루프에 빠지지 않는다
  • 주어진 자료를 순회할 때 주료 사용되는 반복 구조이다.

for 제어변수 in 시퀀스:

     명령문

 

시퀀스에 있는 값들이 제어변수에 하나씩 할당되며 값이 할당될 때마다 명령블록이 실행된다.

 

range() 함수: 일정한 범위의 정수들을 생성한다.

 

 

횟수를 지정하기 위한 range 함수

# 'Hello' 10번 출력하기

for i in range(5):
	print('hello')

 

중첩반복구조

  • 내부 for문을 외부 for문의 시퀀스만큼 반복한다.
  • 내부루프와 외부루프는 동일한 제어변수를 사용해서는 안된다.
for i in range(3):
    for j in range(4):
        print(i,j)
# 2단부터 9단까지 전체 구구단 출력하기

for i in range(2,10):
    for j in range(1,10):
        print(f'{i}*{j}={i*j}', end='\t')
    print()
    
# 세로형
for i in range(1,10):
    for j in range(2,10):
        print(f'{j}*{i}={j*i}', end='\t')
    print()
    
# 1부터 10까지 정수의 합 구하여 출력하기
total = 0
for i in range(1,11):
    total += i
print(total)

# 1부터 100까지 홀수의 합 구하여 출력하기
total = 0
for i in range(1,101):
    if i%2==1:
        total+=i
print(total)

10. 조건으로 반복하기(while)

조건 제어 반복(while)

  • 반복 횟수가 조건에 따라 달라진다.
  • 무한루프에 빠질 수 있다.
# 1부터 10까지 더하기

n = 1
total = 0
while n<=10:
    total += n
    n+=1
print(total)
# 'q'를 입력할 때까지 반복하여 이름 입력받기

name = input('이름:')
while name != 'q':
    name = input('이름:')

 

조건에서 빠져 나오기: break

while True:
    name = input('이름:')
    if name=='q':
        break
# 올바른 아이디/비밀번호를 입력할 때까지 아이디와 비밀번호를 입력하는 프로그램 만들기
# 아이디가 잘못되었으면 '아이디를 확인하세요' 출력
# 비밀번호가 잘못되었으면 '비밀번호를 확인하세요' 출력

id = 'id123'
pwd = 'pwd123'

while True:
    input_id = input('id:')
    input_pwd = input('pwd:')
    
    if id==input_id and pwd==input_pwd:
        break
    if id!=input_id:
        print('아이디를 확인하세요')
    if pwd!=input_pwd:
        print('비밀번호를 확인하세요.')
# 사용자가 0을 입력할 때까지 숫자을 입력받아 입력받은 숫자들의 합을 구하는 프로그램을 작성하세요
total = 0

while True:
    num = int(input('숫자:'))
    if num==0:
        break
    total+=num

11. 알고리즘 연습하기

up&down 숫자 맞추기 게임

#정답숫자
import random
num = random.randrange(1,101)
print(num)

#정답을 맞출 때까지 반복하기(정답을 맞추면 반복에서 벗어나기)
while True:
    answer = int(input('예상숫자:'))
    if answer==num:
        print('정답~!')
        break
    if answer<num:
        print('up')
    else:
        print('down')

 

 

+) 확장: 5번의 기회

# 횟수
cnt = 0

#정답숫자
import random
num = random.randrange(1,101)
print(num)

#정답을 맞출 때까지 반복하기(정답을 맞추면 반복에서 벗어나기)
while True:
    cnt += 1
    if cnt>5:
        print('횟수초과:정답은',num)
        break
    
    answer = int(input('예상숫자:'))
    if answer==num:
        print('정답~!')
        print(cnt,'번만에 맞추었습니다.')
        break
    if answer<num:
        print('up')
    else:
        print('down')

 

 

사칙연산 프로그램

num1 = int(input('숫자1:'))
num2 = int(input('숫자2:'))
op = input('연산기호:')


if op=='+':
    print(f'{num1}+{num2}={num1+num2}')
elif op=='-':
    print(f'{num1}-{num2}={num1-num2}')
elif op=='*':
    print(f'{num1}*{num2}={num1*num2}')
elif op=='/':
    print(f'{num1}/{num2}={num1/num2}')
else:
    print('잘못 입력하셨습니다.')

 

 

할인된 금액 계산

price = int(input('물건구매가:'))

if price>=100000:
    dc = 10
elif price>=50000:
    dc = 7
elif price>=10000:
    dc = 5
else:
    dc = 0
    
print(f'''

구매가:{price}
할인율:{dc}
할인금액:{price*(dc/100)}
지불금액:{price-price*(dc/100)}

''')

 


12. 리스트와 튜플 만들기

파이썬의 복합자료형: 하나의 변수에 다수의 데이터를 저장하는 자료형

 

리스트(list)

  • 여러 개의 데이터 값하나의 변수에 담을 수 있는 자료구조
  • 리스트 안의 각 데이터를 항목, 요소, item이라고 한다
  • [ ] 안에 각 요소를 ,로 구분하여 표현
  • 각 요소에는 인덱스라는 고유 번호가 지정 (0부터 시작)

 

 

튜플(tuple)

  • 튜플은 ( )로 둘러싼다는 점, 값을 바꿀 수 없다는 점을 제외하고는 리스트와 거의 동일하다
  • 프로그램이 실행되는 동안 값이 바뀌면 안되는 경우, 함수에 인수를 전달하거나 값을 리턴할때 사용하는 경우가 많다

  • 괄호 생략 가능
  • 항목수가 1개인 튜플은 마지막에 , 붙여주기

 

→ 리스트와 튜플에는 모든 자료형을 혼합하여 저장할 수 있다.

 

리스트, 튜플 연결하기

l = [1,2,3,4,5]
print(5 in l)
print(10 in l)

print(5 not in l)
print(10 not in l)

t = ((1,2),[3,4])
len(t) # 2

13. 인덱싱과 슬라이싱

인덱스

  • 리스트나 튜플의 각 항목에는 순서가 있고, 항목의 순서를 인덱스(index)라고 한다.
  • 파이썬에서 인덱스는 0부터 시작한다.

 

인덱스로 항목 추출하기

  • 리스트명 혹은 튜플명에 대괄호[ ]를 사용하여 인덱스를 지정하면 지정한 인덱스의 항목을 추출할 수 있다.
  • 리스트명/튜플명[index]

 

인덱스로 슬라이스 하기

  • 리스트 혹은 튜플의 일부를 추출하여 새로운 리스트로 만든다.
  • 리스트명/튜플명[시작인덱스:끝인덱스:간격]
    단, 끝인덱스의 항목은 포함하지 않음

 

항목의 인덱스 찾기

  • 특정 항목의 인덱스를 추출한다.
  • 찾고자 하는 항목이 존재하지 않으면 에러가 발생한다.
  • 리스트명/튜플명.index(항목)

14. 리스트 변경하기 (추가, 수정, 삭제)

리스트에 항목 추가하기

  • 리스트명.append(항목): 리스트의 맨 마지막에 항목을 추가한다.
  • 리스트명.insert(인덱스, 항목): 지정한 인덱스에 항목을 삽입한다.
  • 리스트명.extend(리스트): 리스트 마지막에 여러 항목을 한번에 추가한다.

 

 

리스트의 항목 수정하기

  • 리스트명[index] = item: 지정한 인덱스의 항목을 변경한다.
  • 리스트명[시작인덱스:끝인덱스] = [item1, item2, ... , itemN]: 여러 개의 항목을 한번에 변경한다.

 

 

리스트의 항목 삭제하기

  • del 리스트명[index]: 지정한 인덱스의 항목을 삭제한다.
  • 리스트명.remove(항목): 항목값을 이용하여 삭제한다.
    삭제하고자 하는 항목의 인덱스를 알 필요가 없다.
  • 리스트명.pop(): 리스트 마지막 항목을 반환하고 삭제한다.
## wishlist의 '시계','신발'을 myCart로 이동해봅시다.

wishlist = ['가방','시계','신발']
mycart = []

# wishlist의 시계, 신발을 추출해서 mycart에 담는다.
mycart.append(wishlist[1:3])

# wishlist의 시계, 신발을 삭제한다.
del wishlist[1:3]

15. 리스트 다양하게 활용하기

리스트 통계값: sum, min, max, count

 

원본리스트 정렬: 리스트 원본을 정렬한다.

  • 리스트명.sort(): 오름차순 정렬
  • 리스트명.sort(reverse=True): 내림차순 정렬

 

복사본 만들어서 정렬

  • sorted(리스트명)
  • sorted(리스트명, reverse = True): 내림차순 

 

리스트 순서 뒤집기

  • 리스트명.reverse()

 

2차원 리스트

  • 표는 행과 열로 이루어진 이차원 구조이다.
  • 리스트 안에 리스트를 중첩하여 사용함으로써 표를 표현할 수 있다.
# 파일리스트에서 파일명과 확장자를 분리하여 다음과 같은 형태로 저장하는 리스트를 만들어봅시다.

file_list = ['file1.py','file2.txt','file3.pptx']
name_extension = []

for i in file_list:
    #print(i.split('.'))
    name_extension.append(i.split('.'))

print(name_extension)


16. 리스트 연습하기

학생별 총점, 평균 구하기

# 각 학생의 세 과목의 성적의 [총점, 평균]을 구하여 리스트에 담으시오.
# (평균은 반올림하여 소수점 1자리까지 표현한다.)

score_list = [[96,84,80],[96,86,76],[76,95,83],[89,96,69],[90,76,91]]
stu_scores = []

for i in score_list:    
    total = sum(i)
    average = total/3
    #print([total,rount(average,1)])
    stu_scores.append([total,round(average,1)])
stu_scores

 

 

과목별 평균 구하기

# 각 과목의 리스트를 분리하고 과목별 평균을 구해봅시다. 평균은 소수점 1자리까지 출력한다.

score_list = [[96,84,80],[96,86,76],[76,95,83],[89,96,69],[90,76,91]]
kor_list=[]
eng_list=[]
math_list=[]

kor_average=0
eng_average=0
math_average=0

#각 과목의 리스트 분리하기
for i in score_list:
    #print(i)
    kor_list.append(i[0])
    eng_list.append(i[1])
    math_list.append(i[2])

print('kor_list:',kor_list)
print('eng_list:',eng_list)
print('math_list:',math_list)

kor_average = sum(kor_list)/len(kor_list)
eng_average = sum(eng_list)/len(eng_list)
math_average = sum(math_list)/len(math_list)

print('kor_average:',round(kor_average,1))
print('eng_average:',round(eng_average,1))
print('math_average:',round(math_average,1))

 

 

랜덤 항목 추출하기

  • random.choice(리스트명) 
import random

menulist = []
while True:
    menu = input('메뉴:')
    if menu=='':
        break
    menulist.append(menu)

print('오늘의 메뉴는:',random.choice(menulist))

짧은 시간에 방대한 양을 공부하려니 너무 헷갈렸지만...! 교육이 마친 후 많이 성장해있을 것 같아서 기대되는 마음으로 강의를 수강했다. 그리고 강의를 다 듣고 TIL을 작성하려니 시간이 오래걸려서 내일부터는 강의를 시청하면서 헷갈리거나 새로운 내용들을 정리해야겠다.

 

 


* 유데미 큐레이션 바로가기 : https://bit.ly/3HRWeVL

* STARTERS 취업 부트캠프 공식 블로그 : https://blog.naver.com/udemy-wjtb

📌 본 후기는 유데미-웅진씽크빅 취업 부트캠프 4기 데이터분석/시각화 학습 일지 리뷰로 작성되었습니다.

 

728x90
Comments