지금은마라톤중

멋사 AI스쿨 TIL - (4) 본문

멋쟁이사자처럼/Python

멋사 AI스쿨 TIL - (4)

달리는중 2023. 1. 3. 17:23

 

데이터 규모에 따른 스킬들

- 엑셀 : 사용 간편 : 데이터 100만개 : 만들어진 기능만 사용가능 : 속도 느림

- 파이썬 : 파이썬문법 : 데이터 RAM 용량만큼 : 기능을 만들어서 사용가능 : 속도 빠름

- 파이썬 : 가상메모리 : DASK 

- 데이터베이스 : SQL문법 : 데이터 SSD(HDD) 용량만큼 : 속도 빠름

- 빅데이터 : 여러개의 컴퓨터를 1대의 컴퓨터처럼 사용 : SPARK : scala, python

 

3. 연산자 : CPU 사용하는 방법

- 산술 : +, - < *, /, //, % < ** : 데이터(int, str, list) +데이터 = 데이터

- 할당 : 식별자 <산수> = 데이터

- 비교 : ==, !=, > , <, >=, <= : 데이터 + 데이터 = 논릴값

- 논리 : not, and, or : 논리값 + 논리값 + 논리값

- 멤버 : 특정데이터가 컬렉션 데이터에 포함되었는지 확인 : 결과 논리값 출력

 

1) 산술연산자

data1, data2 = 14, 4

data1 – data2, data1 // data2, data1 % data2, data2** 2, data1 ** 0.5

# 연산자 우선순위
1 + 2 * 3, (1 + 2) * 3 
# 출력 : 7, 9
# 데이터 타입에 따른 연산자 사용
d1, d2, d3, d4 = 4, 5, '1', '3'

# 데이터 타입에 따라서 수행되는 연산이 다르다.
d1 + d2, d3 + d4
# 출력 : 9, '13'
# 숫자열은 사칙연산이 가능, 문자열은 그냥 옆에 붙임
# 데이터타입의 형변환
# int(), float(), bool(), str(), list(), tuple(), dict()
d1 + int(d3), str(d1) + d3

# 추가적인 연산, 형변환
d5, d6 = [3, 5], list('가나다')
print(d5 + d6, d6 * 2, d4 * 5)
# 출력 : [3, 5, '가', '나', '다'] ['가', '나', '다', '가', '나', '다'] 44444
# list()는 내용을 분리해줌

 

2) 할당연산자 : 누적해서 산술연산 수행

data = 10

# data = data + 5

data += 5 

 

3) 비교연산자

- ==, !=, >, <, >=, <=

- 데이터 + 데이터 = 논리값

- 수식의 문법이 틀리면 Fasle, 맞으면 True 출력

d1, d2 = 12, 4
d1 == d2, d1 != d2, d1 > d2
# 출력 :  (False, True, True)

 

4) 논리연산자

- 논리값 + 논리값 = 논리값 : 논리값(데이터+데이터) + 논리값(데이터+데이터) = 논리값

- 비교연산자 : 조건 1, 논리연산자 : 조건 2개이상

- not, and(T : T and  T = T), or(F : F or F = F)

- 우선순위 : not > and > or  

- and  두개의 조건이 모두 True이여야 True

- or 두개의 조건  하나만 True이여도 True

not False, not (True and False), False or True, (10 > 5) or (10 > 15)
# 출력 : (True, True, True, True)

 

 

5) 멤버연산자

- 컬렉션 데이터에서 특정 데이터가 있는 확인 : 결과 논리값

- in, not in

 

data = list('ABC')
'B' in data, 'D' in data, 'D' not in data
# 출력 :(True, False, True)

 

 

* 실수할만한 코드2 

 

# 실수 할만한 코드 2
data1, data2 = 0.1, 0.2
(data1 + data2) == 0.3

#부동소수점 연산 문제
data1 + data2 # 출력 : 0.300000000004

#해결방법법 1 : 반올림으로로 해결결 : round()
print(round(data1 + data2, 1 )) #출력 : 0.3
round(data1 + data2, 1) == 0.3 #출력 : True

#해결방법 2 : 고정소수점점 연산
from decimal import Decimal
print(float(Decimal(str(data1)) + Decimal(str(data2)))) #출력 : 0.3
float(Decimal(str(data1)) + Decimal(str(data2))) == 0.3 #출력 : True

 

4. 조건문

