파이썬 되짚기 ①
- Python 기본 문법
PEPL, 들여쓰기, 세미콜론, 주석, import 문 - 변수
변수 선언, 변수의 예, 여러가지 변수 생성방법 - 자료형
Scalar: 기본 자료형, 문자열 - 자료구조
리스트
파이썬 기초문법
REPL(Read Evaluate Print Loop) 사용
- 콘솔 화면에서 파이썬 구문을 입력하면 바로 결과를 반환하고, 다시 입력할 수 있음
들여쓰기
- if, for, class, def 등의 코드블럭 작성
":" 표시 후 줄 바꿔서 들여쓰기
같은 블록 내에서는 들여쓰기 칸 수가 같아야 함
공백과 탭을 섞어 쓰면 안 됨
세미콜론
- 한 줄에 여러 명령문을 쓰려면 세미콜론 사용
주석
- 프로그램의 하는 일을 설명하는 설명 글 (코드에 대한 내용 해석 및 이해)
- 한 줄 주석은 #으로 표기
- 여러 문장을 주석으로 표시하려면 따옴표 3개를 연속으로 사용 (시작과 종료에 각각 표시)
import문
- Python은 여러 함수 라이브러리를 제공함
- import문을 통해서 필요한 라이브러리를 가져오고, 원하는 method를 실행시킬 수 있음
- 라이브러리의 명칭이 길면 "import numpy as np"와 같이 축약할 수 있음
변수
변수(Variable)
- 프로그램이 사용하는 데이터를 일시적으로 저장할 목적으로 사용하는 메모리 공간
- 정수, 실수, 문자열 등의 자료값을 저장
- 변수는 데이터를 담는 상자로 생각할 수 있음
변수 선언
a = 'python'
변수의 예
a = 'python' #문자열 변수
b = 132 #정수형 변수
c = 1.2 #실수형 변수
d = ['a', 'b'] #문자열 리스트
e = {'name' : 'lee'} #문자열 사전
- 변수의 내용은 언제든 바꿀 수 있다.
여러가지 변수 생성 방법
a, b = 'var1', 'var2'
c = ('tuple1', 'tuple2')
d = ['list1', 'list2']
print(a)
print(b)
print(c)
print(d)
* 파이썬에서 문자열은 큰따옴표나 작은따옴표를 이용하여 만들 수 있음
"Hello World!"도 문자열이고 'Hello World!'도 같은 문자열임
* 문법적인 의미를 가진 경우 ', 크게 의미를 가지지 않는 경우 " 사용.
데이터 변수 에러
- 선언된 변수가 아닌 경우 에러를 출력
a = 10
c
데이터변수 형태 확인
- 파이썬에서 변수의 자료형을 알려면 변수의 이름에 type()함수 적용
- 파이썬은 변수에 자료형 지정없이 데이터 저장 가능(다른 언어는 자료형 지정 필요)
파이썬은 동적형 결정(Dynamic Typing)사용, 다른 언어는 정적형 결정(Static Typing) 사용
* 즉 동일한 변수에 정수 데이터를 저장하였다가, 실수로 변환 가능
a = 10 #a 변수에 10의 값을 할당
b = 3.14 #b 변수에 3.14의 값을 할당
c = True #c 변수에 True라는 값을 할당
print("a의 값은?", a)
print("a의 데이터 변수 형태는?: ", type(a))
print("b의 값은?", b)
print("b의 데이터 변수 형태는?: ", type(b))
print("c의 값은?", c)
print("c의 데이터 변수 형태는?: ", type(c))
변수의 이름 설정
- 대소문자를 구분
- 변수의 이름은 영문자와 숫자, 밑줄(_)로 구성
- 변수 이름 중간에 공백이 허용되지 않음
- 숫자로 시작할 수 없음
- 특수기호(?, #, @, -, +, ... 등)는 허용되지 않음
- 파이썬 에약어(Reserced Keywords)는 사용 불가
파이썬 예약어(Reserved Keywords)
- 파이썬 언어에 정의된 예약어들은 변수 이름으로 사용될 수 없음
- Keyword를 import하면 파이썬의 예약어들을 확인할 수 있음
import keyword
print(keyword.kwlist)
자료형
자료형
- 변수가 저장할 데이터의 종류를 지정하는 것
- 파이썬에서 사용할 수 있는 기본 자료형은 4가지
- 정수(integer)
- 실수(float) *Python에는 double 자료형 없음
- 문자열(string)
- 부울형(boolean)
부울자료형(논리형)
부울자료형(논리형)은 다른 자료형과 달리 True 또는 False 값만 사용 가능
a = True
type(a)
b = False
type(b)
- 논리에서 True는 1을 의미하고 False는 0을 의미함
- 0이 아니면 무조건 1로 처리
비교연산자
- 어떠한 기능을 수행하는 기호로써, 두 변수의 값을 비교 시 사용
Index | 비교 연산자 | 설명 |
1 | X==Y | X와 Y의 값이 같은 경우 |
2 | X!=Y | X와 Y가 값이 같지 않은 경우 |
3 | X>=Y | X가 Y의 값보다 크거나 같은 경우 |
4 | X<=Y | X가 Y의 값보다 작거나 같은 경우 |
5 | X>Y | X가 Y의 값보다 큰 경우 |
6 | X<Y | X가 Y의 값보다 작은 경우 |
비교 연산자를 이용해 부울자료형(논리형) 데이터를 표현
print(10 == 10)
print(10 != 10)
print(10 >= 10)
print(10 <= 10)
print(10 > 10)
print(10 < 10)
문자열(String)
문자열은 글자를 표현하는 자료형
문자열객체는 따옴표 (' ' or " ")를 통해 표현 가능
- 반드시 동일한 따옴표의 형태로 표현되어야 함
문자열에서는 왜 ' '와 " "를 동시에 사용할까?
message = '철수가 "안녕"이라고 말했습니다.'
message #'철수가 "안녕"이라고 말했습니다.'
print(message) #철수가 "안녕"이라고 말했습니다.
' '을 사용할 때에는 escape 문자인 \'을 사용 (\n= 줄바꿈, \t= 탭 문자)
문자열 함수
- Split: 문자열의 공백을 기준으로 문자열을 나누어주는 함수
- Find: 문자열을 검색 후 해당하는 문자열이 있으면 문자열의 가장 앞자리 위치의 값을 나타내는 함수
- Replace: 문자열에서 특정 문자를 변환할 때 사용하는 함수
- Strip: 문자열에서 특정 문자 또는 문자열을 제거할 때 사용하는 함수
- Len: 문자열의 길이를 반환하는 함수
- Join: 문장열을 결합(join)하여 한 문자열로 만들 때 사용하는 함수
'구분자'.join(리스트)를 이용하면 리스트의 값과 값 사이에 구분자를 넣어서 하나의 문자열로 결합 - Partition: 주어진 문자열을 구분자를 기준으로 변수에 각각 할당하는 함수
- Format
- Capitalize: 두문자를 대문자로 변경
- Strip: 공백 제거
자료구조
자료구조(Data Structure)
자료를 효율적으로 저장하는 여러가지 구조를 의미함
- 가변속성(가변객체: Mutable): 속성의 내용을 변경할 수 있는 객체
- 불변속성(불변객체: Immutable): 속성의 내용을 변경할 수 없는 객체
가변속성(Mutable) 예제: List, Set, Dict 등
불변속성(Immutable) 예제: Int, Float, String, Tuple 등
리스트(List)
리스트는 순서가 있는 값들의 집합 (대괄호[]로 작성, 내부 원소는 ,로 구분)
리스트를 사용하는 경우는 서로 관련된 데이터를 차례로 접근해 처리하고 싶은 경우에 사용
단 index 범위를 벗어나면 에러 발생
리스트는 데이터들에게 하나하나 이름을 붙이지 않고 전체 집단에 하나의 이름을 부여한 다음, 숫자로 된 번호를 통해 각각의 데이터에 접근하는 방법
파이썬에서는 다양한 종류의 데이터를 하나의 리스트 안에 저장 가능
# 리스트의 형태
data=[10, 20, 30, 40, 50, 60] #data를 list 형태로 생성
print(data) #data의 값을 출력
print(type(data)) #data에 저장된 형태를 나타냄
리스트 인덱싱(List Indexing)
인덱싱이란 리스트에서 하나의 요소를 인덱스 연산자를 통해 접근하는 것을 의미
인덱스는 정수이며 항상 0에서부터 시작
인덱스는 0에서부터 시작하므로 전체 길이의 -1개 만큼의 개수를 가짐
data = ["사과", "배", "포도", "딸기", "토마토", "메론"]
print(data) #['사과', '배', '포도', 딸기', '토마토', '메론']
print(data[0]) #사과
리스트 슬라이싱(List Slicing) *중요
슬라이싱: 리스트 안에서 범위를 지정해 원하는 요소들을 선택하는 연산
data라는 변수에 저장되었을 경우 data[start:end:step]까지의 값을 표현
start, end 값이 생략되어 표현 가능
- [::2]의 의미: 처음부터 끝까지의 모든 원소들에 대해서 하나 걸러 하나씩 가져옴
- [::3]의 의미: 처음부터 끝까지의 모든 원소들에 대해서 두 개 걸러 하나씩 가져옴
- [::-1]의 의미: 역순으로 변환
리스트 기초연산
여러 개의 리스트를 하나의 리스트로 병합
리스트는 서로 다른 두 개 이상의 리스트 데이터를 병합 가능
data1 = [10, 20, 30, 40, 50]
data2 = [5, 10, 15, 20, 25]
data1 + data2
#[10, 20, 30, 40, 50, 5, 10, 15, 20, 25] 출력
리스트 병합은 대응되는 원소끼리 더해지는 것이 아님(단순 리스트 합체)
대응되는 원소끼리 더하려면 Numpy를 이용
데이터 삽입 및 삭제
리스트에 데이터를 추가하는 방법은 append 함수, insert 함수, extend 함수 사용
- append: 데이터를 마지막에 추가
- insert: 데이터를 지정한 위치에 추가
- extend: 데이터(리스트)를 마지막에 추가
리스트에 데이터를 삭제하는 방법은 Remove 함수, Pop 함수, Del 함수 사용
- Remove: 선언한 데이터 삭제
- Pop: 마지막 데이터 삭제
- Del: 해당 인덱스 데이터 삭제
[추가]append 함수
lists=[1, 100, 'python']
print(lists)
lists.append('py')
print(lists)
'''
출력 결과
[1, 100, 'python']
[1, 100, 'python', 'py']
'''
[추가]insert 함수
list=[1, 100, 'python']
print(list)
list.insert(1, 'py')
print(list)
'''
출력 결과
[1, 100, 'python']
[1, 'py, 100, 'python']
'''
[추가]extend 함수
list=[1, 2, 3]
print(list)
list.extend([4, 5, 6])
print(list)
'''
출력 결과
[1, 2, 3]
[1, 2, 3, 4, 5, 6]
'''
[삭제]Remove 함수
list=[1, 2, 3]
print(list)
list.remove(2)
print(list)
'''
출력 결과
[1, 2, 3]
[1, 3]
'''
#번외. 특정 원소가 여러번 들어있을 경우
# 특정 원소 모두 삭제 방법
list1=[1,2,3,1,2,3]
print(list)
while 3 in a:
list1.remove(2)
print(list1)
'''
출력 결과
[1,2,3,1,2,3]
[1,3,1,3]
'''
# 그냥 remove를 사용할 경우
list2=[1,2,3,1,2,3]
print(list2)
list2.remove(2)
print(list2)
'''
출력 결과
[1,2,3,1,2,3]
[1,3,1,2,3]
'''
[삭제]Pop 함수
list=[1,2,3,4,5]
print(list)
list.pop
print(list)
'''
출력 결과
[1,2,3,4,5]
[1,2,3,4]
'''
list=[1,2,3,4,5]
print(list)
list.pop(3)
print(list)
'''
출력 결과
[1,2,3,4,5]
[1,2,3,5]
'''
[삭제]Del 함수
list=[1,2,3,4,5]
print(list)
del list(3)
print(list)
'''
출력 결과
[1,2,3,4,5]
[1,2,3,5]
'''
리스트 내부 값 검색
- Min: 데이터 중 최솟값 검색
- Max: 데이터 중 최댓값 검색
- Count: 찾고자 하는 원소의 개수 검색
- In: 리스트 안에 선언한 데이터 검색
Min 함수
list=[1,2,3,4,5]
print(list)
print(min(list))
'''
출력 결과
[1,2,3,4,5]
1
'''
Max 함수
list=[1,2,3,4,5]
print(list)
print(max(list))
'''
출력 결과
[1,2,3,4,5]
5
'''
Count 함수
list=[1,2,3,4,5,1,3,5]
print(list)
print(list.count(3))
'''
출력 결과
[1,2,3,4,5,1,3,5]
2
'''
In 구문
list=[1,2,3,4,5]
print(list)
print(3 in list)
print(7 in list)
'''
출력 결과
[1,2,3,4,5]
True
False
'''
리스트 데이터 정렬, 역순 처리
- Sort: 데이터 순서 정렬
Sort 함수 (오름차순)
list=[5,2,3,4,1]
print(list)
list.sort()
print(list)
'''
출력 결과
[5,2,3,4,1]
[1,2,3,4,5]
'''
Sort 함수 (내림차순)
list=[5,2,3,4,1]
print(list)
list.sort(reverse=True)
print(list)
'''
출력 결과
[5,2,3,4,1]
[5,4,3,2,1]
'''
Sort 함수 (Key값 순)
good='나는 파이썬을 잘하고 싶다'
print(good)
list=good.split()
print(list)
list.sort(key=len)
print(list)
'''
출력 결과
나는 파이썬을 잘하고 싶다
['나는', '파이썬을', '잘하고', '싶다']
['나는', '싶다', '잘하고', '파이썬을']
'''
본 데이터분석기초실습은 [지능형 데이터 공학 및 응용 연구실 - 경상국립대학교 컴퓨터과학부]에서 수업한 자료를 토대로 정리하여 작성하였습니다.