Python

[Python] [2일차] 데이터 Skill 비교, 연산자

시우마이 2023. 1. 3. 16:07

안녕하세요. 이번 포스트는 멋사 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