내일배움캠프_QAQC 트랙 1기/강의 요약

[내일배움캠프] 데이터 분석 파이썬 종합반 3주차

hyewonnnn 2024. 12. 24. 16:15

학습 목표

  • 조건문을 이해하고 특정 조건에 해당되었을 때 코드가 실행되게 할 수 있다
  • 반복문을 이해하고 코드를 원하는 만큼 반복되게 할 수 있다

1. 조건문

1) 조건문이란?

 : 특정 조건이 참(True)인 경우에만 특정 코드 블록을 실행

  파이썬에서 조건문은 if, elif(else if의 줄임말), else 키워드를 사용하여 구성

# 조건문의 기본 구조
x = 10
if x > 0:
    print("양수입니다.")
elif x < 0:
    print("음수입니다.")
else:
    print("0입니다.")

출력 : 양수입니다.
# 예시
x = 10

if x > 5:
    print("x는 5보다 큽니다.")
else:
    print("x는 5보다 작거나 같습니다.")

출력 : x는 5보다 큽니다.

 

 2) 들여쓰기 및 띄어쓰기의 중요성

 : 파이썬은 들여쓰기를 통해 블록을 식별하기 때문에 들여쓰기가 제대로 이루어지지 않으면 오류 발생

예시에서는 들여쓰기를 사용하여 블록이 서로 어떻게 연결되어 있는지 명확함, 첫 번째 if문의 내부에 두 번째 if문이 있는 것을 알 수 있다

# 첫 번째 if문 내부에 두 번째 if문이 있는 경우
x = 10

if x < 0:
    print("첫 번째 블록 시작")
    if x > 5:
        print("두 번째 블록 시작")
else:
print("첫 번째 블록 끝")

출력 : 첫 번째 블록 끝 (else의 결과)
# 각각 독립적인 if문
x = 10

if x < 0:
print("첫 번째 블록 시작")
if x > 5:
print("두 번째 블록 시작")
else:
print("첫 번째 블록 끝")

출력 : 두 번째 블록 시작 (두 번째 if문의 결과)

 

 3) 연산자

  • 비교 연산자
  • 논리 연산자

예시:

x = 10
 
if x > 0 and x % 2 == 0:
    print("양의 짝수입니다.")
 
출력 : 양의 짝수입니다.
 

 

 4) 조건문의 다양한 예시

 : 논리 연산자를 사용하는 다중 조건식

 연산자 and, or, not 을 사용하여 다중 조건식을 활용

 조건식은 중첩하여 사용할 수 있다

x = 10
y = 7

if x > 5 and y < 10:
    print("x는 5보다 크고, y는 10보다 작습니다.")

if x < 5 or y > 10:
    print("x는 5보다 작거나, y는 10보다 큽니다.")

if not (x == 5):
    print("x는 5와 같지 않습니다.")

출력 : x는 5보다 크고, y는 10보다 작습니다.
          x는 5와 같지 않습니다.
x = 10

if x > 5:
    print("x는 5보다 큽니다.")
    if x < 15:
        print("x는 15보다 작습니다.")
    else:
        print("x는 15보다 큽니다.")
else:
    print("x는 5보다 작거나 같습니다.")

출력 : x는 5보다 큽니다.
          x는 15보다 작습니다.
x = 10

if x > 0:
    if x % 2 == 0:
        print("양의 짝수입니다.")
    else:
        print("양의 홀수입니다.")
else:
    print("음수 또는 0입니다.")

출력 : 양의 짝수입니다.

 

 5) 조건문의 짧은 표현

 : 특수한 경우, 조건문을 한 줄로 간략하게 표현할 수 있다

x = 10
 
result = "양의 짝수" if x > 0 and x % 2 == 0 else "음수 또는 0"
print(result)
 
출력 : 양의 짝수

 

 6) 조건문이 실전에서 사용되는 예시 : 분석 결과에 따른 의사 결정

  • 데이터 분석을 통해 도출된 결과를 바탕으로 의사 결정을 내릴 때도 조건문을 사용한다
  • 예를 들어, 특정 제품의 판매량이 일정 기준을 넘는다면 추가 생산이 필요하거나, 고객의 특성에 따라 마케팅 전략을 변경해야 할 경우에 조건문을 활용할 수 있다
# 판매량에 따른 생산량 결정 예시
sales = 1000

if sales > 1000:
    print("추가 생산이 필요합니다.")
elif sales <= 1000:
    print("현재 생산량이 적당합니다.")
 
출력 : 현재 생산량이 적당합니다.

 

