슬기로운 개발자생활/Python

[프로젝트 중심 데이터 분석 강좌 - Python 기초] 2. 파이썬 연산, 자료형

개발자 소신 2020. 11. 20. 13:10
반응형

안녕하세요 소신입니다.

 

데이터 분석을 위한 파이썬 기초입니다.

파이썬을 다루기 위한 기본 문법을 살펴보겠습니다.

기본 문법은 외우고, 이해해야 하는 부분입니다.


ㅁ 산술연산

ㅇ 사칙연산 

파이썬에서 활용가능한 사칙연산은 다음과 같습니다.

구분 예제 결과
덧셈 1 + 2 3
뺄셈 1 - 2 -1
곱셈 5 * 2 10
나눗셈 5 / 2 2.5
나눗셈 (몫) 5 // 2 2
나눗셈 (나머지) 9 % 2 1
제곱 2 ** 3 8
괄호 (우선순위) (2 + 3) * 2 10

 

ㅇ 자료형

type(값) - 자료의 형태를 확인하는 함수

type(2)
# 결과 : int
type(10.5)
# 결과 : float

 

- 자료형

int - 정수

float - 실수

bool - True or False (논리형)

str - 문자

list - list (값을 변경 가능한 배열)

tuple - tuple (값 변경 불가능한 배열)

dic - dictionary (key-value)

set - 집합

 

- 형변환

int(값) - 정수로 변환

float(값) - 실수로 변환

int(3.5)
# 결과 : 3
float(3)
# 결과 : 3.0

 


ㅁ 변수

- 변수 : 하나의 데이터를 저장할 수 있는 메모리 공간, 변할수 있는 수

파이썬에서는 변수를 선언과 동시에 할당

x = 10
print(x)
# 결과 : 10

 

파이썬 변수명 제약조건

1. 영문, 숫자 사용가능

2. 대소문자 구분

3. 숫자부터 시작할 수 없음

4. 특수문자 사용불가 (+, -, *, /, $ 등)

5. 파이썬의 키워드 사용불가

 

- 연습

1. x, y를 선언하고 두 값을 더한 결과를 출력하세요.

2. x를 선언하고 x에 10을 더한 결과를 출력하세요.

3. x를 선언하고 x에 10을 더한 결과를 저장한 후 x를 출력하세요.

 

- None : 비어있는 변수 (Null)

x = None
print(x)
# 결과 : None
Type(x)
# 결과 : None Type

 

- 실습

사용자로부터 x, y를 입력받아 더하고 곱하는 프로그램 작성
keyword - input(), int()

실행 :
x 값을 입력해주세요 : 20
y 값을 입력해주세요 : 30

결과 :
덧셈 결과 : 50
곱셈 결과 : 600

ㅁ Boolean

True - 참

False - 거짓

 

- 비교연산자

> : 크다, >= : 크거나 같다

< : 작다, <= : 작거나 같다

== : 같다, != : 같지않다

print(3 > 1)
# 결과 : True

print(10 != 10)
# 결과 : False

type(10==10)
# 결과 : bool

 

- 논리연산자

and : 모두 True면 True, 하나라도 False면 False

or : 하나만 True여도 True, 모두 False면 False

not : 반대

######## AND ########
True and True
# 결과 : True

True and False
# 결과 : True

######## OR ########
True or False
# 결과 : True

False or False
# 결과 : False

######## NOT ########
not True
# 결과 : False

 

- 비교 + 논리 연산자

5 > 10 and 20 == 20
# 결과 : False

5 == 5 or 10 != 10
# 결과 : True

 

- 실습

사용자로부터 점수 3개를 입력받아 모든 점수가 65점보다 클 경우 True
점수가 하나라도 65점이 안넘을 경우 False를 출력하세요
keyword - input(), int()

실행 :
첫 번째 점수 : 20
두 번째 점수 : 70
세 번째 점수 : 80

결과 : False

ㅁ 문자형

### 한 줄
"Hello, World"

### 여러 줄
""" Hello, World
Hello, Python"""

 

- 문자열 연산

"과일" + "사과"
# 결과 : 과일사과

"과일" * 3
# 결과 : 과일과일과일

 

- 문자열 함수

### len - 길이 출력
len("apple banana")
# 결과 : 12

### 대문자로
upper("apple banana")
# 결과 : APPLE BANANA

### 소문자로
lower("APPLE BANANA")
# 결과 : apple banana

### 문자열 대체
word = "apple banana"
word.replace("apple", "orange")
print(word)
# 결과 : orange banana

 

- 서식지정자

"문자열 %s 문자열"%문자

name = tom
"I am " + name + "!"
"I am %s!"%name
# 결과 : I am tom!

%s - 문자, %d - 정수, %f - 실수, %.3f - 소수점 3자리까지

 

%07.2f%10.3848 - 앞의 빈 숫자는 0으로 채우고 소수점 2자리 실수

%07.2f%10.3848
# 결과 : 0000010.38

 

- Format 함수

"문자열 {0}, {1} 문자열".format(값, 값)

 

"I like {0], {1} !!".format("apple", "banana")
# 결과 : I like apple, banana !!

ㅁ 리스트와 튜플

- 시퀀스 자료형 - 여러값들을 한 변수에 저장

 

리스트 = [값, 값, 값, ...] / 수정, 추가 가능

빈 리스트 생성 

a = []

a = list()

 

