TIL(Today I Learned)

[2024/12/26]내일배움캠프 QA/QC 1기 - 8일차

essay2892 2024. 12. 26. 19:47

데이터 분석 파이썬 종합반 4주차

파이썬의 몸통 : 함수

함수의 필요성

  • 코드 재사용: 반복되는 코드를 함수로 정의하여 여러 곳에서 재사용할 수 있습니다.
  • 모듈화: 프로그램을 여러 개의 작은 모듈로 나누어 개발 및 관리할 수 있습니다.
  • 유지 보수 용이성: 함수는 각각의 기능을 독립적으로 정의하므로, 수정이나 확장이 필요할 때 해당 함수만 수정하면 됩니다.
  • 가독성 향상: 함수는 코드의 의도를 명확하게 표현할 수 있으며, 복잡한 작업을 함수로 분해하여 이해하기 쉽게 만듭니다.

함수정의

def 함수이름(매개변수1, 매개변수2, ...):
    # 함수 내부에서 수행할 작업
    return 결과값  # (선택적) 함수의 결과를 반환

함수 호출

결과 = 함수이름(인수1, 인수2, ...)

더보기
def greet(name):
    message = "Hello, " + name + "!"
    return message

greeting = greet("Alice")
print(greeting)  
# Hello, Alice!

 

def calculate_mean(numbers):
    total = sum(numbers)
    mean = total / len(numbers)
    return mean

# 함수 호출 및 예시
data = [10, 20, 30, 40, 50]
average = calculate_mean(data)
print("평균:", average)
# 평균: 30.0
 
def find_max(numbers):
    max_num = numbers[0]
    for num in numbers:
        if num > max_num:
            max_num = num
    return max_num

print(find_max([3, 7, 2, 9, 5]))
# 9
 
def multiply_tuple(tup):
    result = 1
    for num in tup:
        result *= num
    return result

print(multiply_tuple((2, 3, 4)))
# 24
 
def char_frequency(string):
    freq_dict = {}
    for char in string:
        if char in freq_dict:
            freq_dict[char] += 1
        else:
            freq_dict[char] = 1
    return freq_dict

print(char_frequency("hello"))
# {'h': 1, 'e': 1, 'l': 2, 'o': 1}

함수 심화

전역변수 (Global Variables)

  • 전역변수는 프로그램 전체에서 접근 가능한 변수로, 어디서든지 사용할 수 있음
  • 전역변수는 프로그램이 시작될 때 생성되고, 프로그램이 종료될 때까지 메모리에 유지됨
  • 전역변수는 프로그램의 어디서든지 접근할 수 있으므로, 여러 함수에서 공통적으로 사용되는 값을 저장할 때 유용
  • 하지만 너무 많은 전역변수를 사용하면 코드의 가독성이 떨어지고 디버깅이 어려워질 수 있음

지역변수 (Local Variables)

  • 지역변수는 특정한 범위(예: 함수 내부)에서만 접근 가능한 변수로, 해당 범위를 벗어나면 사용할 수 없음
  • 지역변수는 해당 범위에서 생성되고, 범위를 벗어나면 메모리에서 사라짐
  • 함수 내에서 정의된 변수는 해당 함수 내에서만 사용 가능한 지역변수
  • 지역변수는 함수 내에서만 사용되므로, 해당 함수에서만 유효하고 다른 함수나 코드 블록에서는 사용할 수 없음
  • 지역변수는 함수가 실행될 때 생성되고, 함수가 종료되면 메모리에서 제거되므로 메모리 관리에 효율적

 

매개변수(Parameter)

  • 함수를 정의할 때 함수가 받아들이는 값을 지정하는 변수
  • 함수의 헤더 부분에서 매개변수가 정의되며, 함수 내부에서 사용
  • 함수를 정의할 때 매개변수를 정의하고, 함수가 호출될 때 매개변수에 해당하는 값을 전달받음

인수(Argument)

  • 함수를 호출할 때 함수에 전달되는 값
  • 함수를 호출할 때 전달되는 실제 값이며, 함수를 호출할 때마다 다를 수 있음
  • 함수 호출 시 매개변수에 전달되는 값으로, 해당 값은 함수 내부에서 매개변수로 사용
  • 전달인자라는 표현으로 사용되기도 함

위치 인수 (Positional Arguments)

  • 위치 인수(positional argument)와 키워드 인수(keyword argument)
  • 위치 전달인수는 함수 정의에서 매개변수(parameter)의 위치에 따라 전달되는 인수
  • 위치 전달인수는 인자의 값이 함수의 매개변수에 순서대로 매핑됨
  • 함수 호출 시 위치 전달인수는 매개변수의 위치에 따라 전달됨

키워드 인수 (Keyword Arguments)

  • 함수를 호출할 때, 인수를 순서대로 전달하는 대신에 특정 매개변수에 값을 할당하여 전달할 수 있음

