Today I learned
1. 데이터 분석 파이썬 종합반(python) 4주차
1) 함수 심화
- 전역변수 (Global variables)
프로그램 전체에서 접근 가능한 변수, 어디서든지 사용 가능
프로그램이 종료될 때 가지 메모리에 유지됨
- 지역변수 (Local Variables)
특정한 범위 에서만 접근 가능한 변수, 해당 범위를 벗어나면 사용 불가
ex)
# 전역변수 예시
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
- 인수(argument)
함수를 정의할 때 함수가 받아들이는 값을 지정하는 변수
- 매개변수(parameter)
함수를 호출할 때 함수에 전달되는 값
ex)
# 매개변수(parameter) 예시
def greet(name): # 여기서 'name'은 매개변수입니다.
print("Hello, " + name + "!")
# 함수 호출할 때 전달되는 값이 인수(argument)입니다.
greet("Alice") # 함수 호출 시 "Alice"는 greet 함수의 매개변수 'name'에 전달됩니다.
위 예시에서 greet 함수의 매개변수는 name, 인수는 Alice
- 위치인수(Positional Arguments)
매개변수의 위치에 따라 전달되는 인수
ex)
def greet(name, age):
print("안녕하세요", name, "님! 나이는 ", age, "세입니다.")
# 위치 전달인자 사용
greet("철수", 30) # 출력: 안녕하세요, 철수님! 나이는 30세입니다.
- 키워드 인수(Keyword Arguments)
특정 매개변수에 값을 할당하여 전달하는 방식으로 함수 호출
ex)
def greet(name, age):
print("이름:", name)
print("나이:", age)
# 키워드 인수를 사용하여 함수 호출
greet(name="Alice", age=30)
- 기본값 설정 (Default Values)
매개변수에 인수가 전달되지 않았을 때 기본값으로 사
ex)
def greet(name="Guest", age=25):
print("이름:", name)
print("나이:", age)
# 기본값이 설정된 함수 호출
greet()
- 기본값과 키워드 인수를 함께 사용하기
ex)
def greet(name="Guest", age=25):
print("이름:", name)
print("나이:", age)
# 키워드 인수를 사용하여 함수 호출
greet(name="Alice", age=30)
# 일부 매개변수에만 키워드 인수 사용하여 호출
greet(name="Bob")
- 가변 인수 활용하기
여러 개의 인수를 받을 수 있는 함수를 만들기 위해 가변인수를 활용할 ㅅ ㅜ있음.
ex)
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
※ args는 함수를 호출할 때 임의의 개수의 위치 인수를 전달할 수 있도록 함
ex)
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=30, country="USA")
※ kwargs는 함수를 호출할 때 임의의 개수의 키워드 인수를 전달할 수 있도록 함
2. 데이터 분석 파이썬 종합반(python) 5주차
1) 파일 불러오기 및 저장하기
- 확장자별 파일 불러오기
ex)
import pandas as pd
df = pd.read_csv('file.csv)
※ 확장자에 따라 csv 자리에 xls, json, txt 등이 올 수 있음
- 파일 저장하기
ex) csv나 excel 파일의 경우
import pandas as pd
data = {"아무것도하기싫다더욱격렬하게아무것도하기싫다"}
df = pd.DataFrame(data)
excel_file_path = '/content/sample_data/data.csv'
df.to_csv(excel_file_path, index - False)
※ csv나 excel 파일의 경우 .csv만 바꿔주면 됨
ex) JSON 파일
import json
data = {"아무것도하기싫다더욱격렬하게아무것도하기싫다"}
json_file_path = ' /content/sample_data/data.json'
#json 파일을 쓰기모드로 열어 data를 덮어쓰는 방
with open(json_file_path, 'w') as jasonfile:
json.dump(data, jsonfile, indent=4)
ex) 텍스트 파일
data = {"아무것도하기싫다더욱격렬하게아무것도하기싫다"}
text_file_path = ' /content/sample_data/data.txt'
with open(text_file_path, 'w') as textfile:
for key, item in data.items():
textfile,write(str(key) + " : " + str(item
2) 패키지(라이브러리) 사용하기
여러개의 모듈을 포함하는 디렉토리 ex) numpy, matplotlib
데이터 분석을 위한 파이썬 패키지는 다양한 작업을 진행하는데 필수적
- pandas : 데이터 조작과 분석을 위한 라이브러리
import pandas as pd
df = pd.read_excel(file_address)
print(df)
- numpy: 과학적 계산을 위한 라이브러리로, 다차원 배열과 행렬 연산을 지원
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr.mean())
- matplotlib: 데이터 시각화를 위한 라이브러리
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()
- seaborn: Matplotlib 기반의 통계용 데이터 시각화 라이브러리
import seaborn as sns
import pandas as pd
data_sample = pd.DataFrame({'x':[1, 2, 3, 4], 'y':[1, 4, 9, 16]})
sns.barplot(data=data_sample, x='x', y='y')
- scikit-learn: 머신러닝 알고리즘을 사용할 수 있는 라이브러리
from sklearn.datasets import load_iris
from sklearn.linear_model import LinearRegression
# Iris 데이터셋 불러오기
iris = load_iris()
# Iris 데이터셋에서 특정 범위의 데이터 슬라이싱하기
X_train = iris.data[:,:-1] # 데이터 값들 추출
print("학습 데이터:", X_train)
y_train = iris.data[:,-1:] # 정답값 추출
print("학습 데이터:", y_train)
model = LinearRegression()
model.fit(X_train, y_train)
- statmodels: 통계 분석을 위한 라이브러리
import statsmodels.api as sm
model = sm.OLS(y_train, X_train)
result = model.fit()
print(result.summary())
- scipy: 과학기술 및 수학적인 연산을 위한 라이브러리
import numpy as np
from scipy.integrate import quad
# 적분할 함수 정의
def integrand(x):
return np.exp(-x ** 2)
# 정적분 구간
a = 0
b = np.inf
# 적분 계산
result, error = quad(integrand, a, b)
print("결과:", result)
print("오차:", error)
- tensorflow: 딥러닝 및 기계 학습을 위한 오픈소스 라이브러리
import tensorflow as tf
input_size = 3
model = tf.keras.Sequential([
tf.keras.layers.Dense(10, activation='relu', input_shape=(input_size,)),
tf.keras.layers.Dense(1)
])
model.compile(optimizer='adam', loss='mse')
- pytorch: 딥러닝을 위한 오픈소스 라이브러리
import torch
import torch.nn as nn
class Model(nn.Module):
def __init__(self):
super(Model, self).__init__()
self.fc1 = nn.Linear(input_size, hidden_size)
self.fc2 = nn.Linear(hidden_size, output_size)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
3) 포맷팅 사용하기
- 포맷팅: 문자열 내에 변수를 넣거나 값을 특정한 형태로 표현하는 방법
ex) 포맷팅 사용시
a = 10
b = 3
print(f"{a} + {b} = {a + b}")
미사용시
a = 10
b = 3
print(a, "+", b, "=", a + b)
4) 리스트 컴프리헨션
- 리스트 컴프리헨션: 파이썬에서 리스트를 간결하게 생성하는 방법
- 기본적인 구조
[표현식 for 항목 in iterable if 조건문]
ex)
# 예시: 1부터 10까지의 숫자를 제곱한 리스트 생성
squares = [x**2 for x in range(1, 11)]
print(squares) # 출력: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# 예시: 리스트에서 짝수만 선택하여 제곱한 리스트 생성
even_squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print(even_squares) # 출력: [4, 16, 36, 64, 100]
# 예시: 문자열 리스트에서 각 문자열의 길이를 저장한 리스트 생성
words = ["apple", "banana", "grape", "orange"]
word_lengths = [len(word) for word in words]
print(word_lengths) # 출력: [5, 6, 5, 6]
# 예시: 리스트 컴프리헨션을 중첩하여 2차원 리스트 생성
matrix = [[i for i in range(1, 4)] for j in range(3)]
print(matrix) # 출력: [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
5) lambda 사용하기
- 이름 없이 정의되는 간단한 함수 -> 간결성, 익명성, 가독성, 함수형 프로그래밍에서 강점
- def 키워드를 사용하지 않고 lambda 키워드로 정의
- 일반 함수와 차이점
| 일반함수 | lambda함수 | |
| 정의 키워드 | def | lambda |
| 구조 | 여러 줄의 코드블록 | 한줄 |
| 이름 | 함수 이름을 지정하여 호출 가능 | 이름 없음, 임시로 필요한 경우에만 사용 |
| 사용 | 어떤 경우에도 사용 가능 | 함수형 프로그래밍에 사용 |
ex)
add = lambda x, y: x + y
print(add(3, 5)) # 출력: 8
square = lambda x: x ** 2
print(square(4)) # 출력: 16
6) 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')
7) os 사용하기
- 운영 체제와 상호작용 하기 위한 다양한 함수를 제공
- 파일 및 디렉토리 관리 / 경로 관리/ 환경 변수 관리 / 실행 관리 등
사용 예시)
#공통 입력
import os
# 현재 작업 디렉토리 가져오기
cwd = os.getcwd()
print(cwd)
#디렉토리 생성
os.mkdir('sample_data/new_directory')
#파일 이름 변경
os.mkdir('sample_data/new_directory')
#파일 삭제
os.remove(file_adress)
os.remove('sample_data/data.csv')
#경로 관리 - 파일 목록 가져오기
files = os.listdir('/content')
print(files)
#경로 조작path = os.path.join('/content', 'sample_data', 'mnist_test.csv')
print(path)
8) 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']
9) 클래스 배우기
-객체 지향 프로그래밍(OOP, 현실 세계의 사물을 모델링하여 프로그래밍 하는 방법)의 중요한 개념 중 하나
- 클래스의 기본 구조
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)
- 다형성(Polymorphism)
같은 이름의 메소드가 서로 다른 클래스에서 다른 기능을 수행하도록 하는 개념
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()
※ 위 코드에서 Animal 클래스의 sound 메소드를 각각의 하위 클래스인 dog와 cat에서 재정의하여 다른 동작을 수행
- 클래스와 함수의 차이
| 클래스 | 함수 | |
| 정의 | 객체 지향 프로그램의 핵심 개념, 데이터와 해당 데이터를 처리하는 메소드(함수)를 함께 묶어놓은 것 | 일련의 작업을 수행하는 블록 |
| 수행 작업 | 객체의 상태와 행위를 정의하고 캡슐화하여 객체를 생성하고 다룰 수 있게 해줌 | 입력(매개변수)를 받아들이고 그에 따른 결과를 반환 |
- 메소드 : 클래스 내부에 정의된 함수
- 속성: 클래스나 클래스의 인스턴스에 속한 변수
10) 블리언 인덱싱
- 조건에 따라 요소를 선택하는 방법 중 하나
- 주어진 조건에 따라 배열이나 리스트에서 요소를 선택할 수 있게 해주는 도구
사용 예시)
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]
※ Numpy를 사용하여 불리언 인덱싱을 수행하는 예시로
※ 배열 arr과 조건을 담은 불리언 배열 condition을 생성한 후, 불리언 인덱싱을 사용하여 조건에 따라 요소를 선택하고, 선택된 요소를 출력
11) 데코레이션 사용하기
- 함수나 메소드의 기능을 확장하거나 수정하는 도구
- 기존의 함수를 따로 수정하지 않고 추가 기능을 넣고 싶을 때 사용
사용 예시)
def decorator_function(original_function):
def wrapper_function(**kwargs):
# 함수 호출 전에 실행되는 코드
result = original_function(**kwargs)
# 함수 호출 후에 실행되는 코드
return result
return wrapper_function
12) 파이썬 에러 대처
3. [라이브 session] 기초 쑥쑥 Python
1) 숫자형 자료형(int, float)
2) 문자형 자료형 (str)
3) 불리언 자료형 (bool)
4) 리스트 자료형 (list)
print(fruits[0])
fruits.append("정신을체리세요")
print(fruits)
fruits.insert(0,"귤이두개면뀰")
print(fruits)
fruits.remove("귤이두개면뀰")
print(fruits)
fruits.pop()
print(fruits)
fruits.sort()
print(fruits)
5) 튜플 자료형(tuple)
- 수정하려 하면 오류 나옴
6) 딕셔너리 자료형(dict)
- 자주 사용하는 메소드
| get(key) | 값 조회 | user.get("이름") |
| keys() | 모든 키 반환 | user.keys() |
| values() | 모든 값 반환 | user.values() |
| items() | (키, 값)쌍 반환 | user.items() |
| update() | 병합 | user.update({"취미": "독서"}) |
| pop(key) | 항목 삭제 | user.pop("나이") |
7) 집합 자료형 (set)
'빅데이터 QAQC_3기 > 빅데이터 QAQC_3기 TIL' 카테고리의 다른 글
| TIL_250922 (2) | 2025.09.22 |
|---|---|
| TIL_250919 (1) | 2025.09.19 |
| TIL_250917 (0) | 2025.09.17 |
| TIL_250916 (1) | 2025.09.16 |
| TIL_250915 (0) | 2025.09.15 |