- 특정 조건에 따라서 다른 코드를 실행

- if, elif, else

# 숫자를 입력받아 홀수, 짝수를 출력하는 코드
# 조건을 확인하는 코드 부분의 데이터가 bool(True, False)가 아니면, bool() 형변환해서 판단
number = 8
if number % 2:
    print('홀수')
else:
    print('짝수')

number % 2, bool(number % 2)
# bool() 형변환 했을때 False가 나오는 데이터
bool(0), bool(0.0), bool(''), bool(' '), bool([]), bool(()), bool({})
# 출력 : (False, False, False, True, False, False, False)

 

* 삼항연산자

- 간단한 조건문을 한줄의 코드로 작성하는 방법

-  <true data> if <condition> else <false data>

balance, draw = 10000, 12000
if balance >= draw:
    print("인출가능")
else:
    print("인출불가")

⬇️위와 같은 코드를 삼항연산자를 사용하면 아래와 같이 표현 가능하다.⬇️

balance, draw = 10000, 2000
result = "인출가능" if balance >= draw else "인출불가"
result

 

매직(스페셜) 커멘드: jupyter notebook에서 제공

 

- IPython시스템에서 제공하는 add-on function들이며 접두사로 % 또는 %%를 사용하는 키워드들로 사용된다

  • % 의 경우 한 줄의 코드에서만 실행되며
  • %% 의 경우 여러 줄, 즉 한 셀의 내용 전체에서 실행된다
%pwd   현재 위치
%ls   현재 디렉토리 파일 조회
%whos  현재 정의된 변수 확인
%reset 현재 정의된 변수 삭제
%time  
%timeit
실행시간을 알려줌
평균실행 시간을 알려줌
%writefile  파일작성
%magic 
%lsmagic 
각 키워드 상세 도움말 출력
magic 키워드 출력
%run  python file code 실행
%history 사용한 명령을 출력
%matplotlib inline  matplotlib을 내부에서 실행할수 있도록 함

 

* Shell command : system(os)에서 제공

- 구글 서버 컴퓨터 : ubuntu

- ubuntu 명령어 실행

- ! 사용(주피터 노트북(.ipynb)에서만 가능)

 

!ls  파일 리스트 출력
!echo 문자열 출력
!touch   파일 생성
!cat  파일 출력
!mkdir  디렉토리 생성
!mdir   디렉토리 삭제
!mv  파일 이동
!cp  파일 복사
!rm  파일 삭제
!df   (disk free) 사용량 확인

 

5. 반복문

- 특정 코드를 반복적으로 실행 > 코드 유지보수 향상

- while, for, break. continue. range(), enumerate(), zip()

 

1) while

# while
count = 3
while count > 0:
    print('Happy NewYear')
    count -= 1
# 출력 : Happy NewYear
#	Happy NewYear
#	Happy NewYear

2) for

# for
# _ : 식별자로 사용될때 사용되지 않는 식별자로 사용 
for _ in [0, 1, 2]:
    print('Happy NewYear')
# 출력 : Happy NewYear
#	Happy NewYear
#	Happy NewYear

3) range()

# range() : 리스트를 만들어주는 함수
# range(end), range(start, end), range(start, end, stride)
list(range(3)), list(range(3, 10)), list(range(3, 10, 2))

for _ in range(3):
    print('Happy NewYear')
# 출력 : Happy NewYear
#	Happy NewYear
#	Happy NewYear

4)break : 반복되는 코드를 중단

5) continue : 아래에 있는 코드를 실행하지 않고 반복구문의 코드로 올라가서 코드를 실행

# 랜덤한 숫자 먼저 맞추기 게임
# 1. 0 ~ 9의 랜덤한 숫자 생성
# 2. 숫자를 입력한 횟수를 카운팅하는 변수 선언
# 3. 아래의 내용 반복
#   3-1. 숫자를 입력 받음
#   3-2. 카운팅 +1 추가    
#   3-3. 랜덤한 숫자와 입력받은 숫자가 같은지 확인
#   3-4. 같으면 카운팅 횟수 출력 > 게임 종료

import random

random_number = random.randint(0, 9)

count = 0

while True :
    
    a = int(input("숫자입력:"))    
    
    count +=1
    if a == random_number :
        print(count)
        break
    else :
        continue

 

6) enumerate() : 반복문에서 리스트 데이터에 idx 숫자를 출력할  사용

