1. 오늘 학습 목표
- 허진성 튜터님과 5주차 강의에서 평소에 궁금했던 것들을 적어보았다.
2. 오늘 학습 한 내용
파이썬 알면 좋은 것들
- f-string
x = 10
print(f"변수 x의 값은 {x}입니다.")
- 이게 뭔지 대충 알지만 제대로 어떻게 쓰는 건지 궁금했다.
- List comprehension
# 기본적인 구조
[표현식 for 항목 in iterable if 조건문]
- 다른 사람들 코드보면 윗줄에 이런식으로 적혀있었는데 이젠 나도 사용할 수 있을 것 같다.
- Lambda
add = lambda x, y: x + y
print(add(3, 5)) # 출력: 8
square = lambda x: x ** 2
print(square(4)) # 출력: 16
# filter(조건 함수, 반복 가능한 데이터)
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # 출력: [2, 4, 6, 8, 10]
# map(함수, 반복 가능한 데이터)
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers) # 출력: [1, 4, 9, 16, 25]
- 보통 람다는 사용을 권하진 않지만 데이터 분석할 때 특히, pandas를 사용할 때, 유용하다고 하셔서 대표적인 것들만 적어보았다.
- glob
import glob
# 현재 경로의 모든 파일을 찾기
file_list1 = glob.glob('*')
# 단일 파일 패턴으로 파일을 찾기
file_list2 = glob.glob('drive')
# 디렉토리 안의 모든 파일 찾기
file_list3 = glob.glob('sample_data/*')
# 특정 확장자를 가진 파일만 찾기
file_list4 = glob.glob('sample_data/*.csv')
- glob 함수는 파일 시스템에서 파일을 찾을 때 사용되는 도구인데, 이 또한, 데이터 분석에 유용할 것 같아서 적어보았다.
- split
sentence = "Hello, how are you doing today?"
words = sentence.split()
print(words) # 출력: ['Hello,', 'how', 'are', 'you', 'doing', 'today?']
data = "apple,banana,grape,orange"
fruits = data.split(',')
print(fruits) # 출력: ['apple', 'banana', 'grape', 'orange']
words = ['Hello,', 'how', 'are', 'you', 'doing', 'today?']
sentence = ' '.join(words)
print(sentence) # 출력: Hello, how are you doing today?
fruits = ['apple', 'banana', 'grape', 'orange']
data = ','.join(fruits)
print(data) # 출력: apple,banana,grape,orange
text = """First line
Second line
Third line"""
lines = text.split('\n')
print(lines) # 출력: ['First line', 'Second line', 'Third line']
sentence = "Hello, how are you doing today?"
words = sentence.split()
first_three_words = words[:3]
print(first_three_words) # 출력: ['Hello,', 'how', 'are']
text = " Hello how are you "
cleaned_text = text.strip()
words = cleaned_text.split()
print(words) # 출력: ['Hello', 'how', 'are', 'you']
- 스플릿은 이전 TIL에 적은 적이 있지만 까먹기도 했고 정리가 잘 되어 있어 다시 적었다.
- Boolean
import numpy as np
# 배열 생성
arr = np.array([1, 2, 3, 4, 5])
# 불리언 배열 생성 (조건에 따라 True 또는 False 값을 갖는 배열)
condition = np.array([True, False, True, False, True])
# 불리언 인덱싱을 사용하여 조건에 맞는 요소 선택
result = arr[condition]
# 결과 출력
print("Result using boolean indexing:", result) # 출력: [1 3 5]
# 불리언 인덱싱을 사용하여 배열에서 짝수인 요소만 선택
evens = arr[arr % 2 == 0]
# 결과 출력
print("Even numbers using boolean indexing:", evens) # 출력: [2 4]
- 다들 불리언 불리언 하는데 막상 TIL에 적고 제대로 된 개념은 적은 적이 없던 것 같아서 적어보았다.
불리언은 Numpy를 사용하여 불리언 인덱싱을 수행하고 pandas에서 데이터를 조건에 맞게 선택할 때 많이 사용된다.
- Class (너무 길어서 접은글로 작성)
- 클래스의 기본 구조
class ClassName:
def __init__(self, parameter1, parameter2):
self.attribute1 = parameter1
self.attribute2 = parameter2
def method1(self, parameter1, parameter2):
# 메서드 내용 작성
pass
__init__ 메서드는 클래스의 생성자로 객체가 생성될 때 호출, 메서드들은 클래스의 동작을 정의, 매세드의 첫 번째 매개변수로 self를 반드시 사용(이는 해당 메서드가 속한 객체를 가리킨다)
- 클래스와 객체의 관계
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# 객체 생성
person1 = Person("Alice", 30)
person2 = Person("Bob", 25)
- 다형성
class Animal:
def sound(self):
print("Some generic sound")
class Dog(Animal):
def sound(self):
print("Woof")
class Cat(Animal):
def sound(self):
print("Meow")
# 다형성 활용
animals = [Dog(), Cat()]
for animal in animals:
animal.sound()
☝🏻여기서 잠깐, 메서드와 속성은?
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
print("멍멍")
속성은 self.name = name 같은 정보를 말한다.
메서드는 bark() 같은 명령, 행위를 말한다.
- 클래스는 객체 지향 프로그래밍의 중요한 개념 중 하나인데, 객체 지향 프로그래밍(OOP)은 현실 세계의 사물을 모델링하여 프로그래밍하는 방법으로, 이를 통해 코드의 재사용성과 유지보수성을 향상시킬 수 있다.
🤷🏻♂️알겠는데 그냥 편하게 쓰던 함수 쓰면 안됨?
- 예를 들어, 강아지 이름만 출력한다던지 이런 단순한건 함수가 편하지만, 강아지마다 이름, 나이, 품종, 몸무게, 짖기, 먹기, 산책하기 등등 정보가 많아지면 함수만으로 쓰기엔 지저분해지기 때문에 클래스를 사용한다.😵💫🔨
class Dog:
def __init__(self, name, age, weight):
self.name = name
self.age = age
self.weight = weight
def bark(self):
print(f"{self.name}가 멍멍!")
def eat(self):
print(f"{self.name}가 밥을 먹습니다.")
dog1 = Dog("Buddy", 3, 5)
dog2 = Dog("Choco", 2, 4)
dog1.bark()
dog2.eat()
Tip. 다른 개발자들에겐 필요없을 수 있지만 데이터 분석에는 필요한 문법들이 꽤 있다.
3. 오늘의 과제 - 튜터님 과제 풀어보기
문제 1