기본값 (Default Values)

  • 함수의 매개변수에 기본값을 설정할 수 있음
  • 해당 매개변수에 인수가 전달되지 않았을 때 기본값으로 사용
  • 키워드 인수와 기본값을 함께 사용하여 함수를 호출할 수 있음

가변인수(variable-length arguments)

  • 여러 개의 인수들을 받을 수 있는 함수를 만들기 위해서 사용
  • *args와 **kwargs를 사용
  • *args는 함수를 호출할 때 임의의 개수의 위치 인수를 전달할 수 있도록 함
  • **kwargs는 함수를 호출할 때 임의의 개수의 키워드 인수를 전달할 수 있도록 함

 

더보기
# 전역변수 예시
global_var = 10

def global_example():
    print("전역변수 접근:", global_var)

global_example()  # 출력: 전역변수 접근: 10

# 지역변수 예시
def local_example():
    local_var = 20
    print("지역변수 접근:", local_var)

local_example()  # 출력: 지역변수 접근: 20

# 함수 내에서 전역변수를 수정하는 예시
def modify_global():
    global global_var
    global_var = 30
    print("함수 내에서 수정된 전역변수:", global_var)

modify_global()  # 출력: 함수 내에서 수정된 전역변수: 30
print("수정된 전역변수 확인:", global_var)  # 출력: 수정된 전역변수 확인: 30

 

 

# 매개변수(parameter) 예시
def greet(name):  # 여기서 'name'은 매개변수입니다.
    print("Hello, " + name + "!")
   
# 함수 호출할 때 전달되는 값이 인수(argument)입니다.
greet("Alice")  # 함수 호출 시 "Alice"는 greet 함수의 매개변수 'name'에 전달됩니다.

 

 

def greet(name, age):
    print("안녕하세요", name, "님! 나이는 ", age, "세입니다.")
# 위치 전달인자 사용
greet("철수", 30)  # 출력: 안녕하세요, 철수님! 나이는 30세입니다.

 

 

def greet(name, age):
    print("이름:", name)
    print("나이:", age)
 

# 키워드 인수를 사용하여 함수 호출
greet(name="Alice", age=30)

 

def greet(name="Guest", age=25):
    print("이름:", name)
    print("나이:", age)

# 기본값이 설정된 함수 호출
greet()

 

 

def greet(name="Guest", age=25):
    print("이름:", name)
    print("나이:", age)

# 키워드 인수를 사용하여 함수 호출
greet(name="Alice", age=30)

# 일부 매개변수에만 키워드 인수 사용하여 호출
greet(name="Bob")

 

 

def sum_values(*args):
    total = 0
    for num in args:
        total += num
    return total

result = sum_values(1, 2, 3, 4, 5)
print("합계:", result)  # 출력: 합계: 15

 

* sum_values는 임의의 개수의 위치 인수를 받아서 그 합계를 계산

 

def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Alice", age=30, country="USA")
 
* print_info 함수는 임의의 개수의 키워드 인수를 받아서 그 정보를 출력

 

 

데이터 전처리 함수 예시

def stadardization(data):
    # 데이터 표준화 함수
    scaled_data = (data - data.mean()) / data.std()
    return scaled_data

def impute_missing_values(data):
    # 결측치 처리 함수
    filled_data = data.fillna(data.mean())
    return filled_data

def nomalization(data):
    # 데이터 정규화 함수
    scaled_data = (data - data.min()) / (data.max() - data.min())
    return scaled_data
 
데이터 시각화 함수 예시
import matplotlib.pyplot as plt

def plot_histogram(data):
    # 히스토그램을 그리는 함수
    plt.hist(data, bins=20)
    plt.xlabel('Value')
    plt.ylabel('Frequency')
    plt.title('Histogram of Data')
    plt.show()

def plot_scatter(x, y):
    # 산점도를 그리는 함수
    plt.scatter(x, y)
    plt.xlabel('X')
    plt.ylabel('Y')
    plt.title('Scatter Plot')
    plt.show()

 

통계 계산 함수 예시

import numpy as np

def calculate_mean(data):
    # 평균을 계산하는 함수
    return np.mean(data)

def calculate_std(data):
    # 표준편차를 계산하는 함수
    return np.std(data)

def calculate_correlation(x, y):
    # 상관 관계를 계산하는 함수
    return np.corrcoef(x, y)

Quiz

평균과 분산 계산기

  • 주어진 데이터셋의 평균을 계산하는 함수를 작성하고 함수의 결과를 출력해 보세요!

# 데이터는 이것을 사용하세요

data = [2, 4, 6, 8, 10]

더보기
def average(numbers) :
   total = sum(numbers)
   calculate = total / len(numbers)
   return calculate

data = [2, 4, 6, 8, 10]
average(data)

# 6.0


 

파이썬 예제

위키독스 - 초보자를 위한 파이썬 300제(https://wikidocs.net/book/922)

41~150

 


파이썬 개인 과제(https://essay2892.tistory.com/31)