오늘 한 일
- 코드카타
파이썬
16. x만큼 간격이 있는 n개의 숫자
def solution(x, n):
answer=[]
if x>=0 :
for i in range(x, n*x+1,x):
answer.append(i)
else :
for i in range(x,n*x-1,x):
answer.append(i)
return answer
이렇게 했는데 테스트 1개에서 런타임 에러가 발생
원인을 검색해보니 x가 0일때 range(0,1,0)이 되는데, step 부분에는 0이 들어갈 수 없어서 그런거라고 한다.
그래서 0일경우를 따로 빼줌
수정 후
↓
def solution(x, n):
answer=[]
if x>0 :
for i in range(x, n*x+1,x):
answer.append(i)
elif x<0 :
for i in range(x,n*x-1,x):
answer.append(i)
elif x==0 :
answer=[0]*n
return answer
참고) 다른 사람 코드
def number_generator(x, n):
# 함수를 완성하세요
return [i * x + x for i in range(n)]
print(number_generator(2, 5))
엄청 간단하게 끝냈다
17. 자연수 뒤집어 배열로 만들기
def solution(n):
result = list(map(int, str(n)))
answer = result[::-1]
return answer
숫자열로 바꿔서 한 자 씩 분리, 리스트로 만드는 생각은 했는데 방법을 모르겠어서 찾아보니까 map함수를 쓰면 된다고 한다. 근데 아직도 map이 뭔지는 정확히 모르겠다
map함수 :
- 구문: map(function, iterable)
- 작동 방식: 입력된 객체의 각 원소에 함수를 적용하여 새로운 객체 생성.
- 반환값: map 객체(iterator)를 반환하므로, 실제 데이터 형태(list 등)로 보려면 형 변환이 필요.
- 장점: for 반복문보다 간결하게 리스트의 요소를 변환할 수 있습니다.
라고 함....
18.문자열을 정수로 바꾸기
def solution(s):
answer = int(s)
return answer
처음에 문자열을 받아서 어떻게 분리를 해야하나.. 하며 한참 생각하다가 다른사람이 적은 힌트? 보고 함
생각보다 너무 간단해서 놀랐고... +,-와 같은 기호는 int에 넣었을때 문자가 아니라 부호로 인식하는구나 를 알게됨
19. 정수 제곱근 판별
def solution(n):
digit = n**0.5
answer = 0
if type(digit) == "class 'float'" :
answer = (digit+1)**2
else :
answer = -1
return answer
처음에 이렇게 썼는데 if문을 뭔가 잘못 세운 것 같았다.
그래서 제미나이한테 if문 수정 부탁함
↓
def solution(n):
digit = n**0.5
answer = 0
if digit % 1 == 0: #digit을 1로 나눈 나머지가 0이면 정수라는 뜻
return (digit + 1) ** 2
else :
answer = -1
return answer
if문 조건 세우기가 아직 잘 안되는듯
20. 정수 내림차순으로 배치하기
def solution(n):
result = list(map(int, str(n))) #자연수 뒤집어 배열로 만들기 문제에서 가져옴
result.sort(reverse=True)
return int("".join(result))
처음에 아 정수를 문자열 리스트로 쪼개야겠다 해서 다른 문제에서 썼던 코드 그대로 가져왔는데 아무리 join 써도 안되길래 혹시 싶어서 map()을 빼고 돌림
def solution(n):
result = list(str(n))
result.sort(reverse=True)
return int("".join(result))
그랬더니 됨;;;
이유를 알아봤더니 위쪽의 코드(map 있는거) 에서는
정수 n -> 문자열 -> 각 글자를 다시 정수(int)로 변환 -> 리스트화 되는건데, 마지막에 join을 하기 위해서는 리스트 안의 요소가 반드시 문자열이어야 하기 때문에 안됐던것....
+) join
list = ['a', 'b', 'c']
"".join(list) #리스트를 'abc'라는 문자열로 합쳐줌
"_".join(list) #리스트를 'a_b_c'로, _ 구분자를 넣어서 합쳐줌
SQL
1. 이름이 있는 동물의 아이디
SELECT ANIMAL_ID
from ANIMAL_INS
WHERE NAME is not NULL;
처음에 is not null 했는데 안되길래 오랜만에 해서 까먹었나 싶었다
찾아보니까 마지막에 ;을 안붙여서 그런듯
- 데이터 전처리&시각화 강의 3챕터
- 데이터 분석 입문(라이브 세션) 복습 & 실습
1) 데이터 준비 및 시계열 변환
# 2. 가상의 날짜 데이터 생성 (datetime 변환 실습)
# 2024-01-01부터 데이터 개수만큼 날짜 생성
# Hint: pd.date_range()
dates = pd.date_range(start="2024-01-01", periods=len(df), freq='D') # 코드를 입력하세요
df['order_date'] = dates
pd.date_range 참고 글
https://data-minggeul.tistory.com/9
pandas.date_range - 주기적인 날짜 데이터 생성하기
날짜 데이터의 간격이 규칙적이지 않은 경우를 다룰 때, 원하는 주기의 날짜 데이터를 생성하기 위해 pandas의 date_range 함수(메서드)를 활용할 수 있다. 이번 글에서는 date_range의 인자와 주기 설정
data-minggeul.tistory.com
이 문제에서는 end가 명확하지 않고 데이터 개수만큼 날짜데이터 생성이 목표여서 periods를 활용해야함
-> periods(생성하려는 날짜의 개수)를 df의 개수만큼 (len(df))
-> freq(생성하려는 날짜들의 간격(주기)) D(기본값)
# 3. 날짜가 제대로 들어갔는지, 타입 확인
# order_date가 datetime64인지 확인
display(df.info())
# 3. 날짜가 제대로 들어갔는지, 타입 확인
df[['order_date','day']]
2) 중복 데이터 제거하기
# [상황 설정] 강제로 중복 데이터 만들기 (실습용)
# 첫 5줄을 복사해서 데이터 끝에 붙여넣음
df_dirty = pd.concat([df, df.iloc[:5]])
print(f"중복 제거 전: {len(df_dirty)}행")
# Output: 중복 제거 전: 249행
df_dirty.duplicated()
# 1. 중복 데이터가 있는지 확인
print("중복된 행 개수:", df_dirty.duplicated().sum())
# Output: 중복된 행 개수: 5
# 2. 중복 제거 (첫 번째 값만 남김)
df_clean = df_dirty.drop_duplicates() # 코드를 입력하세요
print(f"중복 제거 후: {len(df_clean)}행")
# Output: 중복 제거 후: 244행
3) 날짜 정보 추출 및 정렬
# 1. 요일, 월 정보를 추출해서 새로운 컬럼 만들기
df['month'] = df['order_date'].dt.month #중요!!!! dt.month를 df 전체가 아니라 df['order_date']에만 써야 함
df['weekday'] = df['order_date'].dt.day_name()
df.head()
# 2. 최신 날짜 순으로 정렬해보기 (내림차순)
df_sorted = df.sort_values(by=['order_date'],ascending=[False])
df_sorted.head()
처음에 dt.month를 df['order_date']가 아니라 df 전체에 써서 에러가 났다 ㅜㅜ
4) 데이터 변환하기
5) 데이터 합치기 1 : 정보 병합
6) 데이터 합치기 2 : 데이터 추가
7) 그룹 집계
- 아티클 스터디
'내일배움캠프(본캠프)' 카테고리의 다른 글
| [내일배움캠프] 본캠프 3/30 (0) | 2026.03.30 |
|---|---|
| [내일배움캠프] 본캠프 3/27 (0) | 2026.03.27 |
| [내일배움캠프] 본캠프 3/25 (0) | 2026.03.25 |
| [내일배움캠프] 본캠프 3/24 (0) | 2026.03.24 |
| [내일배움캠프] 본캠프 3/23 (0) | 2026.03.23 |