홍동이의 성장일기
[👩💻TIL 1일차 ] 유데미 스타터스 취업 부트캠프 4기 본문
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기 데이터분석/시각화 학습 일지 리뷰로 작성되었습니다.
'교육 > 유데미 스타터스 4기' 카테고리의 다른 글
유데미 스타터스 취업 부트캠프 4기 - 데이터분석/시각화(태블로) 1주차 학습 일지 (0) | 2023.02.10 |
---|---|
[👩💻TIL 5일차 ] 유데미 스타터스 취업 부트캠프 4기 (0) | 2023.02.10 |
[👩💻TIL 4일차 ] 유데미 스타터스 취업 부트캠프 4기 (0) | 2023.02.09 |
[👩💻TIL 3일차 ] 유데미 스타터스 취업 부트캠프 4기 (0) | 2023.02.08 |
[👩💻TIL 2일차 ] 유데미 스타터스 취업 부트캠프 4기 (0) | 2023.02.07 |