TIL. (Today I Learned)

Day12. 파이썬 함수? 매서드? / TIL. 20240430

체대이터 2024. 4. 30. 21:00

파이썬 지옥 금일 티아이엘 레츠고

 

To do list.

-파이썬 종합강의 4-5

 

 


파이썬 종합 강의 4-5

 

함수 기본

 

머신러닝과 딥러닝이 하나의 거대한 함수

데이터 처리하는 하나의 흐름(과정)을 함수로 제작 가능

 

함수는 입력해서 처리해 출력

 

함수정의

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

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

 

간단한 예시 코드

 

# 함수 정의
def greet(name):
    message = "Hello, " + name + "!"
return message

# 함수 호출
greeting = greet("Alice")
     print(greeting)          # 출력: Hello, Alice!

 

함수심화

 

전역변수 / 지역변수

 

전역변수: 프로그램 전체에서 접근 가능한 변수로, 어디서든지 사용가능

지역변수: 특정한 범위(함수내부)에서만 접근 가능한 변수로, 해당 범위를 벗어나면 사용할 수 없다

 

매개변수와 인수

  • 매개변수(Parameter)
    • 함수를 정의할 때 함수가 받아들이는 값을 지정하는 변수입니다.
    • 함수의 헤더 부분에서 매개변수가 정의되며, 함수 내부에서 사용됩니다.
    • 함수를 정의할 때 매개변수를 정의하고, 함수가 호출될 때 매개변수에 해당하는 값을 전달받습니다.
  • 인수(Argument)
    • 함수를 호출할 때 함수에 전달되는 값입니다.
    • 함수를 호출할 때 전달되는 실제 값이며, 함수를 호출할 때마다 다를 수 있습니다.
    • 함수 호출 시 매개변수에 전달되는 값으로, 해당 값은 함수 내부에서 매개변수로 사용됩니다.
    • 전달인자라는 표현으로 사용되기도 해요!

위치인수

위치 전달인수는 함수 정의에서 매개변수(parameter)의 위치에 따라 전달되는 인수

 

키워드인수

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

이를 키워드 인수라고 합니다.

 

기본값 설정

함수의 매개변수에 기본값을 설정할 수 있습니다.

이는 해당 매개변수에 인수가 전달되지 않았을 때 기본값으로 사용됩니다.

 

가변인수 활용

여러 개의 인수들을 받을 수 있는 함수를 만들기 위해서는 가변인수(variable-length arguments)를 활용할 수 있다.

args는 함수를 호출할 때 임의의 개수의 위치 인수를 전달

*kwargs는 함수를 호출할 때 임의의 개수의 키워드 인수를 전달

 

데이터 전처리 함수

예를 들어 데이터 정규화, 결측치 처리, 특성 스케일링 등의 함수를 사용하여 데이터를 전처리할 수 있습니다.

 


 

quiz.

 

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

# 데이터는 이것을 사용하세요
data = [2, 4, 6, 8, 10]

 

 

def calculated_average(data):
  total = sum(data)
  length = len(data)
  average = sum(data)/len(data)
  return average

data = [2, 4, 6, 8, 10]
result = calculated_average(data)
print("평균",result)

 


알면 유용한 파이썬 문법들

 

파일 확장자 불러오기

 

CSV 파일 (.csv)

Excel 파일 (.xls, .xlsx)

JSON 파일 (.json)

텍스트 파일 (.txt, .dat, 등)

 

ex)

import pandas as pd

df = pd.read_csv('file.csv')

 


 

패키지(라이브러리) 사용하기

 

패키지는 관련된 여러 개의 모듈(함수)을 포함하는 디렉토리(폴더)

패키지는 맨 처음 파이썬을 사용할 때 필요한 패키지들을 맨 위에 한번에 불러놓고 사용하면 편하다.

 

다양한 패키지

 

pandas

데이터 조작과 분석을 위한 라이브러리로,

데이터를 효과적으로 조작하고 분석할 수 있도록 도와줍니다.

 

numpy

과학적 계산을 위한 핵심 라이브러리로, 다차원 배열과 행렬 연산을 지원합니다.

 

matplotlib

데이터 시각화를 위한 라이브러리로, 다양한 그래프와 플롯을 생성할 수 있습니다.

 

seaborn

Matplotlib을 기반으로 한 통계용 데이터 시각화 라이브러리로,

보다 간편하고 아름다운 시각화를 제공합니다.

 

scikit-learn

머신 러닝 알고리즘을 사용할 수 있는 라이브러리로, 분류, 회귀, 군집화, 차원 축소 등

다양한 머신 러닝 기법을 제공합니다

 

statsmodels

통계 분석을 위한 라이브러리로, 회귀 분석, 시계열 분석, 비모수 통계 등 다양한 통계 기법을 제공합니다

 

