스파르타클럽 내일배움캠프 QA/QC 5기 03/17 TIL

2026. 3. 17. 20:37내일배움캠프 TIL

오늘은 새로운 주차를 맞아 새로운 팀을 편성하고 데이터 분석 파이썬 종합반 1, 2강과 데이터 리터러시 1강, 임영재 튜터님의 특강을 들었다. 영재 튜터님의 특강에서는 파이썬의 에러를 관리하는 방법과 자료형에 대해서 수시로 체크하는 습관을 가지라는 내용이 가장 기억에 남았다. 새로운 팀에서는 앞으로 진행할 아티클 스터디를 정하는 시간을 가졌다.

 

챕터 1

1-1: 이번에 배울 것

파이썬을 배우는 이유는 문법이 간결해서 배우기 쉽고 데이터 분석에 필요한 도구(Pandas, Matplotlib 등)가 정말 잘 갖춰져 있기 때문이다. 단순히 코딩을 배우는 게 아니라 데이터를 불러오고, 전처리하고, 시각화하는 전 과정을 파이썬으로 할 수 있다는 게 핵심이다.

1-2: 환경 세팅하기

본격적인 공부를 위해 구글 코랩 환경을 만들었다. 컴퓨터에 설치할 필요 없이 브라우저에서 바로 실행할 수 있어서 편하다. 구글 드라이브에 전용 폴더를 만들어서 파일을 관리하기로 했다.

1-3: Colab 주요 단축키

작업 효율을 높이기 위해 자주 사용하는 단축키들이다.

  • 실행: Shift + Enter
  • 셀 추가: Ctrl + M + A(위), Ctrl + M + B(아래)
  • 셀 삭제: Ctrl + M + D
  • 셀 유형 변경: Ctrl + M + M
  • 셀 분할: Ctrl + M + - 

1-4: 출력문

가장 기본 중의 기본인 print() 함수를 배웠다. 내가 짠 코드의 결과가 맞는지 확인하거나 에러를 잡을 때 수시로 쓰게 된다. 문자를 출력할 때는 따옴표("")를 써야 하고, 여러 값을 한꺼번에 출력하고 싶을 땐 쉼표(,)로 구분해주면 된다. 아주 쉽지만 제일 중요한 도구다.

x = 10
print("변수 x의 값은", x, "입니다.")

1-5: 변수와 데이터 타입

파이썬은 변수에 값을 넣는 순간 자동으로 그 종류가 결정되는 동적 타이핑 방식을 사용한다.

 

변수의 종류 (데이터 타입)

  • 숫자열 (Numeric)
    • 정수(int): 10, -5, 0처럼 소수점이 없는 숫자. 주로 개수나 횟수를 셀 때 사용한다.
    • 실수(float): 3.14, -0.01처럼 소수점이 있는 숫자. 데이터 분석에서 평균이나 비율을 계산할 때 많이 사용된다.
  • 문자열 (str)
    • "Hello", '파이썬'처럼 따옴표로 감싸진 텍스트 데이터로, 숫자라도 "123"처럼 따옴표를 붙이면 문자로 취급된다.
  • 불리언 (Boolean)
    • 조건이 참(True) 혹은 거짓(False)인지 나타내는 데 사용된다.
name = "Alice"
greeting = 'Hello, World!'

full_greeting = greeting + " My name is " + name
print(full_greeting)


num1 = 10
num2 = 3.14

sum_result = num1 + num2
diff_result = num1 - num2
product_result = num1 * num2
division_result = num1 / num2
integer_division_result = num1 // num2
remainder_result = num1 % num2


is_raining = True
is_sunny = False

x = 10
y = 5

greater_than = x > y
print(greater_than)

 

 

입력문

 

print()가 데이터를 외부로 보여주는 출력문이라면, input()은 사용자로부터 데이터를 받는 입력문이다.

  • 기본 사용법: 변수 = input("입력문")와 같은 형태로 작성한다. 사용자가 입력한 값은 지정된 변수에 할당된다.
  • 데이터 타입의 함정: input()을 통해 받은 모든 데이터는 기본적으로 문자열로 처리된다. 숫자를 입력하더라도 파이썬은 이를 텍스트로 인식한다.
  • 형변환의 필요성: 입력받은 숫자로 산술 연산을 수행하려면 반드시 자료형을 강제로 변환해야 한다.
    • int(input()): 정수로 변환
    • float(input()): 실수로 변환
num1 = int(input("첫 번째 숫자를 입력하세요: "))
num2 = int(input("두 번째 숫자를 입력하세요: "))
sum = num1 + num2
print("두 숫자의 합은", sum, "입니다.")

 

챕터 2

2-1: 이번에 배울 것

데이터 분석의 핵심인 리스트, 튜플, 딕셔너리를 배웠다. 방대한 데이터를 체계적으로 관리하고 조작하기 위해서는 이러한 자료구조를 이해하는 것이 필수적이다.

2-2: 리스트 기본 사용법

리스트는 파이썬에서 가장 자주 사용되는 데이터 구조로, 여러 항목을 순서대로 담을 수 있는 가변 시퀀스이다. 대괄호([])를 사용하여 생성한다.

  • 인덱싱(Indexing): 리스트의 특정 위치에 접근하는 방법이다. 파이썬은 숫자를 0부터 센다.
  • 값 추가 및 삽입: append()를 사용하여 맨 뒤에 값을 추가하거나, insert(인덱스, 값)로 원하는 위치에 값을 끼워 넣을 수 있다.
  • 값 제거: del 리스트[인덱스]나 pop(인덱스)를 사용하여 특정 위치의 값을 삭제할 수 있다.
