
Happy New Year!
부트캠프를 시작한 지 3주 차가 되었는데 벌써 2025년 새해를 맞이했습니다. 모두 새해 복 많이 받으세요!
저는 신년 계획 중 "일찍 일어나기"를 목표로 삼았는데, 이번 주에는 한 번 성공했어요. 돌아오는 주에는 두 번 성공을 목표로 노력해보려고 합니다.😊
이번 주 부트캠프에서는 '파이썬'을 배웠습니다. 처음 접하는 프로그램 언어여서 프로그램 설치부터 많이 헤맸어요. 아직은 익숙치 않지만, 꾸준히 배우며 조금씩 알아가고 있어요. 그래서 이번주는 파이썬의 기초를 정리하고 복습하려고 합니다. 새해와 함께 시작된 부트캠프 여정이 점점 흥미로워지고 있습니다. 앞으로도 배우는 내용을 열심히 기록하며 성장하는 모습 보여드릴게요. 모두 새해 목표를 향해 힘내세요!
| 파이썬이란?
파이썬은 다음과 같은 이유로 널리 사용됩니다:
- 사용의 용이성: 직관적인 문법과 풍부한 문서로 인해 초보자도 쉽게 배울 수 있습니다.
- 다양한 라이브러리: 데이터를 분석하거나 시각화하고, 머신러닝 모델을 구현할 수 있는 도구들이 풍부합니다.
- 범용성: 웹 개발, 데이터 분석, 자동화, 크롤링 등 다양한 분야에서 활용 가능합니다.
파이썬으로 할 수 있는 작업은 다음과 같습니다:
- 업무 자동화: 엑셀, 파워포인트 등의 프로그램을 제어하고 반복적인 작업을 효율적으로 처리할 수 있습니다.
- 크롤링: 인터넷에서 필요한 데이터를 자동으로 수집하고 정리할 수 있습니다.
- 서비스 구현: 웹사이트나 애플리케이션의 서버를 구축하고 관리할 수 있습니다.
- 데이터 분석: 데이터를 처리하고 인사이트를 도출하여 의사결정에 활용할 수 있습니다.
- 머신러닝: 인공지능과 딥러닝 모델을 설계하고 구현할 수 있습니다.
| 파이썬 문법 정리
1. 자료형(Data Type)
1) 숫자형 : 숫자 데이터를 표현(연산 가능)
① 정수형(int) : 소수점이 없는 숫자 데이터를 저장한다.(양수, 음수, 0)
a = 123
print(a) #123
print(type(a)) #<class 'int'>
② 실수형(float) : 소수점이 있는 숫자 데이터를 저장한다.
a = 123.45
print(a) #123.45
print(type(a)) #<class 'float'>
▶ 숫자형 연산자
더하기
|
+
|
빼기
|
-
|
곱하기
|
*
|
나누기
|
/
|
몫
|
//
|
나머지
|
%
|
제곱
|
**
|
2) 문자형 : 문자 형태로 이루어진 데이터 타입. " " / ' '로 묶어서 표현함.
a = 'Hello World'
print(a) #Hello World
a = "Hello Python"
print(a) #Hello Python
① 문자형 결합과 반복
# 문자형 결합(+)
a = 'Hello, World'
b = 'Hello, Python'
c = a + b
print(c) # Hello, WorldHello, Python
# 문자형 반복(*)
a = 'Python'
print(a * 2) # PythonPython
② 인덱싱과 슬라이싱 : 변수[시작 인덱스 : 끝 인덱스 : 간격]
# 인덱싱 : [ ]를 통해 지정. 첫 번째 위치는 0, 맨 마지막 위치는 -1(공백도 한 칸을 차지)
a = 'Hello, World'
print(a[0]) #H
print(a[-1]) #d
print(a[5]) #,
# 슬라이싱 : 문자열의 부분을 추출할 때 사용
print(a[:]) #Hello, World
print(a[3:7]) #lo,
print(a[-5:]) #World
③ 문자열 함수
#len() : 문자열 길이 구하기
a = 'Hello, World'
print(len(a)) #12
print(a[len(a)-5:]) #World
# replace() : 문자열 교체
a = 'Python is too easy'
a.replace('easy', 'difficult') #Python is too difficult
대소문자 변환
|
||
upper() : 대문자로 변환
|
lower() : 소문자로 변환
|
capitalize() : 첫 글자만 대문
|
a = 'Flower'
a.upper()
|
a = 'FLOWER'
a.lower()
|
a = 'FLOWER'
print(a.capitalize())
|
FLOWER
|
flower
|
Flower
|
문자열 검색
|
||
find() : 찾는 문자열의 시작위치 반환
(찾는 문자 없으면 -1로 표시) |
index(): 찾는 문자열의 시작위치 반환
(찾는 문자 없으면 오류) |
count(): 찾는 문자열이 몇 번 등장하는 추출
|
a = 'hobby'
a.find('y')
|
a = 'hobby'
a.find('k')
|
a = 'hobby'
a.count('b')
|
4
|
-1
|
2
|
join() : 특정 문자열을 각각의 문자 사이에 삽입하여 출력
|
split() : 특정 문자열을 기준으로 문자열을 분리하여 출
|
print(",".join('hello'))
print(" ".join('HELLO'))
fruits_list = ['apple', 'banana', 'cherry']
a = " ".join(fruits_list)
print(a)
|
b = 'Hello,Python,Nice,to,Meet,you'
print(b.split(','))
c = "apple,banana,cherry"
fruits = c.split(",") # 리스트로 반환
print(fruits)
|
h,e,l,l,o
H E L L O
apple banana cherry
|
['apple', 'banana', 'cherry']
['Hello', 'Python', 'Nice', 'to', 'Meet', 'you']
|
strip() : 양쪽 공백 제거
|
rstrip() : 오른쪽 공백 제거
|
lstrip() : 왼쪽 공백 제거
|
a = ' Hi, flower!! '
print(a.strip())
|
a = ' Hi, flower!! '
print(a.rstrip())
|
a = ' Hi, flower!! '
print(a.lstrip())
|
Hi, flower!!
|
Hi, flower!!
|
Hi, flower!!
|
in : 특정 문자열 포함
|
not in : 특정 문자열 불포함
|
text = "Hello, Python"
print("Python" in text)
|
text = "Hello, Python"
print("Java" not in text)
|
True
|
True
|
④ 문자열 포맷팅 : 문자열 안에 어떤 값을 삽입하는 방법
# format() 함수 사용
num1 = 14
num2 = 17
a = 'My favorite numbers are {} and {}'.format(num1, num2)
# My favorite numbers are 14 and 17 print(a)
# 간략한 포맷팅
음식 = "떡볶이"
음료 = "커피"
print(f"I love eating {음식} and drinking {음료}.")
# I love eating 떡볶이 and drinking 커피.
3) 리스트형
- 여러 개의 데이터를 하나의 변수에 저장
- 요소들을 대괄호([ ])로 감싸고, 콤마(,)로 구분
- 리스트의 값은 생성 후에도 변경 가능 중복 허용
a = [1,2.222,3.1,0,-58] # [1, 2.222, 3.1, 0, -58]
b = ['life','is','too','short'] # ['life', 'is', 'too', 'short']
c = [1,-2,'life','is'] # [1, -2, 'life', 'is']
d = [1,2,['life','is',['too',3.14]]] # [1, 2, ['life', 'is', ['too', 3.14]]]
① 리스트의 인덱싱과 슬라이싱
# 리스트 인덱싱
fruits = ["apple", "banana", "cherry", "date"]
print(fruits[0]) # apple
print(fruits[-1]) # date
# 리스트 슬라이싱
print(fruits[1:3]) # ['banana', 'cherry']
print(fruits[:2]) # ['apple', 'banana'] (처음부터 2번째까지)
print(fruits[::2]) # ['apple', 'cherry'] (2칸씩 건너뜀)
② 리스트 함수
⒜ 추가
# append : 리스트의 끝에 값을 추가
fruits = ["apple", "banana"]
fruits.append("cherry")
print(fruits) # ['apple', 'banana', 'cherry']
# insert : 특정 위치에 값을 삽입
fruits.insert(1, "orange")
print(fruits) # ['apple', 'orange', 'banana', 'cherry']
⒝ 제거
fruits = ["apple", "banana", "cherry", "date"]
# remove : 지정된 값을 제거
fruits.remove("banana")
print(fruits) # ['apple', 'cherry', 'date']
# pop : 지정된 인덱스의 값을 제거하고 반환(인덱스 생략 시 마지막 값 제거)
last_fruit = fruits.pop()
print(last_fruit) # date
print(fruits) # ['apple', 'cherry']
# clear : 리스트의 모든 값을 제거
fruits.clear() print(fruits) # []
⒞ 검색
fruits = ["apple", "banana", "cherry", "apple"]
# index : 특정 값의 인덱스를 반환
print(fruits.index("apple")) # 0 (첫 번째 'apple'의 위치)
# count : 특정 값이 리스트에 몇 번 등장하는지 반환
print(fruits.count("apple")) # 2
⒟ 정렬
numbers = [3, 1, 4, 2]
# sort : 오름차순 정렬(기본값)
numbers.sort()
print(numbers) # [1, 2, 3, 4]
# reverse : 내림차순 정렬
numbers.reverse()
print(numbers) # [4, 3, 2, 1]
⒠ 복사
# copy : 리스트를 복사
original = [1, 2, 3]
copied = original.copy()
copied.append(4)
print(original) # [1, 2, 3]
print(copied) # [1, 2, 3, 4]
4) 튜플형
- 리스트[ ]와 비슷하게, ( )로 생성
- 불변 데이터 타입으로 수정이나 삭제가 불가능
- 저장된 순서를 유지, 인덱스를 통해 각 요소에 접근
- 중복 허용
t1 = () #()
t2 = ('a', 'b','c','d','e') #('a','b','c','d','e')
t3 = ('Hello','Python') #('Hello','Python')
t4 = (1, 2, 3, ('a','b')) #(1,2,3('a','b'))
(1) 튜플의 인덱싱과 슬라이싱
fruits = ("apple", "banana", "cherry", "date")
# 인덱싱 print(fruits[0]) # apple
print(fruits[-1]) # date
# 슬라이싱 print(fruits[1:3]) # ('banana', 'cherry')
print(fruits[:2]) # ('apple', 'banana')
print(fruits[::-1]) # ('date', 'cherry', 'banana', 'apple') (역순)
(2) 튜플의 함수
a = (1, 2, 3, 2, 4, 2)
# count
print(a.count(2)) # 3
# index
print(a.index(2)) # 1
# len
print(len(a)) # 6
# sum
print(sum(a)) # 14
# min
print(min(a)) # 1
# max
print(max(a)) # 4
# in
print(1 in a) # True
(3) 튜플의 연산
# 튜플 결합
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
combined = tuple1 + tuple2
print(combined) # (1, 2, 3, 4, 5, 6)
# 튜플 반복
repeated = tuple1 * 3
print(repeated) # (1, 2, 3, 1, 2, 3, 1, 2, 3)
# 언패킹
person = ("Alice", 25, "New York")
name, age, city = person
print(name) # Alice
print(age) # 25
print(city) # New York
5) 딕셔너리형
- 변수명 = {'키1':값, '키2':값, ...}
- 키(Key): 값(Value)의 쌍이 모여있는 사전 형태의 자료형으로 데이터 변경 가능함.
- 키는 중복될 수 없고, 리스트는 키가 될 수 없다.
- 위치로 인덱싱이 되지 않는다.
(1) 딕셔너리의 주요 특징
① 딕셔너리 생성
# 빈 딕셔너리 생성
empty_dict = {} # 값이 있는 딕셔너리 생성
info = {"name": "Alice", "age": 25, "city": "New York"}
print(info) # {'name': 'Alice', 'age': 25, 'city': 'New York'}
② 딕셔너리 키로 값 찾기
# 딕셔너리 키로 값 찾기
info = {"name": "Alice", "age": 25, "city": "New York"}
# 키로 값 가져오기
print(info["name"]) # Alice
print(info["age"]) # 25
③ 딕셔너리 변경
⒜ 추가 : 딕셔너리 변수명[추가할 키] = "추가할 값"
info = {"name": "Alice", "age": 25}
info["city"] = "New York"
print(info) # {'name': 'Alice', 'age': 25, 'city': 'New York'}
⒝ 수정
info["age"] = 26
print(info) # {'name': 'Alice', 'age': 26, 'city': 'New York'}
⒞ 삭제 : del 딕셔너리 변수명[삭제할 키]
# 특정 키 삭제
del info["city"]
print(info) # {'name': 'Alice', 'age': 25}
# 모든 키-값 삭제
info.clear()
print(info) # {}
(2) 딕셔너리 함수
① 반환 함수
- keys() : 모든 키를 반환
- values() : 모든 값을 반환
- items() : 모든 키 - 값의 쌍을 튜플 형태로 반환
- get() : 키에 해당하는 값을 반환, 키가 없으면 기본값을 반환
info = {"name": "Alice", "age": 25, "city": "New York"}
# keys
print(info.keys()) # dict_keys(['name', 'age', 'city'])
# values
print(info.values()) # dict_values(['Alice', 25, 'New York'])
# items
print(info.items()) # dict_items([('name', 'Alice'), ('age', 25), ('city', 'New York')])
# get
print(info.get("name")) # Alice
print(info.get("food", "Unknown")) # Unknown
② undate() : 다른 딕셔너리를 기존 딕셔너리에 업데이트
info = {"name": "Alice", "age": 25}
info.update({"city": "New York", "age": 26})
print(info) # {'name': 'Alice', 'age': 26, 'city': 'New York'}
③ pop() : 특정 키를 반환하고 딕셔너리에서 삭제
info = {"name": "Alice", "age": 25}
age = info.pop("age")
print(age) # 25
print(info) # {'name': 'Alice'}
④ zip() : 각각의 시퀀스에 동일한 인덱스에 위치한 요소들을 짝지어주는 역할
# 시퀀스의 길이가 같을 때 zip을 사용한 경우
keys = ["name", "age"]
values = ['Alice',27]
result = dict(zip(keys, values))
print(result) #{'name':'Alice', 'age':27}
# 시퀀스의 길이가 서로 다를 때 zip을 사용한 경우
keys = ["a", "b","c"]
values = [1,2]
result = dict(zip(keys, values))
print(result) #{'a':1, 'b':2}
6) 집합형
- 중복을 허용하지 않는 데이터 타입, 수학의 집합 개념을 구현한 자료 구조
- 중괄호 { }로 표현, set()을 사용
- 순서없고, 중복된 자료 자동 제거
- 리스트와 딕셔너리 제외한 자료형을 포함
- 데이터 추가나 제거 가능
# 빈 집합 생성
empty_set = set()
# 값이 있는 집합 생성
fruits = {"apple", "banana", "cherry", "apple"}
# 중복 제거
print(fruits) # {'apple', 'banana', 'cherry'}
# 리스트, 튜플로부터 집합 생성
numbers = set([1, 2, 2, 3, 4])
print(numbers) # {1, 2, 3, 4}
(1) 집합의 주요 연산
- union or | : 합집합
- intersection or & : 교집합
- difference or - : 차집합
- symmetric_difference or ^ : 대칭차집합
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 합집합
print(set1 | set2) # {1, 2, 3, 4, 5}
# 교집합
print(set1 & set2) # {3}
# 차집합
print(set1 - set2) # {1, 2}
# 대칭차집합
print(set1 ^ set2) # {1, 2, 4, 5}
(2) 집합의 함수
① 추가
- add() : 집합에 값 추가
fruits = {"apple", "banana"}
fruits.add("cherry")
print(fruits) # {'apple', 'banana', 'cherry'}
② 제거
- remove() : 값을 제거, 값이 없으면 에러 발생
- discard() : 값을 제거, 값이 없으면 아무 동작하지 않음
- clear() : 집합의 모든 요소를 제거
# remove
numbers = {1, 2, 3}
numbers.remove(2)
print(numbers) # {1, 3}
# discard
numbers.discard(4) # 에러 발생하지 않음
print(numbers) # {1, 3}
# clear
ruits = {"apple", "banana", "cherry"}
fruits.clear()
print(fruits) # set()
③ issubset() / issuperset()
- issubset() : 부분 집합 여부 확인
- issuperset() : 상위 집합 여부 확인
set1 = {1, 2}
set2 = {1, 2, 3}
print(set1.issubset(set2)) # True
print(set2.issuperset(set1)) # True
7) 불형
- True(1) / False(0) 두 가지 값만 가짐
- 조건식, 논리 연산, 제어문 등에 사용
is_hungry = True
is_tired = False
print(is_hungry) # True
print(is_tired) # False
(1) 불형의 주요 연산
① 논리 연산자
- and : 모 조건이 참일 때 True
- or : 하나라도 참이면 True
- not : 조건의 반대값 반
② 비교 연산자
==
|
같음
|
!=
|
같지 않음
|
<
|
작음
|
>
|
큼
|
<=
|
작거나 같음
|
>=
|
크거나 같음
|
(2) 불형의 함수
① bool() : 불형으로 반환
# 참으로 평가되는 값
print(bool(1)) # True
print(bool("hello")) # True
print(bool([1, 2])) # True
# 거짓으로 평가되는 값
print(bool(0)) # False
print(bool("")) # False
print(bool([])) # False
② any() : 하나라도 참이면 True 반환
values = [0, 0, 1]
print(any(values)) # True (1이 있어서 참)
③ all() : 모두 참이면 True 반환
values = [1, 2, 3]
print(all(values)) # True (모두 참)
values = [1, 0, 3]
print(all(values)) # False (0이 있어서 거짓)
2. 제어문
1) 조건문 - if
- if, elif, else를 사용하여 조건문 작성
- 특정 조건을 검사하여 참이면 실행, 거짓이면 그 다음 조건문 실행
(1) 기본구조
if 조건:
실행할 코드
elif 조건:
실행할 코드
else:
실행할 코드
2) 반복문 - while / for
- 반복되는 동작을 실행
- for : 시퀀스(리스트, 문자열, 튜플 등)의 각 요소를 순차적으로 가져와 작업을 수행
- while : 조건이 참인 동안 코드를 반복 실행
(1) for 문 구조
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
(2) while 문 구조
count = 0
while count < 3:
print("반복:", count)
count += 1 # count = count + 1
(3) 반복문에 자주 사용되는 키워드
① break : 반복문을 즉시 종료
② continue : 현재 반복을 건너 뛰고, 다음 반복으로 넘어감
③ pass : 아무 작업도 하지 않고, 반복문을 유지
(4) 반복문 함수
① range() : 숫자 범위를 생성, 시작-끝-증가를 지정
for i in range(1, 10, 2):
print(i)
② enumerate() : 인덱스와 값을 동시에 가져옴
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(index, fruit)
③ zip() : 시퀀스를 동시에 순회
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(f"{name} is {age} years old.")
④ reversed() : 리스트나 문자열을 역순으로 순회
for char in reversed("Python"):
print(char)
3. 파이썬 함수
1) def 함수
- 반복적으로 생성되는 코드들을 재활용하여 사용
- 호출 시에만 실행이 되는 일련의 코드 블록을 의미
(1) 함수 구조
def 함수명(매개변수):
실행할 문장
#(1) 매개변수가 있는 함수
def my_name(name):
print("제 이름은 " + name + "입니다.")
my_name("랑이")
#(2) 매개변수 지정도 가능
def my_name(name = "inseop"):
print("제 이름은 " + name + "입니다.")
#(3) 리턴(return)이 있는 함수
def sum(a, b): # a,b를 매개변수 (parameter)
result = a + b
return a+b
sum(3,4) # 3, 4를 인수 (arguments)
sum(a=3, b=4)
(2) 함수의 주요 요소
- 매개변수 : 함수 정의 시 입력값을 받기 위한 변수
- 인자 : 함수 호출 시 전달하는 값
def add(a, b): # a와 b는 매개변수
return a + b
print(add(2, 3)) # 2와 3은 인자
(3) lambda로 간결한 함수 만들기
# lambda로 함수만들기
twice = lambda x: x*2
print(twice(10)) #20
2) 라이브러리
(1) 표준 라이브러리 : 파이썬을 설치할 때 자동으로 설치
(2) 외부 라이브러리 : 기본으로 설치된 라이브러리가 아니므로 새로 설치 필요
① math : 수학 연산을 위한 함수
② random : 난수 생성을 위한 함수
③ datetime : 날짜와 시간을 다루는 함수
④ os : 운영 체제 작업을 위한 함수
⑤ sys : 파이썬 인터프리터와 관련된 작업을 수행하는 함수
⑥ json : JSON 데이터를 다루는 함수
4.클래스
- 객체를 생성하는 데 사용
- 속성과 메서드를 정의
1) 클래스 주요 요소
(1) 생성자 : __int__
- 객체를 생성할 때 호출되는 초기화 메서드
class Dog:
def __init__(self, breed):
self.breed = breed
dog = Dog("Golden Retriever")
print(dog.breed) # Golden Retriever
(2) 매서드
클래스 내부에서 정의된 함수로, 객체의 동작을 정의.
class Calculator:
def add(self, a, b):
return a + b
calc = Calculator()
print(calc.add(3, 5)) # 8
'DBA 부트캠프 기록' 카테고리의 다른 글
[패캠 BDA17] 데이터 분석가 필수 툴 SQL_v2 (9주차) (0) | 2025.02.14 |
---|---|
[패캠 BDA17] 데이터 분석가 필수 툴 SQL (8주차) (3) | 2025.02.08 |
[패캠 BDA17] 파이썬을 웹 크롤링과 데이터 분석 : 실전 가이드 (4주차) (3) | 2025.01.14 |
[패캠 BDA17] 기초 통계로 데이터 분석 완벽 이해 (2주차) (1) | 2025.01.12 |
[패캠 BDA17] 엑셀 데이터 분석 가이드 : 실전 활용법 (1주차) (4) | 2025.01.11 |