1주차 정리
1주차
수업 진행은 Google colab을 사용하여 진행한다.
01. Googl colab 사용 방법
shift + Enter : code cell 실행
ctrl + mm : 마크다운으로 변경
Latex(각종 수식 문법)
- 인라인 수식
- 마크다운 작성 중간에 들어가는 수식으로 $a + b = 10$ 이런 식으로 표현
- 표현 방법 : $a + b = 10$
- 블록 수식
- 하나의 칸을 모두 사용하여 수식을 작성
- \[a = 3, b = 4, a + b = 7\]
- 표현 방법 : $$ (수식 적기) $$
02. 파이썬 변수와 자료형
변수
- 변수란? 값이 저장될 수 있는 공간
- 원할 때 마다 변수에 들어있는 ‘값’을 바꿀 수 있다.
Stack과 Heap
stack - 표현 범위, 변수
Heap - 사용 가능한 파이썬의 모든 것(객체)
a = 10
stack : a
Heap : 10(10이라는 값을 갖는 객체, 메모리 주소값 발생)
a = 10 을 실행하면 10의 메모리 주소 값이 stack에 저장되어 있는 a한테 저장되는 것.
결론 : 메모리 주소값이 변수에 할당되고 해당 주소값을 따라 들어가서
내가 원하는 것을 사용할 수 있게 해준다.(포인터)
변수에 값이 들어가는 과정
- 변수의 선언 ( Declaration )
- 변수에 값을 할당 ( Assignment)
Comment(주석)
- 코드 설명 용도
자료형 ( Data Type )
파이썬은 기본적으로 4가지 자료형을 가진다.
- int, float, str, bool
Variable naming ( 변수 이름 규칙 )
- 단어 사이에 언더바(_)넣기 - 보통 변수
- student_name
- 단어 앞글자를 대문자로 - 보통 Class
- StudentName
상수
: 변하지 않는 수 (파이썬에는 상수가 없어용)
- 변수에 특별한 효과를 줘서 상수로 사람이 인지하게끔 한다.
1
2
3
# 파이썬에는 상수가 없지만, 관례적으로 상수처럼 생각하게 하는 방법
_jumin_number = "030611-xxxxxxx"
JUMIN_NUMBER = "030611-xxxxxxx"
03. 파이썬 문자열 다루기 ⭐(중요)
숨쉬듯 다룰 수 있도록 꾸준히 연습, 공부 꾸준히!!!
문자열이란?
- 문자들이 열거(나열)되어 있는 것(str)
- 순서(sequence)가 있다.
- 순서가 있다? 순번(index)이 있다.
따라서 문자열은 문자의 Sequence다.
Doc String
따옴표를 3개 이어서 쓰면 된다. ‘'’문자열’’’, “"”문자열”””, Doc String 안에 위치한 문자열은 무조건 적은대로 표현된다.
1
2
text = '''I said, I'm Student.'''
print(text)
출력 : I said, I’m Student.
1
2
3
4
5
6
text = """ 안냥
하세요
반갑
워요
"""
print(text)
출력 : 안냥 하세요 반갑 워요
시퀀스(Sequence) 다루기
- 문자열은 Sequence(순서)
- Sequence는 순번이 있다.
- 순번을 Offset Index
- 파이썬의 인덱스 종류
- 양수 인덱스
- 0 부터 시작
- 왼쪽에서 오른쪽으로 ++1
- 음수 인덱스
- -1부터 시작
- 오른쪽에서 왼쪽으로 –1
- 양수 인덱스
인덱스는 무조건 정수이다.
슬라이싱(Slicing) ⭐⭐⭐⭐⭐
- 인덱스를 사용해서 시퀀스를 잘라냄.
잘라서 새로운 시퀀스를 생성.
- [start : end : step]
- start ~ end-1 부분을 step 만큼 건너 뛰면서 잘라낸다.
- start, end, step 모두 생략 가능
- start 생략 : index 0부터 시작
- end 생략 : len(문자열)까지
- step 생략 : 기본 값 1
1
text[:] # 어쨌든 간에 슬라이싱(slicing)을 한 객체이기 때문에, text와는 다른 객체이다.
1
2
text = "안녕하세요!반갑습니다."
text[0:3] # start -> 0, end -> 3, step -> 1
출력 결과 : ‘안녕하’
1
2
3
# 음수 인덱스를 사용하는 것이 양수 인덱스 활용보다 효과적인 경우
image_file_full_name = "my_profile_good_filtered.jpg"
image_file_full_name[ : -4]
출력 결과 : ‘my_profile_good_filtered’
-step
- 기본 값은 1
- 지정한 숫자만큼 뛰면서 슬라이싱
- 부호(양수, 음수)를 이용해서 방향 설정도 가능
- 양수 : 정방향
- 음수 : 역방향
1
text[::2]
출력 결과 : ‘안하요반습다’
1
text[::-1] # step 자리에 음수를 넣으면 역방향
출력 결과 : ‘다니습갑반!요세하녕안’
1
2
3
4
5
# 안녕하세요!반갑습니다
text[8 : 3 : -2] # 8번째 시작, 3번째 끝, 뒤에서 2칸씩 띄워서
# 시작과 끝의 순서와 부호를 바꾸면 같아짐
text[-3 : -8 : -2] # -3번째 시작, -8번째 끝, 뒤에서 2칸씩 띄워서
출력 결과(동일) :’습반요’
문자열 함수
파이썬에는 문자열을 다룰 수 있는 여러 “기능(함수)”를 제공한다.
- 문자열 이어 붙이기
1 2 3 4 5
text1 = "hello" text2 = "world" # 문자열 끼리만 이어 붙일 수 있다. # text1 + 10 은 에러(concantenate) text1 + "10"
출력 결과 : ‘hello10’
1 2 3
# 정수를 문자열 형식으로 자료형으로 바꿔야한다. # 자료형을 바꾸는 행위를 Type Casting(형변환)이라고 한다. text + str(age)
출력 결과 : ‘내 나이는 : 20’
- 대/소문자화
1 2 3 4 5
# 모든 문자를 대문자로 만들기 - upper() text2.upper() # 모든 문자를 소문자로 만들기 - lower() "HELLO".lower()
출력 결과 : ‘WORLD’ ‘hello’
- 텍스트 데이터(자연어) 처리나 분석을 할 때 자주 사용된다.
1
2
3
4
5
6
7
8
9
10
1. Hello
2. HEllo
3. HeLLo
4. Bye
5. byE
사람의 인식 : 헬로우가 3번, 바이가 2번 등장 했구나!
컴퓨터의 인식 : Hello 1번, HEllo 1번, HeLLo 1번, Bye 1번, byE 1번
따라서 대소문자에 의해 다른 단어로 생각하지 않게 하기 위해서 텍스트 데이터를 소문자나 대문자로 통일합니다. 거의 대부분은 소문자로 통일
문자열 치환
치환 : A를 B로 바꾸는 것 (replace)
- 크롤링 할 때 쓸모없는 것들을 제거, 변경 등
1
2
text1 = "hello"
text1.replace("he","jo")
출력 결과 : ‘jollo’
문자열 포매팅
- 템플릿 만들기
- 문자열 내의 특정한 값을 변수로부터 동적(내가 필요할 때 , dynamic)으로 문자열을 생성
1
2
3
4
5
6
name = "최민주"
age = 23
# (정적) - 제 이름은 최민주입니다. 나이는 23살 입니다.
text = "제 이름은 " + name + "입니다. 나이는 " + str(age) + "살 입니다."
print(text)
출력 결과 : 제 이름은 최민주입니다. 나이는 23살 입니다.
1
2
3
4
# (동적) 문자열 포매팅 - 문자열의 형식을 미리 지정하여 필요할 때, 특정 부분을 변경할 수 있도록
text = "제 이름은 {}입니다. 나이는 {}입니다."
text.format(name,age)
print(text)
출력 결과 : 제 이름은 최민주입니다. 나이는 23입니다.
1
text.format("감자", 15)
출력 결과 : 제 이름은 감자입니다. 나이는 15입니다.
1
2
text = f"제 이름은 {name}입니다. 나이는 {age}입니다." # 포매팅
text
출력 결과 : 제 이름은 최민주입니다. 나이는 23입니다.
문자열 분리 (split)
- 단어 추출, 해시태그 등
- slice : 특정 부분을 인덱스를 활용해 잘라내기
- split : 특정 구분자를 이용해서 문자열을 쪼개기
1
2
text = "이제는 많이 추워진 것 같습니다"
text.split(" ") # 공백 기준으로 잘라짐 (list 형식)
출력 결과 : [‘이제는’, ‘많이’, ‘추워진’, ‘것’, ‘같습니다’]
1
2
3
# 블로그, SNS등의 자연어를 웹에서 수집하면 띄어쓰기가 많은 문제가 된다.
text = " 느그 서장 남천동 살제 "
text.split()
출력 결과 : [‘느그’, ‘서장’, ‘남천동’, ‘살제’]
- 좌우 공백 제거
1 2 3
text = "\n\n\nHello!!!!\n\n\n" # 좌 우 공백을 제거해주는 역할 text.strip()
출력 결과 : ‘Hello!!!!’
문자열 합치기
- ‘split’의 반대 개념
- 특정 문자열을 기준으로 리스트에 들어있는 문자열을 합쳐주는 역할
1
2
example = ["Hello", "Bye", "World", "Greeting"] # 리스트 형태
"#".join(example)
출력 결과 : ‘Hello#Bye#World#Greeting’
형 변환(Type Casting)
- 데이터의 자료형을 바꾸는 것
a = 10
float(a) -> 10.0
str(a) -> ‘10’
bool(a) -> true
bool(“aa”) -> True
bool(0) -> False
bool(“”) -> False
bool(0.0) -> False
int(True) -> 1
True + True -> 2
파싱(Pasing) ⭐⭐⭐⭐⭐⭐⭐
문자열을 다른 자료형으로 바꾸는 과정
-> 정보를 주고 받을 때 기본적으로 문자열 형태로 주고 받음문자열을 float으로 파싱 ```python
movie1 = “9.49” movie2 = “ 9.43 “ # 공백 있는 거 까지 바로 형변환 가능 (하지만 숫자 사이에 공백 있는 건 안됨!!!!) movie3 = “9.34점”
print(float(movie1)) print(float(movie2))
print(float(movie3)) # 오류 발생
1
2
3
4
5
6
문제 : 영화의 평점 평균을 구하자
movie3 = "9.34점" 에서 '점'을 빼서 float으로 파싱 해야 함.
```python