scipy

과학기술 및 수학적인 연산을 위한 라이브러리로, 다양한 과학 및 공학 분야에서 활용됩니다. 선형대수, 최적화, 신호 처리, 통계 분석 등 다양한 기능을 제공합니다.

 

tensorflow

딥러닝 및 기계 학습을 위한 오픈소스 라이브러리로, 구글에서 개발했습니다. 그래프 기반의 계산을 통해 수치 계산을 수행하며, 신경망을 구축하고 학습할 수 있습니다.

 

pytorch

딥러닝을 위한 오픈소스 라이브러리로, Facebook에서 개발했습니다. 동적 계산 그래프를 사용하여 신경망을 구축하고 학습할 수 있습니다.

 


 

포맷팅

코드가 아주 직관적으로 바뀌며 변수와 문자가 다양하게 많이 출력해야 하는 상황에서 훨씬 편리하게 사용 가능

 

x = 10

print(f"변수 x의 값은 {x}입니다.")

=> 프린트 안에 쉼표를 덜 써도 됨 => f-string 방법

 

name = "Alice"
age = 25

# %를 사용한 형식 지정
print("이름: %s, 나이: %d세" % (name, age))

# format() 메서드를 사용한 형식 지정
print("이름: {}, 나이: {}세".format(name, age))

# f-string을 사용한 형식 지정 (Python 3.6 이상)
print(f"이름: {name}, 나이: {age}세")                             => 추천

 


리스트 캄프리헨션

리스트 캄프리헨션은 파이썬에서 리스트를 간결하게 생성하는 방법 중 하나

 

# 기본적인 구조

[표현식 for 항목 in iterable if 조건문]

 

# 예시: 1부터 10까지의 숫자를 제곱한 리스트 생성

squares = [x**2 for x in range(1, 11)]

print(squares)  # 출력: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

 


 

 

lambda 사용

람다 함수(lambda function)는 익명 함수로, 이름 없이 정의되는 간단한 함수

주로 한 줄로 표현되며, 일반적인 함수 정의와는 달리 def 키워드를 사용하지 않고

lambda 키워드를 사용하여 정의됩니다.

 

ex)

add = lambda x, y: x + y

print(add(3, 5))   # 출력: 8

 


 

glob 사용

glob 함수는 파일 시스템에서 파일을 찾을 때 사용되는 유용한 도구

주로 파일 이름이나 확장자에 따라 파일을 필터링하는 데 사용

 

ex)

import glob

 

# 현재 경로의 모든 파일을 찾기

file_list1 = glob.glob('*')

 

glob 함수를 사용하면 특정 패턴에 맞는 파일을 간단하게 찾을 수 있습니다. 이는 파일 시스템에서 파일을 검색하고 처리하는 데 유용

 


 

os 사용

os 모듈은 운영 체제와 상호 작용하기 위한 다양한 함수들을 제공

 

현재 작업 디렉토리(파일) 가져오기

import os

cwd = os.getcwd()

print(cwd)   => /content 경로를 가져옴

 

디렉토리 생성

파일 이름 변경

파일 삭제

파일 목록(경로) 가져오기

경로 조작

 


 

split 사용

리스트의 split 메서드를 활용하면 문자열을 여러개로 쪼개는데 유용

 

split() 쪼개기

join() 합치기

rsplit()  기준으로 나누기

 


클래스 배우기 어려움

 

파이썬 클래스(Class)는 객체 지향 프로그래밍(OOP)의 중요한 개념 중 하나

객체 지향 프로그래밍은 현실 세계의 사물을 모델링하여 프로그래밍하는 방법

 

__init__ 메서드는 클래스의 생성자로, 객체가 생성될 때 호출되며 초기화 작업을 수행합니다.

메서드의 첫 번째 매개변수로 self를 반드시 사용해야 합니다. 이는 해당 메서드가 속한 객체를 가리킵니다.

 


불리언 인덱싱

불리언 인덱싱(Boolean indexing)은 조건에 따라 요소를 선택하는 방법 중 하나

 


Check point.

 

 

 

==


회고

 

파이써 5주차 강의를 듣고 있는데 이해가 가질 않는다...🤦‍♀️ 마치 초등학생에게 고등학생 문제 개념을 주입시키는 느낌이다. 일단은 진도에 맞춰  따라가고 있지만 파이썬에 대한 기본개념이 많이 부족한 탓인지 매우 어렵게 느껴지는 것이 사실.. 일단 내일 오전중으로 5주차를 다 듣고 다시 1주차부터 복습과 파이썬의 기본 골자부터 뒤돌아봐야겠다. 금요일까지 과제가 있다는데 제출할 수 있을지 모르겠다~😶‍🌫️