튜플 = (값, 값, 값, ...) / 수정, 추가 불가능

빈 튜플 생성

b = ()

b = tuple()

 

- 형변환

list(튜플)

tuple(list)

 

- range : 연속된 숫자 생성

ragne(개수) - 개수만큼 생성 (0부터 시작)

range(시작, 끝, step) - 끝은 포함하지 않음

range(10)
# 결과 : (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

range(5, 0 -1)
# 결과 : (5, 4, 3, 2, 1)

 

- 인덱스 접근

0부터 시작

a = [1,2,3,4,5]
a[2]
# 결과 : 3

## 값 변경 가능 (List)
a[3] = 8
a
# 결과 : [1,2,3,8,5]

## 슬라이스 (끝 포함 X)
a[0:4]
# 결과 : [1,2,3,8]

a[1:-2] # 1:3(=5-2)
# 결과 : [2,3]

 

- 기능

in : 특정 값 있는지 확인

a = [1,2,3,4,5]
1 in a
# 결과 : True

+ : 연결

a = [1,2,3,4,5]
b = [6,7,8,9]
a + b 
# 결과 : 1,2,3,4,5,6,7,8,9

* : 반복

a = [1,2,3]
a * 3
# 결과 : [1,2,3,1,2,3,1,2,3]

len() : 요소 개수 구하기

a = [1,2,3,4,5]
len(a)
# 결과 : 5

 

append(값) : 요소 추가하기

extend(시퀀스 자료형) : 요소들 추가하기

a = [1,2,3,4,5]
a.append(6)
# 결과 : [1,2,3,4,5,6]
a.extend([7,8])
# 결과 : [1,2,3,4,5,6,7,8]

 

insert(인덱스, 값) : 특정 인덱스에 요소 추가

a = [1,2,3]
a.insert(2,6)
# 결과 : [1,2,6,3]

pop(인덱스) : 리스트 요소 삭제

a = [1,2,3]
a.pop(0)
# 결과 : [2,3]
a.pop()
# 결과 : [2]

remove(값) : 특정 값 찾아서 삭제

a = [100,200,300]
a.remove(200)
# 결과 : [100,300]

 

sort() - 오름차순 정렬 (1,2,3,4), 내림차순 sort(reverse=True)

reverse() - 순서 뒤집기

index(값) - 특정 값 index 구하기

count(값) - 특정 값 개수 구하기

 

- 실습

 

range함수를 이용하여 사용자가 입력한 수까지의 2의 배수값을 넣은 리스트를 만들고 
리스트의 맨 마지막에 사용자가 입력한 값을 추가해 주세요

실행 : 
숫자를 입력해주세요 : 10
[2,4,6,8,10,10]

숫자를 입력해주세요 : 20
[2,4,6,8,10,12,14,16,18,20,20]

 


ㅁ 딕셔너리

딕셔너리 = {키1 : 값1, 키2:값2} =  dict(키1=값1, 키2=값2)

score = {"name" : "Tom", "math" : 80, "english" : 70}
score = dict(name="Tome", math=80, english=70)

빈 딕셔너리

a = dict()

a = {}

 

update({키:값}) 키-값 수정하기

score = {"name" : "Tom", "math" : 80, "english" : 70}
score.update({"math":90})
score
# 결과 {"name" : "Tom", "math" : 90, "english" : 70}

pop(키, 기본값) - 키로 항목 삭제 (없으면 기본값 출력)

clear() - 모든 값 삭제

 

keys() - 모든 키 가져오기

values() - 모든 값 가져오기

items() - 모든 키, 값 가져오기 (튜플형태)

score = {"math":80, "english":60}

score.keys()
# 결과 : dict_keys(["math","english"])

score.values()
# 결과 : dict_values([80,60])

score.items()
# 결과 : dict_items([("math",80),("english",60)])

 

- 실습

이름, 나이, 연락처를 입력받아 딕셔너리를 만들어 출력해주세요

실행 : 
이름을 입력해주세요 : 홍길동
나이를 입력해주세요 : 27
연락처를 입력해주세요 : 010-3023-1223

결과 :
{"이름":"홍길동", "나이", "27", "연락처":"010-3023-1223"}

 


ㅁ Copy 패키지

- copy() - 단일 리스트, 딕셔너리

b = a.copy()

a = {"a":0, "b":0}
b = a.copy()
print(b)
# 결과 : {"a":0, "b":0}

 

- copy.deepcopy() - 중첩 리스트, 중첩 딕셔너리

 

import copy
a = {“a”:{"c":0,"d":0}, "b":{"e":0,"f":0}}
b = copy.deepcopy(a)
print(b)
# 결과 : {“a”:{"c":0,"d":0}, "b":{"e":0,"f":0}}

 


ㅁ 세트 (집합)

중복을 가지지 않는 자료형

세트 = {값1, 값2, 값3, 값4}

a = set("animal")
a
# 결과 : {"a","n","i","m","a","l"}

 

합집합

|, set.union(a, b)

 

교집합

&, set.intersection(a,b)

 

차집합

-, set.difference

 

대칭차집합

^, set.symmetric_difference

 

부분집합

<=, a.issubset(b)

 

상위집합

>=, a.issuperset(b)

 

겹치는 요소 확인

a.isdisjoint(b)

겹치는 요소가 없을 때 True 반환

겹치는 요소가 있을 때 False 반환

 

add(값) - 값 추가

remove(값) - 값 삭제

반응형