일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- likelion
- 멋쟁이사자처럼멋쟁이사자처럼
- SQL
- seaborn
- intern10
- 시각화
- 프로젝트
- 마이온
- GIS
- 인턴10
- 파이썬
- likelionlikelion
- TiL
- 알고리즘
- Join
- ux·ui디자인
- 마이온컴퍼니
- Python
- 멋재이사자처럼
- 멋사
- BFS
- pyhton
- 멋쟁이사자처럼
- folium
- Plotly
- parklab
- GNN
- DFS
- DP
- 그리디
- Today
- Total
지금은마라톤중
멋사 AI스쿨 TIL - (4) 본문
데이터 규모에 따른 스킬들
- 엑셀 : 사용 간편 : 데이터 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 |