[ ✅ 기본 문법 ]
🔹 변수와 데이터 타입
Python에서 주로 사용하는 데이터 타입:
- 정수 (int): a = 10
- 실수 (float): b = 3.14
- 문자열 (str): c = "Hello"
- 불리언 (bool): d = True
- 리스트 (list): e = [1, 2, 3] (변경 가능)
- 튜플 (tuple): f = (4, 5, 6) (변경 불가능)
- 딕셔너리 (dict): g = {"name": "Alice", "age": 25}
- 집합 (set): h = {1, 2, 3, 4, 5} (중복 허용 안 함)
a = 10
b = 3.14
c = "Hello"
d = True
e = [1, 2, 3]
f = (4, 5, 6)
g = {"name": "Alice", "age": 25}
h = {1, 2, 3, 4, 5}
print(type(a), type(b), type(c), type(d), type(e), type(f), type(g), type(h))
[ ✅ 제어 ]
🔹 조건문 (if, elif, else)
x = 10
if x > 5:
print("x는 5보다 큼")
elif x == 5:
print("x는 5임")
else:
print("x는 5보다 작음")
🔹 반복문 (for, while)
# for문
for i in range(5):
print(i)
# while문
count = 0
while count < 5:
print(count)
count += 1
🔹 리스트 컴프리헨션 (List Comprehension)
squares = [x**2 for x in range(10) if x % 2 == 0]
print(squares) # [0, 4, 16, 36, 64]
[ ✅ 함수 ]
🔹 함수 (def)
def add(a, b):
return a + b
print(add(3, 4)) # 7
🔹 람다 함수 (lambda)
square = lambda x: x**2
print(square(5)) # 25
[ ✅ 행렬 (Numpy 배열) ]
Numpy는 데이터 분석에서 숫자 연산을 빠르고 효율적으로 수행할 수 있도록 도와줍니다. 다차원 배열을 쉽게 다룰 수 있으며, 벡터 연산과 행렬 연산이 가능하여 데이터 처리 속도를 향상시킵니다.
🔹 Numpy 배열(행렬) 생성 및 기본 연산
import numpy as np
# 1차원 배열 (벡터)
arr1 = np.array([1, 2, 3, 4, 5])
# 2차원 배열 (행렬)
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
# 3차원 배열
arr3 = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(arr1.shape) # (5,) - 1차원 벡터
print(arr2.shape) # (2, 3) - 2행 3열 행렬
print(arr3.shape) # (2, 2, 2) - 3차원 배열
🔹 Numpy를 활용한 데이터 분석 예제
import numpy as np
랜덤 데이터 생성 (10x3 행렬)
data = np.random.rand(10, 3)
각 열의 평균 계산
col_means = np.mean(data, axis=0)
print("각 열의 평균값:", col_means)
각 행의 평균 계산
row_means = np.mean(data, axis=1)
# 열(column)의 평균 (결측치 제외)
col_mean_nan = np.nanmean(data, axis=0)
# 행(row)의 평균 (결측치 제외)
row_mean_nan = np.nanmean(data, axis=1)
특정 조건을 만족하는 값 필터링 (0.5보다 큰 값)
filtered_data = data[data > 0.5]
print("0.5보다 큰 값들:", filtered_data)
[ ✅ 튜플 (Tuple) ]
튜플은 리스트와 비슷하지만 불변(Immutable) 이라는 특징을 갖고 있어 데이터 변경이 불가능합니다. 데이터 분석에서는 고정된 데이터 구조를 저장할 때 사용됩니다.
# 튜플 생성
t = (1, 2, 3, "hello", (4, 5))
print(t[0]) # 1
print(t[-1]) # (4,5)
# 튜플을 활용한 여러 개의 값 반환
def get_statistics():
mean = 10
std = 2.5
median = 9
return mean, std, median # 튜플 형태로 반환됨
mean, std, median = get_statistics()
print(f"평균: {mean}, 표준편차: {std}, 중앙값: {median}")
[ ✅ 딕셔너리 (Dictionary) ]
딕셔너리는 키(Key)와 값(Value)로 이루어진 데이터 구조 로, 데이터를 빠르게 조회하고 수정할 수 있습니다. 데이터 분석에서는 JSON 데이터 처리, 데이터 매핑, 그룹화 등에 유용하게 사용됩니다.
🔹 기본 개념
# 딕셔너리 생성
data = {
"name": "Alice",
"age": 25,
"scores": [85, 90, 95]
}
# 특정 값 가져오기
print(data["name"]) # Alice
print(data["scores"]) # [85, 90, 95]
🔹 활용 예제
# 학생들의 시험 점수 데이터
students_scores = {
"Alice": [85, 90, 88],
"Bob": [78, 81, 85],
"Charlie": [92, 95, 93]
}
# 학생별 평균 점수 계산
for name, scores in students_scores.items():
avg_score = sum(scores) / len(scores)
print(f"{name}의 평균 점수: {avg_score:.2f}")
🔹 행렬, 튜플, 딕셔너리를 함께 활용한 데이터 분석 예제
import numpy as np
# 학생별 성적 데이터 (딕셔너리 사용)
students_data = {
"Alice": (85, 90, 88), # 튜플 사용 (불변 데이터)
"Bob": (78, 81, 85),
"Charlie": (92, 95, 93)
}
# 데이터 행렬로 변환
scores_matrix = np.array(list(students_data.values()))
# 학생별 평균 점수 계산
average_scores = np.mean(scores_matrix, axis=1)
# 딕셔너리에 평균 점수 추가
for i, (name, scores) in enumerate(students_data.items()):
print(f"{name}의 평균 점수: {average_scores[i]:.2f}")
1. students_data
- students_data는 학생 이름을 키(key), 점수를 값(value) 으로 저장하는 딕셔너리(dict) 입니다.
- 각 학생의 점수는 튜플(tuple) 로 저장되며, 튜플은 불변(immutable) 이므로 데이터가 변경되지 않습니다.
2. 데이터를 행렬(numpy array)로 변환
- scores_matrix = np.array(list(students_data.values()))
- students_data.values()를 사용하여 학생들의 점수만 리스트 형태로 가져옴
- list()로 변환하여 리스트 형태의 데이터 로 만듦
- np.array()를 사용해 2차원 Numpy 배열(행렬) 로 변환. scores_matrix는 각 행(row)이 학생 1명의 점수를 의미하는 2차원 행렬 이 됩니다.
list(students_data.values())
# 출력: [(85, 90, 88), (78, 81, 85), (92, 95, 93)]
scores_matrix
# 출력:
# array([[85, 90, 88],
# [78, 81, 85],
# [92, 95, 93]])
3. 학생 별 평균 점수 계산
- np.mean(scores_matrix, axis=1)
→ 각 행(row)에 대해 평균을 계산 (즉, 각 학생별 평균 점수)
4. 딕셔너리에 평균 점수 추가 & 출력
for i, (name, scores) in enumerate(students_data.items()):
print(f"{name}의 평균 점수: {average_scores[i]:.2f}")
- students_data.items()를 사용하여 (이름, 점수) 쌍을 가져옴
- enumerate()를 사용하여 i (인덱스)와 (name, scores) (학생 이름, 점수)를 동시에 가져옴
- average_scores[i]를 사용하여 학생별 평균 점수를 매칭하여 출력
'DS > DS2' 카테고리의 다른 글
이론 1 (0) | 2025.02.25 |
---|---|
Numpy, Pandas (0) | 2025.02.21 |
메소드 정리 (0) | 2025.02.20 |