2. 반복문 - for문

 1) for문이란?

    for 변수 in 반복할_데이터:
        코드_블록
  • 여기서 "반복할(순회할)_데이터"는 리스트, 튜플, 문자열 등과 같은 반복 가능한(iterable) 데이터 타입
  • "변수"는 각 반복(iteration)마다 현재 값을 가지는 변수

 2) for문 기본 사용법

# 리스트 순회하기

fruits = ["apple", "banana", "cherry"]

for fruit in fruits:
    print(fruit)

이 코드는 "apple", "banana", "cherry"를 순서대로 출력합니다.
# 문자열 순회하기

for letter in "hello":
    print(letter)


이 코드는 "h", "e", "l", "l", "o"를 순서대로 출력합니다.
# range() 함수와 함께 사용하기

for i in range(5):
    print(i)

이 코드는 0부터 4까지의 숫자를 출력합니다.
 

 

 [ range 함수 ]

  • range() 함수는 연속된 정수를 생성하는 데 사용되는 내장 함수
  • 함수는 시작값(start), 끝값(stop), 그리고 증가값(step)을 인자로 받아 사용됨
  • 주로 반복문에서 사용되며, 특히 for 루프와 함께 자주 사용됨
  • start : 순차적인 정수 시퀀스의 시작 값. 이 값은 생략 가능하며, 기본값은 0
  • stop : 순차적인 정수 시퀀스의 끝 값. 이 값은 필수적으로 지정되어야 함 단, 실제로 생성되는 마지막 숫자는 이 값보다 작음
  • step : 각 숫자 사이의 간격. 이 값은 생략 가능하며, 기본값은 1
사례 1 : range(stop)

# 0부터 시작하여 5 이전까지의 정수 시퀀스 생성

for i in range(5):
print(i, end=' ')

# 출력: 0 1 2 3 4
사례 2 : range(start, stop)

# 2부터 시작하여 7 이전까지의 정수 시퀀스 생성

for i in range(2, 7):
print(i, end=' ')

# 출력: 2 3 4 5 6
사례 3 : range(start, stop, step)

# 1부터 시작하여 10 이전까지 2씩 증가하는 정수 시퀀스 생성

for i in range(1, 10, 2):
print(i, end=' ')

# 출력: 1 3 5 7 9

 

 # 딕셔너리 순회하기

person = {"name": "John", "age": 30, "city": "New York"}
 
for key, value in person.items():
    print(key, " : ", value)
 
출력 : name : John
         age : 30
         city : New York

 

 3) 조건문과 함께 사용하기

# 짝수만 출력하기

for i in range(1, 11):
    if i % 2 == 0:
        print(i)

이 코드는 1부터 10까지의 숫자 중 짝수만
출력합니다.
# 1부터 100까지의 숫자 중 3의 배수 출력하기

for i in range(1, 101):
    if i % 3 == 0:
        print(i)

# 리스트에서 특정 값 걸러내기

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = []
for num in numbers:
    if num % 2 == 0:
        even_numbers.append(num)
    print(even_numbers)

주어진 리스트에서 짝수만 골라내어 새로운
리스트에 저장한 후 출력합니다.
# 구구단 출력하기

for i in range(2, 10):
    print(f"{i}단:")
    for j in range(1, 10):
        print(i, "x", j, " = ", i * j)

# 별표로 직각 삼각형 그리기

size = 10 # 삼각형의 크기를 입력

for i in range(1, size + 1):
    print("*" * i)

# 문자열에서 특정 문자 제거하기

sentence = "Hello World"
result = ""
for char in sentence:
    if char != "o":
        result += char
print(result)

# 딕셔너리에서 특정 조건에 맞는 항목 출력하기

ages = {"John": 30, "Jane": 25, "Doe": 35, "Alice": 20}
for name, age in ages.items():
    if age > 25:
        print(name, " is older than 25")
 
이 코드는 딕셔너리 값이 25보다 큰 경우에 대해 이름과 함께 메시지를 출력

 

 4) 이중 for문 사용

  • 이중 for문을 사용하면 중첩된 데이터 구조를 탐색하거나 데이터를 처리할 수 있다
  • 데이터를 보다 복잡하게 처리하고 원하는 패턴을 찾을 수 있다
# 구구단 출력하기

for i in range(2, 10):
    for j in range(1, 10):
        print(i, "x", j, "=", i*j)
# 별(*)표로 삼각형 만들기

size = 5
for i in range(size):
    for j in range(i + 1):
        print("*", end="")
    print()
# 별(*)표로 역삼각형 만들기