# 리스트 생성
my_list = [1, 2, 3, 4, 5]

#리스트의 다양한 메서드(Methods)
my_list.append(6) # 리스트에 새로운 항목 추가
print(my_list)  # 출력: [1, 2, 3, 4, 5, 6]

my_list.extend([7, 8, 9]) # 다른 리스트의 모든 항목을 추가
print(my_list)  # 출력: [1, 2, 3, 4, 5, 6, 7, 8, 9]

my_list.insert(2, 10) # 두 번째 위치에 값 삽입
print(my_list)  # 출력: [1, 2, 10, 3, 4, 5, 6, 7, 8, 9]

my_list.remove(3) # 값 3 삭제
print(my_list)  # 출력: [1, 2, 10, 4, 5, 6, 7, 8, 9]

popped_value = my_list.pop(5) # 다섯 번째 위치의 값 제거하고 반환
print(popped_value)  # 출력: 6
print(my_list)  # 출력: [1, 2, 10, 4, 5, 7, 8, 9]

print(my_list.index(4)) # 출력: 3 (값 4의 인덱스)

print(my_list.count(7)) # 출력: 1 (값 7의 개수)

my_list.sort() # 리스트 정렬
print(my_list)  # 출력: [1, 2, 4, 5, 7, 8, 9, 10]

my_list.reverse() # 리스트 역순으로 뒤집기
print(my_list)  # 출력: [10, 9, 8, 7, 5, 4, 2, 1]

2-3: 리스트 고급 사용법

리스트를 더 정교하게 다루기 위한 슬라이싱과 정렬 기능을 배운다.

  • 슬라이싱(Slicing): 리스트[시작:끝:단계] 구조를 통해 일부분을 추출한다. 끝 인덱스는 포함되지 않으므로 원하는 위치보다 +1을 해줘야 한다.
  • 정렬(Sorting): sort() 메서드를 사용하여 데이터를 오름차순으로 정렬한다. reverse=True 옵션을 주면 내림차순 정렬도 가능하다.
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 1. 일부분만 추출하기
print(my_list[2:5])   # 출력: [3, 4, 5]

# 2. 시작 인덱스 생략하기 (처음부터 추출)
print(my_list[:5])    # 출력: [1, 2, 3, 4, 5]

# 3. 끝 인덱스 생략하기 (끝까지 추출)
print(my_list[5:])    # 출력: [6, 7, 8, 9, 10]

# 4. 음수 인덱스 사용하기 (뒤에서부터 추출)
print(my_list[-3:])   # 출력: [8, 9, 10]

# 5. 간격 설정하기 (특정 간격으로 추출)
print(my_list[1:9:2]) # 출력: [2, 4, 6, 8]

# 6. 리스트 전체를 복사하기
copy_of_list = my_list[:]
print(copy_of_list)   # 출력: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 7. 리스트를 거꾸로 뒤집기
reversed_list = my_list[::-1]
print(reversed_list)  # 출력: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

# 리스트를 오름차순으로 정렬하기
my_list.sort()

# 리스트를 내림차순으로 정렬하기
my_list.sort(reverse=False)

2-4: 튜플

튜플은 리스트와 유사하지만, 한 번 생성되면 요소를 추가, 삭제, 수정할 수 없는 불변 시퀀스이다. 소괄호(())를 사용하여 생성한다.

  • 데이터 보호: 값이 변하면 안 되는 중요한 데이터를 안전하게 보관하고 데이터의 무결성을 유지하는 데 사용된다.
  • 특징: 리스트보다 메모리 효율이 좋으며, 인덱싱과 슬라이싱은 리스트와 동일하게 사용할 수 있다.
my_tuple = (1, 2, 3, 'hello')
# my_tuple[0] = 10  <- 수정 시도 시 에러 발생

2-5: 딕셔너리

딕셔너리는 키와 값이 한 쌍으로 이루어진 자료구조이다. 중괄호({})를 사용하여 생성하며, 사전에서 단어를 찾듯 키를 통해 값을 빠르게 찾을 수 있다.

  • 키의 유일성: 키는 중복될 수 없지만, 값은 중복될 수 있다.
  • 해시 테이블: 내부적으로 해시 테이블 구조로 구현되어 있어 데이터가 많아도 검색 속도가 매우 빠르다.
  • 활용: 학생 성적표나 도시별 인구수처럼 데이터 간의 관계를 명확히 표현해야 할 때 유용하다.
# 딕셔너리 생성
my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}

# keys() 메서드 예제
keys = my_dict.keys()
print("Keys:", keys)  # 출력: dict_keys(['name', 'age', 'city'])

# values() 메서드 예제
values = my_dict.values()
print("Values:", values)  # 출력: dict_values(['John', 30, 'New York'])

# items() 메서드 예제
items = my_dict.items()
print("Items:", items)  # 출력: dict_items([('name', 'John'), ('age', 30), ('city', 'New York')])

# get() 메서드 예제
age = my_dict.get('age')
print("Age:", age)  # 출력: 30

# pop() 메서드 예제
city = my_dict.pop('city')
print("City:", city)  # 출력: New York
print("Dictionary after pop:", my_dict)  # 출력: {'name': 'John', 'age': 30}

# popitem() 메서드 예제
last_item = my_dict.popitem()
print("Last item popped:", last_item)  # 출력: ('age', 30)
print("Dictionary after popitem:", my_dict)  # 출력: {'name': 'John'}