[Python] [2일차] 데이터 Skill 비교, 연산자
안녕하세요. 이번 포스트는 멋사 AI School 강의 2일차 내용을 복습한 내용입니다.
강의 초반에는 강사님은 데이터 분석에 활용되는 스킬들을 간단하게 설명해 주셨습니다.
엑셀 | 1. 사용은 간편 2.데이터가 100만개로 제한 3. 속도느림 4. 만들어진 기능만 사용 가능 |
파이썬 | 1. 데이터를 RAM 용량만큼 쓸 수 있음 2. 직접 기능을 만들어 사용 가능 3. Numpy를 이용하면 속도가 빠름 |
파이썬 - DASK | 1. 파이썬 라이브러리 2. 적은 데이터에 경우 사용 |
데이터베이스 | 1. SQL 문법을 이용 2. 데이터는 하드디스크 용량만큼 사용 가능. 3. 속도가 빠름 |
빅데이터 | 1. Spark와 같은 프로그램으로 여러 개의 컴퓨터를 1대의 컴퓨터처럼 사용 2. 방대한 양의 데이터 처리 가능 |
연산자
연산자 정리
산술 연산자 |
+, - < *, /, //, % < **
|
할당 연산자 |
식별자 <산술>= 데이터
|
비교 연산자 |
==, !=, >, <, >=, <=
|
논리 연산자 |
not, and, or
|
맴버 연산자 |
in, not in : 특정 데이터가 컬렉션 데이터에 포함되었는지 확인
|
산술 연산자
data1, data2 = 14,4
#뺄셈
data1 - data2
#나눗셈에서 몫 값 출력
data1//data2
#나눗셈에서 나머지 출력
data1%data2
#제곱값
data2 ** 2
#루트값
data2 ** 0.5
기본 산술연산자를 이용해서 나이를 입력했을 때 연령대를 나타내는 프로그램을 만들어 보겠습니다.
age = 67
print((age // 10) * 10)
위 프로그램은 10으로 나누었을 때의 몫을 10으로 곱해 연령대를 나타나게 했습니다.
d1, d2, d3, d4 = 1, 2, '3', '4'
위와 같은 코드에서 d2 와 d3 는 서로 더할 수 있을까요?
아뇨. 더할 수 없습니다. 이런 경우에는 d2를 문자열로 변경하거나 d3를 숫자형으로 변경을 해서 서로 문자형을 맞춰야지 산수가 가능합니다.
그래서 이번에는 형변환 함수를 통해 서로 더할 수 있게 해주겠습니다.
# 데이터 타입이 서로 맞지 않는다면,
# 데이터 타입 형변환 : int(), float(), bool(), str(), list(), tuple(), dict(), set()
d1 + int(d3), int(d3) + int(d4), str(d1) + d4
리스트의 덧셈, 곱셈
d5, d6 = [1,2], list('ABC')
print(d5 + d6, d6*2)
할당 연산자
할당 연산자는 누적 산술 연산을 수행합니다.
data = 10
data = data + 5
data
가독성을 높이려면 이런 방법도 있습니다.
data = 10
data += 5
data
뺄셈은 아래와 같은 코드가 생성됩니다.
data = 10
data -= 5
data
할당 연산자는 반복문에서 유용하게 쓰이는 문법입니다.
비교 연산자
비교 연산자는 ==, !=, >, <, >=, <= 와 같은 기호들을 가지고 True 또는 False 값을 출력시킵니다.
즉, 수식의 문법이 틀리면 False, 맞으면 True 출력합니다.
d1, d2 = 234, 5
d1 == d2, d1 != d2, d1 > d2
d1 과 d2는 같다 -> 같지 않습니다 : False
d1 과 d2는 같지 않다 -> 같지 않습니다 : True
d1이 d2보다 큽니다 -> 그렇습니다 : True
위의 비교연산자를 이용해서 ATM 출금 프로그램을 만들어 보겠습니다.
# 출금 금액이 보유자산보다 적으면 True 출력
asset = 10000
draw = int(input("출금 금액을 입력해 주세요."))
print(asset >= draw)
논리 연산자
not, and, or 와 같은 논리 연산자를 이용해서 데이터를 서로 비교한 값을 출력합니다.
우선순위: not > and > or
and 는 두 개의 조건이 모두 True이어야 True
or 은 두 개의 조선 중 하나라도 True이면 True
not False, not (True and False), False or True, (10 > 5) or (10 > 15)
맴버 연산자
멤버 연산자 : in, not in
맴버 연산자는 컬렉션 데이터에서 특정 데이터가 있는지를 확인합니다..
data = list('ABC')
'B' in data, 'D' in data, 'D' not in data
알아두면 좋은 파이썬에서 자주하는 실수
data1, data2 = 0.1, 0.2
(data1 + data2) == 0.3
위의 코드를 출력했을때는 False 논리값이 출력됩니다.
왜 그럴까요?
data1 + data2
두 변수를 더했을 때 결과값을 확인해보면 소수점 뒤에 4 값을 붙는 것을 확인할 수 있습니다. 이는 부동소수점 연산 문제입니다.
위의 문제를 해결하기 위한 방법으로는 2가지가 있습니다.
첫번째는, 반올림을 합니다.
# 해결방법 1 : 반올림으로 해결 : round()
print(round((data1 + data2), 1))
round((data1 + data2), 1) == 0.3
두번째는, 고정소수점으로 연산합니다.
# 해결방법 2 : 고정소수점 연산
from decimal import Decimal
print(float(Decimal(str(data1)) + Decimal(str(data2))))
float(Decimal(str(data1)) + Decimal(str(data2))) == 0.3