size = 5
for i in range(size, 0, -1):
    for j in range(i):
        print("*", end="")
    print()

 

 5) 반복문이 실전에서 사용되는 예시들

  1. 데이터 정제 및 전처리

  • 데이터에서 결측치를 처리하거나 이상치를 탐지하기 위해 각 행이나 열을 반복적으로 검사
  • 문자열 데이터를 숫자로 변환하거나 특수문자를 제거하는 등의 전처리 작업에서 반복문을 사용

  2. 통계 계산

  • 데이터의 요약 통계(평균, 중앙값, 표준편차 등)를 계산할 때 각 요소를 반복하여 처리
  • 히스토그램이나 분포를 만들 때 데이터를 반복하여 처리하고 카운트

  3. 데이터 탐색

  • 데이터의 특정 패턴이나 특징을 찾기 위해 데이터를 반복적으로 탐색. 예를 들어, 특정 조건을 만족하는 데이터를 찾거나 특정 값의 분포를 조사할 때 사용
  • 다차원 데이터 구조를 탐색하고 관련 정보를 추출하기 위해 반복문이 사용됨

  4. 모델 평가

  • 모델의 성능을 평가할 때 예측값과 실제값을 비교하기 위해 데이터를 반복하여 처리
  • 교차 검증(cross-validation)을 수행할 때 각 폴드에 대해 반복문을 사용하여 모델을 훈련하고 평가

  5. 반복적인 작업 자동화

  • 여러 데이터 파일이나 시계열 데이터의 각 시간 단계를 반복적으로 처리하여 일괄적으로 분석하거나 처리
  • 반복적인 분석 작업을 자동화하기 위해 반복문을 사용

 

4. 반복문 - while문

 1) while이란?

 : while문은 조건을 만족하는 동안 코드 블록을 반복적으로 실행

  while문은 특정 조건이 참(True)일 때에만 실행되며, 조건이 거짓(False)이 될 때까지 반복

while 조건:
    코드_블록
  • 여기서 "조건"은 불리언(boolean) 값(True 또는 False)을 반환하는 표현식
  • 조건이 True로 평가될 때까지 코드 블록이 반복적으로 실행

 2) while문의 기본 사용법

# 1부터 5까지 출력하기

i = 1
while i <= 5:
    print(i)
    i += 1

1부터 5까지의 숫자를 출력한다. while문을 사용하여 변수 i가 5 이하일 때까지 반복하여 숫자를 출력하고, 반목마다 i를 1씩 증가시킨다.
# 사용자 입력받기

user_input = ''
while user_input != 'quit':
    user_input = input("Type 'quit' to exit: ")
    print("You typed:", user_input)

사용자로부터 'quit'을 입력할 때까지 사용자 입력을 받는다.
사용자가 'quit'을 입력하면 while문이 종료된다.
  • 무한 루프와 break문
while True:
    user_input = input("Type 'quit' to exit: ")
    if user_input == 'quit':
        break
    print("You typed:", user_input)
  • 이 코드는 무한 루프를 생성하고 사용자가 'quit'을 입력하면 루프를 종료한다. 이때 break문이 사용됨
  • 반복문에는 break, pass, continue는 각각 반복문의 동작을 중단하거나 다음 반복으로 이동하거나 아무 동작을 하지 않고 다음으로 넘어가는 데 사용됨
  • break 예시
# 사용자가 'quit'을 입력할 때까지 반복하여 숫자를 입력받고 합을 출력

total = 0
while True:
    num = input("숫자를 입력하세요 (종료하려면 'quit' 입력): ")
    if num == 'quit':
        break
    total += int(num)

    print("합:", total)

break 문은 사용자가 'quit'을 입력할 때 반복문을 종료시킨다.
  • pass 예시 
# 홀수를 출력하는 코드에서 짝수일 경우에는 아무 작업도 수행하지 않고 넘어감

numbers = [1, 2, 3, 4, 5]
for num in numbers:
    if num % 2 == 0:
        pass
else:
print(num, "은 홀수입니다.")

pass 문은 아무런 동작을 하지 않고 다음 반복을 계속한다.
홀수를 출력하는 반복문에서 짝수일 경우 아무 작업도 하지 않고 다음 반복을 진행
  • continue 예시
# 1부터 10까지의 숫자 중 짝수를 출력

num = 0
while num < 10:
    num += 1
    if num % 2 == 1:
        continue
    print(num)

continue 문은 짝수일 경우에만 출력을 수행하고, 홀수일 경우 다음 반복을 진행
  • 조건에 따른 특정 동작 반복
count = 0
while count < 3:
    print("Hello")
    count += 1

"Hello"를 세 번 출력한다. count 변수를 사용하여 while문이 세 번 
반복되도록 설정함
num = 5
factorial = 1
while num > 0:
    factorial *= num
    num -= 1
print("Factorial of 5 is:", factorial)

while문을 사용하여 5의 팩토리얼을 계산