양질의 데이터를 판별하는 5가지방법 : ③관계형 데이터베이스인가?
[공통 인사이트]
키 값에는 유일성과 무결성이 필수다
[의미 있었던 의견]
SQL에서 키 얘기가 나왔었는데 그걸 짚어주는 것 같아서 좋았다
활용하기 좋은 데이터는 공통의 형식이 존재한다
모든 데이터에 키가 존재한다
🔗개인과제
1. 숫자 리스트의 평균을 계산하는 방법 🟢
내가 작성한 코드
# 예시 데이터
numbers = [10, 20, 30, 40, 50]
def calculate_avg(numbers):
total_avg = sum(numbers) / len(numbers)
return total_avg
total_avg = calculate_avg(numbers)
print("숫자들의 평균:", total_avg)
2. 가장 낮은 기온과 가장 높은 기온을 활용하여 일교차를 함수로 작성 🟢
내가 작성한 코드
numbers = [10, 20, 30, 40, 50]
def calculate_diff_temperature(numbers):
diff_temp = max(numbers) - min(numbers)
return diff_temp
diff_temp= calculate_diff_temperature(numbers)
print("일교차:", diff_temp)
3. 가장 많이 판매된 제품의 이름과 수량을 반환하는 함수 🟡
내가 작성한 코드
def find_top_seller(sales_data):
top_product = max(sales_data, key = sales_data.get) # key
max_sales = sales_data[top_product] #value
return top_product, max_sales
# 테스트
sales_data = {"apple": 50, "orange": 2, "banana" : 30}
print("가장 많이 판매된 제품과 수량 :", find_top_seller(sales_data))
# 출력 : 가장 많이 판매된 제품과 수량 : ('apple', 50)
numbers = [10, 70, 30, 60, 20]
max_n = 0
for n in numbers:
if n > max_n:
max_n = n
print(max_n)
반복문을 통해서 하나씩 꺼내오면서 비교 > 더 큰 값을 가져옴
max_value = 0
for value in sales_data.items():
if value > max_value:
max_value = value
print(max_value)
max_value = 0
#key 의 경우 비교하지 않아도 되므로 초기값 필요 x
for key, value in sales_data.items():
if value > max_value:
max_value = value
max_key = key
print(max_key, max_value)
4. 사칙연산을 수행할 수 있는 프로그램 구현 🟢
내가 작성한 코드
def simple_calculator(num1, num2, operator):
if operator == '+':
return num1 + num2
elif operator == '-':
return num1 - num2
elif operator == '*':
return num1 * num2
elif operator == '/':
if num2 == 0:
return 'Cannot divide by zero'
return num1 / num2
else :
return "계산불가"
에러가 뜬 상황에서 대처를 하는 거
try: # 계속 반복해서 수행할 작업
result = 10 / 0
print(result)
except: # 에러가 뜰 경우 수행할 작업
print('나누기 안 됨')
def simple_calculator(num1, num2, operator):
if operator == '+':
return num1 + num2
elif operator == '-':
return num1 - num2
elif operator == '*':
return num1 * num2
elif operator == '/':
try:
return num1 / num2
except:
return 'Cannot divide by zero'
else:
return 'Invalid operator'
5. 이메일 주소가 올바른 형식을 갖추고 있는지 판단하는 프로그램 구현 🟢
내가 작성한 코드
def validate_emails(email_list):
for email in email_list:
if '@' not in email:
print(f"{email} 유효하지 않은 이메일 주소입니다.")
continue
id, domain = email.split('@')
if len(id) == 0:
print(f"{email} 유효하지 않은 이메일 주소입니다.")
elif '.' not in domain:
print(f"{email} 유효하지 않은 이메일 주소입니다.")
else:
print(f"{email} 유효한 이메일 주소입니다.")
# 이메일 목록
email_list = [
"example@example.com",
"wrongemail@com",
"anotherexample.com",
"correct@email.co.uk"
]
# 이메일 유효성 검사 실행
validate_emails(email_list)
def validate_emails(email_list):
for email in email_list:
if '@' in email:
parts = email.split('@')
if len(parts) == 2:
username, domain = parts # pythontic한 코드 (언패킹)
# username = parts[0]
# domain = parts[1]
if '.' in domain:
print(f"{email} 유효한 이메일 주소입니다.")
else:
print(f"{email} 유효하지 않은 이메일 주소입니다.")
else:
print(f"{email} 유효하지 않은 이메일 주소입니다.")
else:
print(f"{email} 유효하지 않은 이메일 주소입니다.")
for n in [1,2,3,4,5]:
print(n)
if n == 2:
print('당신은 continue를 만났습니다')
continue
print(n*100)
1
100
2
당신은 continue를 만났습니다
3
300
4
400
5
500
for n in [1,2,3,4,5]:
print(n)
if n == 2:
print('당신은 break를 만났습니다')
break
print(n*100)
1
100
2
당신은 break를 만났습니다
def validate_emails(email_list):
for email in email_list:
if "@" in email:
parts = email.split('@')
if len(parts) == 2:
username, domain = parts
if "." in domain:
print(f"{email} 유효한 이메일 주소입니다.")
continue
print(f"{email} 유효하지 않은 이메일 주소입니다.")
6. 각 문자가 등장하는 빈도를 함께 출력하는 프로그램 구현 🔴
내가 작성한 코드
def remove_duplicates_and_count(s):
result_with_frequency = []
for character in sorted(set(s)): #정렬은 되나 숫자가 먼저 등장
count = s.count(character)
result_with_frequency.append((character, count))
return result_with_frequency
# 예시 문자열
input_string = "abracadabra123321"
# 중복 문자 제거 및 빈도수 계산 실행
result = remove_duplicates_and_count(input_string)
print(result)
#실행 결과
[('a', 5), ('b', 2), ('r', 2), ('c', 1), ('d', 1), ('1', 2), ('2', 2), ('3', 2)]
def remove_duplicates_and_count(s):
result_with_frequency = []
frequency = {} # 각 문자의 빈도수를 저장할 딕셔너리
for char in input_string:
# 각 문자의 빈도수 업데이트
if char in frequency.keys():
frequency[char] += 1
else:
frequency[char] = 1
return list(frequency.items())
a_dict = {}
a_dict['가'] = 1
a_dict['나'] = 2
a_dic # {'가': 1, '나': 2}
a_dict.keys() # a_dict.keys()
7. 경기 동안 각 선수가 이동한 총 누적 거리를 계산하는 프로그램 구현🔴
피타고라스 a^2 + b^2 = c^2
c = sqrt(a^2 + n^2)
거리 기반 계산 : 유사도 계산 시 사용하는 걸로 이해
for player.positions in player_positions.items():
total_distance = 0.0
for i in range(0, len(positions) -1): # 두 개의 차이를 구해야하기 때문에 -1
x1, y1 = positions[i]
x2, y2 = positions[i+1]
# x1 = positions[i][0] # i=0일때 0
# y1 = positions[i][1] # 0
# x2 = positions[i+1][0] # 1
# y2 = positions[i+1][1] # 1
distance = ((x2 - x1) ** 2 + (y2 - y-1) ** 2) ** 0.5
# distance = np.sqrt((x2 - x1) ** 2 + (y2 - y-1) ** 2) numpy 라이브러리 사용시
# distance = math.sqrt((x2 - x1) ** 2 + (y2 - y-1) ** 2) math 라이브러리 사용시
total_distance += distance
print(f"{player}의 총 누적 이동 거리 : {total_distance:.2f} 미터")
# 두 자리까지 보여주는거 / 반올림인 경우 round 사용이 맞음
8. 언어를 확인하여 암호를 해독하는 프로그램 구현
카카오 코테 변형 문제⚠️
s = 'seven칠육zero'
#영어 딕셔너리 생성
en_num = {'zero':0, 'one':1, 'two':2, 'three':3,
'four':4, 'five':5, 'six':6, 'seven':7,
'eight':8, 'nine':9}
#한글 딕셔너리 생성
ko_num = {'영':0, '일':1, '이':2, '삼':3, '사':4, '오':5,
'육':6, '칠':7, '팔':8, '구':9}
#딕셔너리 돌면서 key,value가 일치하면 바꾸기
for item in en_num.items():
word, num = item
s = s.replace(word, str(num))
for item in ko_num.items():
word, num = item
s = s.replace(word, str(num))
number = 0
for i in [1,2,3,4,5]:
number += 1
s = 'onetwothree'
s1, s2 = s.split('two')
s1 + str(2) + s2 # one2three
def solution(s):
en_num = {'zero':0, 'one':1, 'two':2, 'three':3,
'four':4, 'five':5, 'six':6, 'seven':7,
'eight':8, 'nine':9}
ko_num = {'영':0, '일':1, '이':2, '삼':3, '사':4, '오':5,
'육':6, '칠':7, '팔':8, '구':9}
en_n = 0
for item in en_num.items():
word, num = item
if word in s:
en_n += 1
split1, split2 = s.split(word)
s = split1 + str(num) + split2
ko_n = 0
for item in ko_num.items():
word, num = item
if word in s:
ko_n += 1
split1, split2 = s.split(word)
s = split1 + str(num) + split2
return s, ko_n, en_n
SQL - 재구매가 일어난 상품과 회원 리스트 구하기
SQL - 최댓값 구하기
Python - 제일 작은 수 제거하기
Python - 가운데 글자 가져오기
53-54✅코드카타 29-30✅ 해설세션 참여✅ 기초트레이닝 Day5 ❌ 4주차❌5회차 참석✅개인과제 1-5✅원래 오늘 전처리 강의 완강하려고 했는데, 생각해보니 빨리 과제를 시작해야 할 것 같아서 하루종일 과제만 했다. SQL때처럼 머리에서 뭔가 다다닥 나와서 쓰는 게 아니라, 오픈북 테스트처럼 기존 자료들 뒤져보고 구글링 하면서 이건가? 이건가? 하면서 찾아보는 시간이 길어서 엄청 힘들었다
어떻게든 5번까지 풀긴했는데 6번은 내일 마저 다시 해봐야할 것 같다 그래도 파이썬 알고리즘 문제같은 것보단 판다스가 훨씬 나은 것 같기두..😭
지난주부터 정신이 하나도 없는데 내일도 정신 없을 예정.. 파이팅🍀

오늘의무드
break = 현재 내 꼬락서니