변수(Variables)
변수는 값을 담는 상자라고 생각하자. 나중에 연산 등 '재사용'의 목적을 위해 값을 담아두는 존재이다. 마치 내가 쓰던 물건을 버리지 않고 '아, 나중에 여기 뒀다가 또 써야지.' 하고 잠시 담아두는 것과 같다. 어떤 특정 데이터를 잠시 담아서 나중에 쓰려고 가지고 있는 것이다. 그런데 상자가 무척 많다면 알아볼 때 곤란할 수 있다. 그래서 이름만 봐도 쉽게 알 수 있도록 해두면 효율적으로 쓸 수 있다. 한편, 변수를 담아뒀는데 쓰지 않는다면 정말 아쉬울 것이다. 만들 필요가 없었던 게 아닌가..! 잘 이름을 지어두고, 이런 변수들에 담아진 수많은 데이터를 분석하는 것이 바로 우리가 하는 '데이터 분석'이 될 것이다.
- 변수 선언: '변수 = 값' 형태로 값을 대입
- 변수의 자료형(= 데이터의 형식): 변수에 대입된 값에 의해 결정
type()
- 변수 이름만 봐서는 데이터 형식(실수인지, 정수인지, 문자열인지..)을 알 수 없다.
- 특히 우리가 할당한 값이 아니라, 어디선가 가져온 값이라면 형식을 확인해야 한다.
변수와 함수의 이름(식별자, Identifier)에 관한 규칙
if, for, not, or, pass 등의 'Python 키워드'는 자체 사용 목적으로 이미 예약이 되어있는 문자열이다. 그래서 변수나 함수에 이름을 붙이기 위해 사용하는 단어인 식별자(Identifier)로는 사용이 불가능하다.
- 키워드를 사용할 수 없음
- 언더 바(_)를 제외하고는 특수 문자 사용 불가
- 공백 포함 불가
- 숫자로 시작 불가
올바른 식별자의 예
- age, score, member, member_01, num01, num02
올바르지 않은 식별자의 예
- if, while, 123, 3Member, My Score, a+b
연산자(Operators)
수식을 계산(=산술)하거나 값을 비교 혹은 대입하는 등의 다양한 연산자가 Python에 존재하며, 값을 더하거나 빼는 등의 처리를 하는 '산술 연산자', 값이나 변수 또는 연산 결과 등의 크기를 비교하는 '비교 연산자', 두 개 이상의 조건을 연결하는 '논리 연산자', 어떤 값이 특정 객체의 요소인지 확인하는 '멤버 연산자', 두 객체가 동일한 객체인지 확인하는 '식별 연산자' 등이 있다.
산술 연산자(Arithmetic Operators)
- 더하기(+), 빼기(-), 곱하기(*), 나누기(/), 나머지(%), 몫(//), 제곱(**)
# % 연산자는 짝수 또는 홀수 인지를 판단할 때 사용하는 경우가 많다
# 변수 선언
a = 20
# 짝/홀수 판단
if a % 2 == 0:
result = '짝수'
else:
result = '홀수'
# 확인
result
# // 연산자는 10 단위 또는 100 단위 등의 수를 구할 때 사용하는 경우가 많다
# 20대, 30대... 연령대별 분석을 하고 싶은 경우 자주 사용
# 변수 선언
age = 26
# 10으로 나눈 몫을 구한 후 10 곱하기
age = age // 10 * 10
# 확인
age
비교 연산자(Comparison Operators)
- 같다(==), 같지 않다(!=)
- 비교 연산의 결과는 True, 아니면 False
복합 대입 연산자(Assignment Operators)
- +=, -=, *=, /=
- 연산과 대입을 동시에 수행할 수 있는 연산자
논리 연산자(Logical Operators): and, or, not
- and, or, not
- 두 개 이상의 조건을 연결하는 연산자
# 변수 선언
t = True
f = False
# 논리 연산자
print(t and f) # False
print(t or f) # True # 헷갈림
print(not t) # False
멤버 연산자(Membership Operators)
- in, not in
- 어떤 값이 특정 객체의 요소인지 확인하는 연산자
# 리스트 만들기
a = [10, 20, 30, 40, 50, 60]
# 멤버 여부 확인
print(10 in a) # True
print(90 in a) # False
print(90 not in a) # True
식별 연산자(Identity Operators)
- is, is not
- 두 객체가 동일한 객체인지 확인하는 연산자
- 값의 같음(==, !=)을 비교하는 게 아니고, 존재가 같냐 아니냐를 확인한다.
- 이는 메모리 공간에서 같은 데이터를 바라보고 있다는 의미로 받아들일 수 있다.
print() 함수
어떤 처리를 위해 미리 작성되어 모듈화된 코드를 '함수(Function)'라고 부르며, 그중 가장 많이 사용하는 함수가 print()이다. print() 함수 안에는 콤마(,)로 구분해 값을 여러 개 전달할 수 있으며, sep, end 옵션을 가끔 사용하는데 이를 잘 기억해놓자. print()는 편하게 보여준다. 약간 가공해서 인간이 편하게 볼 수 있는 결과를 보여준다고 생각하면 좋겠다. print()를 쓰지 않고 그대로 썼을 때는 가공하지 않은 그대로가 출력되기 때문에, print()를 썼을 때와 안 썼을 때의 결과는 달라진다.
s = 'I have a Dream.\nI have a Drum.'
print(s)
# I have a Dream.
# I have a Drum.
s
# 'I have a Dream.\nI have a Drum.'
- 콤마로 구분해 값을 여러 개 전달
print('c =', c) # c = 10.5
print('d =', d) # d = 2.5
print('c % d =', c % d) # c % d = 0.5
print('c // d =', c // d) # c // d = 4.0
- sep, end 옵션
# 구분자 지정
print('Hello', 'world.') # Hello world.
print('Hello', 'world.', sep=' ') # 공백을 사이에 두고 입력 # Hello world.
print('Hello', 'world.', sep=',') # ,로 구분해서 입력 # Hello,world.
print('Hello', 'world.', sep='') # 공백도 없는 # 빈 문자열 # 붙여서 출력해야할 때 # Helloworld.
# 개행 여부 지정(1)
print('Hello', 'world.') # 기본적으로 print() 함수는 출력 후 줄을 바꾸기 위해 자동으로 **개행 문자(\n)**를 넣는.
print('Hello', 'world.', end='\n') # 첫줄과 출력결과는 동일
print('Hello', 'world.', end='') # 오른쪽에 붙여서 출력하고 싶을 때
print('Hello', 'world.')
# Hello world.
# Hello world.
# Hello world.Hello world.
# 개행 여부 지정(2)
print('Hello', 'world.')
print('Hello', 'world.', end='\t') # tab
print('Hello', 'world.')
# Hello world.
# Hello world. Hello world.
기본 자료형
Python은 다양한 형태의 값을 저장하고 처리할 수 있도록 여러 가지 자료형을 제공하며, 정수형, 실수형, 불리언형 등이 있다. 자료형 사이의 변환은 float(), int(), str(), bool() 함수를 사용해 변환하게 된다.
- float() 함수: 문자열, 정수 → 실수
# 문자열, 정수 --> 실수
a = float('10.5') # 문자열 '10.5'를 실수로 변환
b = float(10) # 정수 10을 실수로 변환
print(type(a)) # <class 'float'>
print(type(b)) # <class 'float'>
print(a) # 10.5
print(b) # 10.0
- int() 함수: 문자열, 실수 → 정수
# 문자열, 실수 --> 정수
a = int('10')
b = int(123.45) # 소수점 아래는 버림이 된다.
print(type(a)) # <class 'int'>
print(type(b)) # <class 'int'>
print(a) # 10
print(b) # 123
# 실수 --> 정수
a = 123.79
b = int(a) # 무조건 버림
c = round(a) # 반올림
# b, c 값 확인
print(b) # 123
print(c) # 124
- str() 함수: 숫자 → 문자열
# 숫자 --> 문자열
c = str(12345)
print(type(c))
print(c)
# <class 'str'>
# 12345
# print 함수 사용하지 않으면
c
# '12345'
- bool() 함수: 공백문자('')와 0에 대해 False를 반환 (있으면 True, 없으면 False로 기억하자!)
# 숫자 --> 불리언형
# 0이면 False, 나머지는 True
d = bool(10)
print(type(d))
print(d) # True
e = bool(0)
print(type(e))
print(e) # False
# 문자 --> 불리언형
# 완전공백('')이면 False, 나머지는 True
f = bool('abc')
print(type(f), f) # <class 'bool'> True
g = bool('')
print(type(g), g) # <class 'bool'> False
서로 다른 자료형 간의 연결
# 문자열과 숫자 연결(오류)
print('I am ' + 20 + ' years old.') # 오류
# 문자열과 숫자 연결(수정)
print('I am ' + str(20) + ' years old.') # I am 20 years old.
[참고] 날짜 시간 자료형
Python은 날짜와 시간 관련 자료형을 제공하지 않기에, 필요하다면 datetime 표준 모듈을 불러와 사용해야 한다. 이때, '표준 모델'이라 함은 패키지 설치 없이도 불러올 수 있는 모듈을 말한다.
# 모듈 불러오기
from datetime import datetime
# 현재 날짜와 시간 얻기
dt = datetime.now()
dt
# datetime.datetime(2024, 9, 10, 22, 52, 14, 931525)
# 날짜 시간 정보 표시
print('날짜와 시간:', dt)
print('년:', dt.year)
print('월:', dt.month)
print('일:', dt.day)
print('시:', dt.hour)
print('분:', dt.minute)
print('초:', dt.second)
# 날짜와 시간: 2024-09-10 22:52:14.931525
# 년: 2024
# 월: 9
# 일: 10
# 시: 22
# 분: 52
# 초: 14
'데이터 분석 > 파이썬 기초' 카테고리의 다른 글
문자열 자료형에 대해 이해해보자. (1) | 2024.09.11 |
---|---|
값이 같다? 존재가 같다? (0) | 2024.09.10 |
[2일차] 07. 제어문 (0) | 2024.09.05 |
04, 05, 06. 튜플, 집합, 딕셔너리 자료형 (0) | 2024.09.05 |
03. 리스트 자료형 (0) | 2024.09.05 |