내가 푼 답
def solution(n):
answer = []
for i in range(1, n):
if n % i == 1:
answer.append(i)
return min(answer)
print(solution(10))
출력
3
문제 2
배경
소시지 생산 공장에서 모든 제품은 HACCP 테스트를 받아야 하며, 각 제품은 규격에 따라 중량 기준을 만족해야 합니다. HACCP 검사를 받지 못했거나, 중량이 기준에 미달하는 제품은 빠르게 식별되어야 합니다. 또한, 공장에서 검사 또는 재처리가 필요한 품목의 비율을 계산하여 전반적인 품질 관리 상태를 확인하는 것이 중요합니다.
목표
- HACCP 테스트를 받지 못한 품목 리스트를 반환하는 함수
- HACCP 미완료 품목 중에서 중량 미달에 해당하는 품목의 갯수를 반환하는 함수
데이터
- HACCP 테스트 데이터: 검사된 품목 리스트로 제공됩니다.
- 전체 품목 데이터: 딕셔너리 형태로 제공되며, 각 품목의 이름과 중량 정보가 포함됩니다.
- 중량 기준: 각 품목의 중량이 100g 이상이어야 합니다.
주어진 데이터
# 전체 품목 데이터 (품목명: 중량(g))
factory_products = {
"Sausage_A": 90,
"Sausage_B": 120,
"Sausage_C": 110,
"Sausage_D": 115,
"Sausage_E": 98,
"Sausage_F": 70,
"Sausage_G": 101
}
# HACCP 검사를 받은 품목 리스트
haccp_tested = ["Sausage_A", "Sausage_B", "Sausage_D"]
# 중량 기준 (g)
weight_standard = 100
def untested(factory_products,haccp_tested):
return HACCP 미검사 품목 리스트
def underweight(factory_products):
return untested 항목 중 중량미달에 해당하는 품목의 갯수
내가 푼 답
# 전체 품목 데이터 (품목명: 중량(g))
factory_products = {
"Sausage_A": 90,
"Sausage_B": 120,
"Sausage_C": 110,
"Sausage_D": 115,
"Sausage_E": 98,
"Sausage_F": 70,
"Sausage_G": 101
}
# HACCP 검사를 받은 품목 리스트
haccp_tested = ["Sausage_A", "Sausage_B", "Sausage_D"]
# 중량 기준 (g)
weight_standard = 100
def untested(factory_products, haccp_tested):
untested_products = []
for item in factory_products:
if item not in haccp_tested:
untested_products.append(item)
return untested_products
print(untested(factory_products, haccp_tested))
def underweight(factory_products, weight_standard):
underweight_products = []
for item in factory_products:
if factory_products[item] < weight_standard:
underweight_products.append(item)
return len(underweight_products)
print(underweight(factory_products, weight_standard))
출력
['Sausage_C', 'Sausage_E', 'Sausage_F', 'Sausage_G']
3
🔔100점입니다~!
나의 간단 소감
- 이제 좀 코드를 쓸 줄 알게 되니까 사소하게 모르는 것들이 많이 생겼는데 이번 강의도 그렇고 허진성 튜터님의 세션을 통해 많은 궁금증들을 해결했다. 굉장히 유익한 시간이었다. 오늘은 매우 밀도 높은 하루였다.
사실 과제는 어제 했던 건데 일정이 바빠서 못적고 오늘 적었다. 놀랍게도 코드는 내가 아무것도 안보고 직접 타이핑해서 적었다는 것이다!!!!!!!! (물론, 모르는건 찾아가며 했지만..) 지금 다시해도 바로 적을 수 있다. 하지만 방심은 금물. 정진하자.
'내일배움캠프' 카테고리의 다른 글
| [본캠프] 데이터기반 QA/QC 부트캠프 12일차 (1) | 2026.05.27 |
|---|---|
| [본캠프] 데이터기반 QA/QC 부트캠프 11일차 (0) | 2026.05.26 |
| [본캠프] 데이터기반 QA/QC 부트캠프 9일차 (0) | 2026.05.21 |
| [본캠프] 데이터기반 QA/QC 부트캠프 8일차 (0) | 2026.05.20 |
| [본캠프] 데이터기반 QA/QC 부트캠프 7일차 (1) | 2026.05.19 |