1. 함수
함수란 입력을 받아 원하는 처리를 한 후 출력을 내보내는 일련의 작업을 수행하는 코드 블록이다. 프로그램 내에서 특정한 기능을 수행하기 위해 코드를 논리적으로 그룹화하여 재사용 가능한 형태로 정의한다.
함수는 코드 재사용, 모듈화, 유지 보수 용이성, 가독성 향상과 같은 이유로 필요하다.
# 함수 구조
def 함수이름(매개변수1, 매개변수2, ...):
# 함수 내부에서 수행할 작업
return 결과값 # (선택적) 함수의 결과를 반환
-----------------------------------------------------------------------------------------------
# 함수 정의
def greet(name):
message = "Hello, " + name + "!"
return message
-----------------------------------------------------------------------------------------------
# 함수 호출
greeting = greet("Alice")
print(greeting) # 출력: Hello, Alice!
-----------------------------------------------------------------------------------------------
# 숫자 리스트에서 최대값을 찾는 함수
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
2. 함수 심화
- 전역변수와 지역변수의 차이
1) 전역변수
▷ 프로그램 전체에서 접근 가능한 변수로 어디서든 사용가능하기 때문에 여러 함수에서 공통적으로 사용되는 값을 저장할 때 유용
▷ 프로그램이 시작될 때 생성되고, 프로그램이 종료될 때까지 메모리에 유지됨
2) 지역변수
▷ 특정한 범위에서만 접근 가능한 변수로 해당 범위를 벗어나면 메모리에서 사라지기 때문에 사용할 수 없음
▷ 함수 내에서 정의된 변수는 해당 함수 내에서만 사용 가능한 지역변수로 다른 함수나 코드 블록에서는 사용할 수 없음
▷ 지역변수는 함수가 실행될 때 생성되고, 함수가 종료되면 메모리에서 제거되므로 메모리 관리에 효율
# 전역변수 예시
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
- 인수와 매개변수의 차이
1) 인수 (=전달인자)
▷ 함수를 호출할 때 전달되는 실제 값으로 함수를 호출할 때마다 다를 수 있음
▷ 함수 호출 시 매개변수에 전달되는 값으로 해당 값은 함수 내부에서 매개변수로 사용됨
2) 매개변수
▷ 함수를 정의할 때 함수가 받아들이는 값을 지정하는 변수
▷ 함수의 헤더 부분에서 매개변수가 정의되며, 함수 내부에서 사용됨
▷ 함수를 정의할 때 매개변수를 정의하고 함수가 호출될 때 매개변수에 해당하는 값을 전달받음
▷ 기본값을 설정할 수 있으며 해당 매개변수에 인수가 전달되지 않았을 때 기본값으로 사용
# 매개변수(parameter) 예시 1
def greet(name): # 여기서 'name'은 매개변수입니다.
print("Hello, " + name + "!")
# 함수 호출할 때 전달되는 값이 인수(argument)입니다.
greet("Alice") # 함수 호출 시 "Alice"는 greet 함수의 매개변수 'name'에 전달됩니다.
-----------------------------------------------------------------------------------------------
# 매개변수(parameter) 예시 2
def add_numbers(x, y): # 'x'와 'y'는 매개변수입니다.
result = x + y
return result
# 함수 호출 시 10과 20이 각각 'x'와 'y' 매개변수에 전달됩니다.
sum_result = add_numbers(10, 20) # 10과 20이 전달인자(Argument)입니다.
print("Sum:", sum_result) # 출력: Sum: 30
- 위치 인수
함수 호출 시 전달되는 두 가지 유형의 인자 중 하나로 매개변수의 위치에 따라 전달되는 인수이다. 인자의 값이 함수의 매개변수 순서대로 맵핑된다.
def greet(name, age):
print("안녕하세요", name, "님! 나이는 ", age, "세입니다.")
# 위치 전달인자 사용
greet("철수", 30) # 출력: 안녕하세요, 철수님! 나이는 30세입니다.
# "철수"가 name 매개변수에, 30이 age 매개변수에 순서대로 전달
- 키워드 인수
함수 호출 시 인수를 순서대로 전달하는 대신 특정 매개변수에 값을 할당하여 전달할 수 있는 인수이다.
def greet(name, age):
print("이름:", name)
print("나이:", age)
# 키워드 인수를 사용하여 함수 호출
greet(name="Alice", age=30)
# greet 함수는 name과 age 두 개의 매개변수를 가집니다. 함수를 호출할 때, 각 매개변수에 직접 값을 할당하여 전달하고 있습니다.
- 가변 인수
여러 개의 인수들을 받을 수 있는 함수를 만들기 위해서는 가변인수를 활용할 수 있다. 파이썬에서는 이를 사용하기 위해 *args와 **kwargs를 사용한다.
# *args는 함수를 호출할 때 임의의 개수의 위치 인수를 전달할 수 있도록 합니다.
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는 임의의 개수의 위치 인수를 받아서 그 합계를 계산합니다.
# 함수 내에서는 args라는 튜플로 위치 인수들을 받아 처리합니다.
-----------------------------------------------------------------------------------------------
# **kwargs는 함수를 호출할 때 임의의 개수의 키워드 인수를 전달할 수 있도록 합니다.
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=30, country="USA")
# 위의 코드에서 print_info 함수는 임의의 개수의 키워드 인수를 받아서 그 정보를 출력합니다.
# 함수 내에서는 kwargs라는 딕셔너리로 키워드 인수들을 받아 처리합니다.
3. 함수가 데이터 분석에서 사용되는 예시
- 데이터 전처리 함수
데이터 분석을 진행할 때 데이터 전처리는 매우 중요하다. 데이터 정규화, 결측치 처리, 특성 스케일링 등의 함수를 사용하여 데이터를 전처리할 수 있다.
1) 표준화
▷ 데이터의 평균을 0으로, 표준편차를 1로 만들어주는 과정
▷ 데이터의 분포를 정규분포로 만들거나 특성 간의 스케일을 일치시키기 위해 사용
2) 결측값
▷ 데이터에서 측정되지 않거나 없는 값을 말함
▷ 전처리 과정에서 결측값을 채우거나(평균, 중앙값 대체) 행이나 열을 삭제하여 처리
3) 정규화
▷ 데이터를 일정한 범위로 변환하여 비교나 분석을 용이하게 하는 과정
▷ 주로 0과 1사이의 값으로 변환하거나 -1과 1사이의 값으로 변환
▷ 다차원 데이터에서 각 차원의 중요성을 동등하게 만들어주는 역할
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
- 데이터 시각화 함수
1) 히스토그램
데이터의 분포를 시각화하는 데 사용되는 그래프로 연속된 데이터의 빈도를 막대 형태로 나타내어 데이터의 분포를 살펴볼 수 있다.
2) 산점도
두 변수 간의 관계를 시각화하는 데 사용되는 그래프로 각각의 데이터 포인트를 점으로 나타내어 변수 간의 상관관계를 확인할 수 있다. 두 변수 간의 관계를 살펴보거나 이상치를 탐지하는 데 사용된다.
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()
- 통계 계산 함수
1) 표준편차
데이터가 평균에서 얼마나 떨어져 있는지를 나타내는 측도이다. 데이터의 분포를 측정하는 데 널리 사용되며, 분산과 함께 데이터의 변동성을 나타내는 중요한 통계적 지표이다.
2) 상관관계
두 변수 간의 선형 관계의 강도와 방향을 나타내는 지표이다. 1에 가까울수록 양의 선형 관계, -1에 가까울수록 음의 선형 관계, 0에 가까울수록 선형 관계가 약하거나 존재하지 않음을 의미한다.
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)
'Today I Learned (TIL) > Python' 카테고리의 다른 글
[TIL] 데이터 분석 파이썬 종합반 - 5주차(2) (0) | 2024.07.10 |
---|---|
[TIL] 데이터 분석 파이썬 종합반 - 5주차(1) (0) | 2024.07.10 |
[TIL] 데이터 분석 파이썬 종합반 - 3주차 (0) | 2024.07.05 |
[TIL] 데이터 분석 파이썬 종합반 - 2주차 (1) | 2024.07.05 |
[TIL] 데이터 분석 파이썬 종합반 - 1주차 (0) | 2024.07.04 |