# 30세 이상의 사용자 목록 출력
users = ['손흥민(32)', '조규성(27)', '벤투(43)']
for user in users:
    # print(user, int(user[-3:-1]))
    if int(user[-3:-1]) >= 30:
        print(user)
# 출력 : 손흥민(32)
#	벤투(43)

7) zip(): 같은 인덱스의 데이터끼리 튜플로 묶어서 리스트로 출력

-데이터의 갯수가 가장 작은 것을 기준으로 튜플로 묶는다. (초과하는 갯수는 출력되지 않는다)

players = ['손흥민', '메시', '호날두']
goals = [30, 20, 10]
list(zip(players, goals))

 


Conditional Probability : 조건부 확률

- 조건부 확률은 사건 A가 발생했다는 전제 하에 사건 B가 일어날 확률

- 𝑃(𝐵|𝐴)=𝑃(𝐵∩𝐴)𝑃(𝐴)

특징 :  𝑃(𝐵|𝐴)𝑃(𝐴|𝐵)

- 식을 풀어보면 

           𝑃(𝐴𝐵)=𝑃(𝐵)𝑃(𝐴|𝐵)=𝑃(𝐴)𝑃(𝐵|𝐴)

           𝑃(𝐴|𝐵)=𝑃(𝐴∩𝐵)𝑃(𝐵)=𝑃(𝐴)𝑃(𝐵|𝐴)𝑃(𝐵)

   

  ➡️ 사건 B가 발생했을때 사건 A가 발생할 확률을 사건 A가 발생했을때 사건 B가 발생할 확률로 알아낼수 있다.

  ➡️ 𝑃(𝐵|𝐴)  𝑃(𝐴|𝐵) 를 알아낼수 있다.

 

 

 

 

* round(숫자, 소수점 자릿수)

#원주율 3.141592...
pi = 3.141592 

#소수점 3째 자리까지만 출력
round(pi, 2)
# 출력력 : 3.14

 

 


Quiz

# Quiz 1. 년도를 입력받아 윤년이면 True, 아니면 False 출력하는 코드 작성
# 4년에 한번씩 윤년 O
# 100년에 한번씩 윤년 X
# 400년에 한번씩 윤년 O
year = 2008 # True
year = 1900 # False
year = 2000 # True

years = int(input("년도 입력: "))

if years % 400 == 0 :
    print("True")
elif years % 100 == 0 : 
    print("False")
elif years % 4 == 0 :
    print("True")
else : 
    print("False")
# Quiz 2. fizzbuzz
# 3의 배수 : fizz, 5의배수 : buzz, 3과 5의 배수 : fizzbuzz 출력
# 위의 조건에 해당하지 않으면 data 출력
data = 17

number = int(input("숫자입력"))

if (number % 3 == 0 ) and ( number % 5 == 0) :
    print("fizzbuzz")
if (number % 3 == 0 )  :
    print("fizz")
elif ( number % 5 == 0) :
    print("buzz")
else :
    print(data)
# Quiz 3. left shift
data = 'abcde'
shift = 3 # deabc


shift_1 = 'bcdea'
shift_2 = 'cdeab'
shift_3 = 'deabc'
shift_4 = 'eabcd'
shift_5 = 'abcde'

shift = int(input('숫자입력력:'))

if shift % 5 == 1 : 
    print(shift_1)
elif shift % 5 == 2 : 
    print(shift_2)
elif shift % 5 == 3 : 
    print(shift_3)
elif shift % 5 == 4 : 
    print(shift_4)
elif shift % 5 == 0 : 
    print(shift_5)

 


출처 : 

- https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=mykepzzang&logNo=220834864348   

- https://velog.io/@log327/Jupyter-Notebook에서-Magic-Command-사용하기.  

 

- https://studymake.tistory.com/601

- https://steemit.com/kr/@radajin/how-to-use-jupyter-notebook

 

 

 

 

'멋쟁이사자처럼 > Python' 카테고리의 다른 글

멋사 AI스쿨 TIL - (6)  (2) 2023.01.05
멋사 AI스쿨 TIL - (5)  (0) 2023.01.04
멋사 AI스쿨 TIL - (3)  (0) 2023.01.02
멋사 AI스쿨 TIL - (2)  (2) 2022.12.23
멋사 AI스쿨 TIL - (1)  (0) 2022.12.23
Comments