* python = interpreter 방식의 언어
≫ interpreter 방식의 언어란, 몇 줄의 code를 입력 후 enter를 치면 해당 부분이 바로 실행되고 정상처리/에러 여부를 알 수 있는 대화형 프로그래밍 언어이다
≫ 그 반대로 compiler 방식의 언어가 있는데, 이는 코딩을 모두 마치고 컴퓨터가 알아들을 수 있는 기계어 수준으로 한 번에 번역해서 실행해주는 언어이다
** 데이터 과학을 주 대상 업무로 사용한다면 한 줄 입력하고 실행하는 interpreter 방식이 훨씬 유리하고 효과적이다!
* 기초 문법
** 랜덤으로 내가 몰랐던 부분 계속 업데이트하는 방식으로 포스팅 정리!
≫ None이라는 값 존재
x = None
print(x) #None
≫ 세미콜론(;)은 한 줄의 코드를 나눠서 표현할 수 있다
print('hello, world'); print('1234')
"""
hello, world
1234
"""
≫ 한 줄에 여러 변수를 한꺼번에 지정할 수 있다
x, y, z = 10, 20, 30
print(x,y,z)
#10 20 30
≫ 한꺼번에 모든 변수에 순차적으로 값을 대입할 수 있다
a = b = c = 30
print(a,b,c)
#30 30 30
≫ 한 줄에 입력할 내용이 너무 길 때 역슬래시(\) 입력하고 다음 줄에 계속 이어서 작성 (원래 한 줄임)
a = "rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr\
eeeeeeeeeeeeeeeee"
a
#'rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrreeeeeeeeeeeeeeeee'
(+) 또는 """ 세 개를 입력하면 역슬래시 입력할 필요 없이 쉽게 보이는 대로 여러 줄 출력이 가능하다
print("""i love python
this is so much fun!
good luck everybody~""")
"""
i love python
this is so much fun!
good luck everybody~
"""
* 이름 표기 표준
→ Camel Case(카멜 케이스): 여러 단어가 합쳐진 상황에서 첫 단어만 첫 글자 소문자, 그 이후는 대문자로 표기하는 방식
* CamelCase는 주로 파이썬 class명에 사용된다.
helloWorld = 5
dataTalk = 7
letsGo = 9
print(helloWorld, dataTalk, letsGo)
#5 7 9
→ Pascal Case(파스칼 케이스): 나타나는 단어마다 모두 첫 글자 대문자로 표기하는 방식
HelloWorld = 1
DataTalk = 3
LetsGo = 2
print(HelloWorld, DataTalk,LetsGo)
#1 3 2
→ Snake Case(스네이크 케이스): 여러 단어로 이루어졌으며 단어 사이사이를 언더바(_)로 나타내는 방식
* Snake Case는 파이썬 함수, 변수명에 사용된다.
Hello_World = 4
Data_Talk = 6
Lets_Go = 8
print(Hello_World, Data_Talk, Lets_Go)
#4 6 8
* 문자열 format 함수 <format formatting>
→ format 함수는 "{}".format () 형태로 쓰이며 format 함수의 output은 string 문자열 형태이다
→ 아래 type 연산자를 활용하면 str으로 결과가 나옴이 확인 가능하다!
format_output = "{}".format (52273)
print(type(format_output),format_output)
# <class 'str'> 52273
≫ "{}".format()을 써서 치환하여 출력하기
→ 아래 첫번째 예와 같이 3000이라는 숫자가 { } 안에 들어가서 '3000원'이라는 결과가 출력된다
→ {}를 많이 설정하여 한꺼번에 수를 출력할 수 있다 (두 번째 예)
→ 정수, 문자열, bool형 모두 한꺼번에 {}안에 넣어서 출력이 가능하다
format_output_a = "{}원".format (3000)
print(format_output_a)
format_output_b = "{}, {}, {}".format (1,2,3)
print(format_output_b)
#숫자, 문자, bool 형 모두 치환 가능
format_output_c = "{}, {}, {}".format (1, "문자열", True)
print(format_output_c)
#3000원
#1, 2, 3
#1, 문자열, True
≫ "{:s}"이면 .format() 안에 문자열만 들어갈 수 있고, "{:d}"이면 .format() 안에 숫자형만 들어간다
output_s = "{:s}".format ("string")
print(output_s)
output_n = "{:d}".format (333)
print(output_n)
#string
#333
≫ 원하는 숫자 형태로 출력하기 - 자리수 & 음수 & 소수 자리수 & 정수로 표현
→ {}안에 4d로 표현되면 네 자리수의 정수로 표현을 한다
→ 4d앞에 0을 붙이면 해당 수가 들어가고 남은 자리에 모두 0을 표시한다
(0을 붙이지 않으면 남은 자리는 공백으로 표현됨 - 공백을 차지한다!)
→ 음수 역시 한 자리를 차지한다
→ {}안에 .2f로 표현되면 소수로 표현되는데 소수점 이하 두 자리수의 소수로 표현을 한다
→ {}안에 g로 표현되면 괄호 안의 수를 정수로 표현한다
output_4d = "{:04d}".format(52)
print(output_4d)
output_minus = "{:05d}".format(-52)
print(output_minus)
output_float = "{:15.2f}".format(52.273)
print(output_float)
output_floatrid = "{:g}".format(50.0)
print(output_floatrid)
- 출력결과 -
0052
-0052
52.27
50
* 문자열 활용
≫ len()을 통해 문자열에 속한 글자의 개수를 구할 수 있다 (띄어쓰기나 .과 같은 특수문자도 카운팅된다)
hello = "안녕 하세요."
len(hello)
#7
≫ + 연결 연산자를 통해 문자열과 문자열끼리 서로 연결이 가능하다
- 그러나 언제까지나 문자열끼리만 연결 가능
- 숫자형과 문자형은 서로 연결이 불가능하다
- 이럴 경우 str()함수를 이용하여 문자형으로 바꿔준다 (int()는 그 반대로 숫자형으로 바꿔줌)
name = "DaTALK"
position = "DS"
num = 2
print(name + position)
print(name + num)
"""
DaTALKDS
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-37-c61e77748ba8> in <module>
4
5 print(name + position)
----> 6 print(name + num)
TypeError: can only concatenate str (not "int") to str
"""
print(name + str(num))
# DaTALK2
≫ * 연산자를 통해 동일한 문자열을 여러 번 반복하여 출력할 수 있다
name = "Hello"
times = 3
print(name*times)
#HelloHelloHello
≫ replace 활용
- 바꿀 문자열을 대체하여 새 문자열로 바꿀 수 있다
s = 'hello, world!'
s.replace('world!', 'Python')
#'hello, Python'
≫ split 활용
- split(기준문자열)
- 기준문자열을 기준으로 본 문자열을 분리해 준다
- list로 반환해줌
- 공백일 경우 띄어쓰기 기준으로 분리
s = 'apple pear grape'
s.split()
#['apple', 'pear', 'grape']
name='ryan,joe'
name.split(',')
#['ryan','joe']
- ex) split(":")는 :을 기준으로 각 변수에 각각 저장된다 (원하는 기준문자를 split() 내부에 집어넣음)
hour, minute = input('시와 분을 입력하세요: ').split(":")
print(hour + "시 " + minute + "분")
#시와 분을 입력하세요: 3:30
#3시 30분
- 여기서 expand=True일 경우 split으로 분리된 각 문자열의 결과가 dataframe의 형태로 저장된다..!
≫ join 활용
- join(list)
- x.join(list): x를 기준으로 list 내의 모든 원소를 서로 이어붙여 한 string을 생성
dash = '-'
dash.join(['010','1234','5678'])
#'010-1234-5678'
≫ upper & lower
- upper) 소문자를 대문자로
- lower) 대문자를 소문자로
s = 'python'
s.upper()
#'PYTHON'
s = 'PYTHON'
s.lower()
#'python'
≫ strip
- lstrip) 왼쪽을 공백 처리
- rstrip) 오른쪽을 공백 처리
s = " python "
s.lstrip() #'python '
s.rstrip() #' python'
s.strip() #'python'
- 삭제할 문자를 괄호 안에 넣어 삭제할 수 있다
- 여러 삭제할 문자를 한 번에 넣을 수도 있음
s = ',python'
s.lstrip(',')
#'python'
k = ',python.'
k.strip(',.')
#'python'
≫ zfill
- 몇 자리의 수로 만들어 나머지의 숫자를 zero 0으로 채울 때 사용
print('35',zfill(4)) #0035
print('1',zfill(4)) #0001
print(01) #error
print('01') #01
≫ find(찾을 문자열)
- find() 안에 찾을 문자열의 index를 반환해준다 (default: 왼쪽부터)
- 오른쪽부터 찾고 싶다면 rfind('문자열') 사용
- 만약 찾고자 하는 문자열이 없다면 -1을 반환
s = 'apple pineapple'
s.find('pl') #2
s.rfind('pl') #12
s.find('xl') #-1
≫ startswith (원하는 문자열로 시작하는 문자열을 찾을 경우) / endswith (~ 끝나는 문자열) & str.contains?
- 원하는 문자열로 (시작/끝)난다면 True, 아니면 False인 bool형을 반환해준다
- str.startswith , str.endswith, str.contains로 Series & Dataframe 모두 활용이 가능하지만, contains는 단독 string에는 쓰일 수 없다는 점! 구별되니 기억하도록 하자 :)
≫ count(셀 문자열)
- count()를 통해 특정 문자열의 개수를 반환해준다
s = 'apple'
s.count('pl') #1
* input
→ 문자열을 입력 받기를 요청한다. 입력한 문자열이 출력됨
→ 입력받은 문자열을 변수에 저장할 수 있음
- 여기서 문자열의 형태로 저장됨
s = input('문자열을 입력하세요: ')
print(s)
#문자열을 입력하세요: 안녕하세요
#안녕하세요
※ 숫자를 입력하더라도 str 형태임 - 따라서 int 또는 float 함수를 사용해 강제 형 변환해야 한다 (if needed) ※
num1 = int(input('숫자1을 입력하세요: '))
num2 = int(input('숫자2를 입력하세요: '))
print(num1+num2)
#숫자1을 입력하세요: 30
#숫자2를 입력하세요: 10
#40
- 편의성을 위해 두 개의 숫자를 한 번에 입력받을 수 있다 → split() 사용 (세 개 이상도 가능)
♠ map()
→ map()는 두 번째 인자를 첫 번째 인자형으로 바꿔주는 함수이다.
→ 문자의 숫자형 변환을 사용할 때 많이 쓰는 함수
a,b = map(int, input('숫자 두 개 입력: ').split())
print(a+b)
#숫자 두 개 입력: 2 3
#5
→ or 리스트/튜플을 지정된 함수로 처리해주는 함수
- tuple의 경우 원본 tuple 변경이 아닌 새로운 tuple 생성
list(map(function_name, list_name))
tuple(map(function_name, tuple_name))
*출처) 2021 공공데이터 청년인턴(일경험수련생) 상시교육
'Python > Fundamentals' 카테고리의 다른 글
시계열 데이터 - datetime (0) | 2022.03.24 |
---|---|
list comprehension (0) | 2022.03.20 |
Module & Package (0) | 2022.03.19 |
python intro. (03) (0) | 2022.03.19 |
python intro. (01) (0) | 2022.03.18 |
댓글