✅ 오늘 한 것
SQLD, Library 개인 과제(Level 3.), Python 개인 과제 재풀이
✏️ 오늘 배운 점
tips = sns.load_dataset("tips")
이는 내가 위에서 정해둔 tips라는 변수에 담은 df를 가져오는 것이라고 생각하였으나 tip 예제 데이터셋을 가져오는 것이라는 것을 알게 되어 코드 수정을 통해 문제에서 원하고자 하는 목표에 도달할 수 있었다.
fig, axes를 이용하는 객체 지향 문법은 아직 거의 시작도 모르는 느낌이다.
concat()은 어느 정도 이해가 가지만 몇 번 더 반복하여 코드 작성을 진행하면 막힘없이 진행될 것으로 생각이 든다.
sales_df = pd.DataFrame(data)
sales_df['month'] = sales_df['date'].dt.month
month_sales = sales_df.groupby(['month'])['sales_amount'].sum()
month_sales
print(month_sales.count())
월별로 sales_amount를 보는 것에서 month를 하는 것을 잠시 기억이 나지 않아 다시 문법을 확인하였다. 생각보다 어렵지 않은 문법인데 여러 번 반복해야겠다는 생각이 들었다.
inner_result = sales_sample.merge(product_sample, on='product', how='inner')
print(inner_result)
SQL에서는 where절에 join을 넣어 간단하게 join시켰지만 Python에서는 새로운 문법 merge()로 작성해야하기에 조금 어색한 느낌이 있다.
def normalize_weights(weight_list):
new_list = []
for weight in weight_list:
if "kg" in weight:
weight = weight.replace("kg", "")
weight = float(weight)
weight = int(weight * 1000)
new_list.append(weight)
else:
weight = int(weight.replace("g", ""))
new_list.append(weight)
return new_list
# 제품 무게 리스트
weight_list = ["0.5kg", "500g", "1kg", "750g", "2kg"]
# 단위 통일 실행
normalize_weights(weight_list)
kg과 g으로 나뉘어서 무게 데이터가 나오는 리스트에서 g으로 변환시켜 무게 데이터를 하나의 기준 단위로 볼 수 있도록 바꿀 수 있다.
def equipment_code_decoder(code_list):
korean_to_num = {'영': '0', '일': '1', '이': '2', '삼': '3', '사': '4',
'오': '5', '육': '6', '칠': '7', '팔': '8', '구': '9'}
for code in code_list:
converted_code = ""
for char in code:
if char in korean_to_num:
converted_code += korean_to_num[char]
else:
converted_code += char
print(f"[{code}]에 대한 설비 코드는 [{converted_code}]입니다.")
# 설비 코드 목록
code_list = [
"삼5이사",
"0오6칠",
"48삼구",
"이74팔",
"9일이삼"
]
# 코드 변환 함수 실행
equipment_code_decoder(code_list)
이전에는 딕셔너리를 기억하지 못해 하드코딩으로 하나하나 조건을 확인하면서 해당되면 숫자로 변형시켰으나 이번에는 딕셔너리를 활용하여 문제를 해결할 수 있었다. 하지만, converted_code= ""를 for문 밖에 두어 진행하였더니 반환된 결과값이 계속 쌓이는 현상이 발생하여 for문 안에 배치하여 새로운 객체가 진행될 때마다 새로운 객체만이 converted_code에 들어가서 결과값이 나올 수 있도록 배치하니 문제가 해결됨을 확인할 수 있었다. 다음번에 같은 문제를 풀어도 어려운 문제로 생각하고 시간이 걸릴 것으로 예상이 된다.
import math
# 장비별 이동 거리 계산 함수
def calculate_single_distance(machine_positions):
for machine, positions in machine_positions.items():
# 위치는 항상 두 개의 좌표만 제공됨
x1, y1 = positions[0]
x2, y2 = positions[1]
distance = math.sqrt((x2-x1)**2 + (y2-y1)**2)
print(f"{machine}의 이동 거리: {distance:.2f} 미터")
# 장비별 위치 데이터
machine_positions = {
"Machine A": [(0, 0), (5, 5)],
"Machine B": [(2, 2), (6, 8)],
"Machine C": [(0, 0), (3, 4)]
}
# 이동 거리 계산 실행
calculate_single_distance(machine_positions)
value값을 x1, y1와 x2, y2 변수로 넣었지만 이전에 풀 때에는 변수에 넣어놓고 distance를 계산할 때 하나하나 변수를 사용하지 않고 개개인의 객체로 사용하여 문제 해결을 완료하였지만 오류 발생이 많이 나타났었다. 이번에는 sqrt와 변수를 제대로 활용하여 코드가 이전보다 간결하게 나타났고 코드 작성을 완료할 수 있었다.
SQL에서 연산이 NULL 값이 포함된 경우 연산 결과는 NULL이다.
TRUNC(): 날짜를 지정한 단위로 절삭한다. (이하 날짜 버림)
HAVING 절은 GROUP BY 절과 함께 사용해야 한다.
.head() / .info() / .describe() 는 데이터 형태를 볼 때 거의 무조건적으로 확인해야 하는 수치이기에 새로운 데이터를 확인할 때 기본적으로 사용하여 데이터 정보를 확인해라!
이후, 결측값과 중복 행 개수를 찾기 위해 isnull().sum()과 duplicated().sum()을 사용하여 개수를 확인하라!
✏️ 오늘의 핵심
예제 데이터셋 불러오기, groupby·merge·concat 같은 Pandas의 핵심 문법, 그리고 딕셔너리 활용·좌표 거리 계산과 같은 Python 기본기를 연습하면서 코드 작성이 점점 간결해지고 있다는 것을 체감했다.
Python에서는 딕셔너리를 활용해 조건문을 줄이고 sqrt와 변수 활용으로 간결하게 문제를 해결하는 연습을 할 수 있었다. 아직 fig, axes 같은 객체 지향 시각화는 낯설지만 반복 학습을 통해 익숙해질 수 있다는 자신감을 얻었다.
📌추가로 해야할 점
팀 프로젝트, Python 문법 공부
'품질관리(QAQC) 데이터 부트캠프(본캠프)' 카테고리의 다른 글
| 본캠프_4주차(금)_TIL (0) | 2025.10.03 |
|---|---|
| 본캠프_4주차(목)_TIL (0) | 2025.10.02 |
| 본캠프_4주차(화)_TIL (0) | 2025.09.30 |
| 본캠프_4주차(월)_TIL (0) | 2025.09.29 |
| 본캠프_3주차(일)_TIL (0) | 2025.09.26 |