2023.01.03 (화) 파이썬 2일차 강의를 들었습니다.
연산자에 대한 수업을 진행하기 전에 데이터 규모에 따른 스킬에 대한 배경설명이 진행되었습니다.
[데이터 규모에 따른 스킬들]
데이터베이스 SQL / Python / Excel로 데이터를 다루는 것이 각각 어떤 차이점이 있는지 ?
1. 엑셀
: 데이터 100만개, 만들어진 기능만 사용 가능하다, 속도가 느리다, 사용이 간편함
2. 파이썬
: 데이터 RAM 용량만큼, 기능을 만들어서 사용 가능하다, 속도가 빠름 (넘파이 패키지), 파이썬 문법
2-1. DASK
: 파이썬 가상메모리 사용 (데이터베이스 구축하지 않아도 되는 장점이 있음)
ex) H기업에서 사용하는 사례가 있었음.
3. 데이터베이스
: 데이터 SSD(HDD) 용량만큼, 속도가 빠름(파이썬보다 빠름), SQL문법 (쿼리문)
4. 빅데이터
: 여러개의 컴퓨터를 1대의 컴퓨터처럼 사용, SPARK, scala
ex) KT IPTV 하루에 1테라가 넘게 데이터 쌓임, 컴퓨터 여러대에 데이터를 분산해서 저장하고, 1대에서 처리하듯 사용
[Python 문법 2]
오늘은 연산자, 에 대해서 자세히 알아보는 시간을 가졌습니다 :)
1. 연산자 : CPU를 사용하는 방법
- 산술, 할당, 비교, 논리, 멤버 5가지
(1) 산술 연산자 : 데이터와 데이터를 연산해서 데이터 출력
- +, -, <, *, /, //, %, <, **
* 응용 문제 *
# 나이를 입력받아 연령대로 출력하는 코드 작성
age = int(input('나이를 입력해주세요'))
ages = age // 10 * 10
ages
- 연산자 우선순위
- 데이터 타입에 따른 연산자 사용
- 데이터 타입에 따라서 수행되는 연산이 다르다.
- 데이터 타입의 형변환 : int(), float(), bool(), str(), tuple(), dict()
-형변환이 되는 경우, 안되는 경우가 있음
-['A', 'B', 'C'] -> list('ABC') 로 쓰는 게 더 나을 수 있음
-추가적인 연산과 형변환
d1, d2, d3, d4 = 1, 2, '3', '4'
d5, d6 = [1, 2], list('ABC')
print(d5 + d6, d6 * 2, d4 * 5)
출력 결과 -> [1, 2, 'A', 'B', 'C'] ['A', 'B', 'C', 'A', 'B', 'C'] 44444
(2) 할당 연산자 : 누적해서 산술연산 수행
-data = data + 5
-data += 5 (시그마)
(3) 비교 연산자 : 데이터와 데이터를 연산해서 논리값 출력
- ==, !=, >, <, >=, <=
- 수식의 문법이 맞으면 True, 틀리면 False 출력
* 응용 문제 *
# ATM 기기 코드로 구현
# 인출이 가능하면 True, 불가능하면 False 출력
# 인출금액을 입력받아서 처리 : input()
balance = 10000
draw = int(input('insert draw amount : '))
balance >= draw
(4) 논리 연산자 : 논리값와 논리값를 연산해서 논리값 출력
- not, and, or
- 우선순위 : not> and > or
-and는 T하고 묶어서 기억, or는 F하고 묶어서 기억
-and(T : T and T = T) | 두 개의 조건이 모두 T여야 T
-or(F : F or F = F) | 두 개의 조건중 하나만 T여도 T
- 조건이 2개 이상일 때 사용 (cf. 조건이 1개면 비교 연산자 사용)
* 응용 문제 *
# ATM 기기 업그레이드
# 1회당 최대 인출금액은 5000원 입니다.
# 잔고보다 인출금액이 작거나 같음 : 최대인출금액 5000원
# 인출이 가능하면 True, 불가능하면 False 출력
balance = 10000
draw = 4000
(balance >= draw) and (draw <= 5000)
(5) 멤버 연산자 : 특정 데이터가 컬렉션 데이터에 포함되었는지 확인하는 연산자 (결과는 논리값으로 출력됨)
- in, not in
* 응용 문제 *
# 선수명단에서 손흥민이 있으면 True 출력
players = ['메시', '손흥민', '호날두']
'손흥민' in players
2. 조건문 : 특정 조건에 따라서 다른 코드를 실행
- if, elif, else
- bool() 형변환 했을때 False가 나오는 데이터 : bool(0), bool(0.0), bool(''), bool([]), bool(()), bool({})
# 점수를 입력받아 학점을 출력하는 코드 작성
# 90 >= A, 80 >= B, 70 >= C, 60 >= D, F
point = int(input('학점을 입력하세요: '))
if point >= 90:
print('A')
elif point >= 80:
print('B')
elif point >= 70:
print('C')
elif point >= 60:
print('D')
else:
print('F')
3. 삼항연산자 : 간단한 조건문(if, else로 되어있는 간단한 조건)을 한줄의 코드로 작성하는 방법
- <true data> if <condition> else <false data>
- lambda 함수, 리스트 가공할 때 사용함
4. 반복문 : 특정 코드를 반복적으로 실행 (코드 유지보수 향상)
- while, for, break, continue, range(), enumerate(), zip()
(1) while
- 무한루프에 빠지지 않도록 조심 ! (런타임에 실행중단으로 중단하기)
- 조건을 확인하는 코드에 True, False가 아니면 bool() 형변환 해서 판단
# while True:
week = list('일월화수목금토')
for day in week:
if (day == '일') or (day == '토'):
print(day, '주말', '육아')
else:
print(day, '주중', '강의, 육아')
(2) for
- _ : 식별자로 사용될때 사용되지 않는 식별자로 사용
- range(end) /range(start, end) /range(start, end, stride) : 리스트를 만들어주는 함수
week = list('일월화수목금토')
for day in week:
if (day == '일') or (day == '토'):
print(day, '주말')
else:
print(day, '주중')
* 응용 문제 *
# 랜덤한 숫자 먼저 맞추기 게임
# 1. 0 ~ 9의 랜덤한 숫자 생성
import random
random_number = random.randint(0, 9)
# 2. 숫자를 입력한 횟수를 카운팅하는 변수 선언 : count
count = 0
# 3. 아래의 내용 반복 : while True:
while True:
# 3-1. 숫자를 입력 받음 : int(input())
input_number = int(input('insert number(0~9) : '))
# 3-2. 카운팅 +1 추가 : count +=
count += 1
# 3-3. 랜덤한 숫자와 입력받은 숫자가 같은지 확인 : if ==
if random_number == input_number:
# 3-4. 같으면 카운팅 횟수 출력 > 게임 종료 : print() break
print(f'count : {count}')
break
# 3-5. 다르면 up, down 출력하기
(3) enumerate() : 반복문에서 리스트 데이터에 idx 숫자를 출력할 때 사용
- 튜플 데이터 타입은 여러개 변수로 받을 수 있다의 개념이 사용 됨
- 추후에 판다스 패키지로 데이터 전처리할 때, 사용 됨
(4) zip() : 같은 인덱스의 데이터끼리 튜플로 묶어서 리스트로 출력
- 가장 작은 데이터 개수를 기준으로 묶임
[jupyter notebook 사용팁]
1. 매직 커맨드로 파일 시스템을 다루는 방법
%reset
%whos
%ls
%%writefile data.txt
%cat data.txt
2. Shell 커맨드 : system(OS)에서 제공
구글 서버 컴퓨터 OS는 ubuntu
-ubuntu 명령어 실행은 '!' 사용
-리스트 형태로 저장 가능
!ls
!free -h (컴퓨터 남은 메모리 알려줌)
!df -h
-파이썬 패키지 설치할 때, 시스템 명령어 사용함
!pip install konlpy (한국어 자연어 처리해주는 패키지...)
*시스템 엔지니어링에서 서버 배울 때, 더 자세히 배움
[수업을 마친 소감]
가장 중요한 조건문, 반복문을 학습하면서...
알고리즘을 구성할 때 어디까지 반복해야 하고, 어떨 때 멈춰야 하는지 정리를 하는 과정이 제일 중요한 것 같다는 생각이 들었습니다.
물론 입력받은 변수를 형변환시켜서 출력시키는 과정도
데이터 가공하는 과정을 생각해서 코드를 짜야겠다는 생각도 들었습니다.
점점 앞 시간에 배운 것들이 누적되서 코드 작성이 풍성해지고 있는데요, 데이터 타입의 특징을 가지고 이렇게 활용할 수 있구나!라고 알게 되는 것들이 있어서 더욱 재밌는 시간이었습니다 :)
'AI School 8기 (LIKELION, 22.12~23.05)' 카테고리의 다른 글
[AI School/TIL] Python 5일차_23.01.06 (0) | 2024.02.23 |
---|---|
[AI School/TIL] Python 4일차_23.01.05 (0) | 2024.02.23 |
[AI School/TIL] Python 3일차_23.01.04 (0) | 2024.02.23 |
[AI School/TIL] Python 1일차_23.01.02 (0) | 2024.02.23 |
[AI School/WIL] 1주차 자기주도 학습_22.12.23 (0) | 2024.02.23 |