
벌써 목요일이다. 루틴처럼 Atani와 코드카타를 풀었다. 그리고 저녁시간 전까지 개인 과제를 풀었다. 중간에 라이브세션도 들어주면서 하니까 생각보다 시간이 걸렸다. seaborn에 대해 배웠는데 matplotlib과는 다르게 코드도 짧고 간결하며 좀 더 트렌드한 그래프가 만들어져서 흥미로웠다.
오늘 개인과제에 시간을 할애한만큼 금요일에는 이번주에 배웠던걸 다시 복습하면서 다음주에 있을 기초프로젝트를 목 닦고 기다려야겠다. (채용공고 눈팅만 하지말고 이력서도 좀 넣고...)
🤖 Atani
Q1.

⭐ 정답 : A
추세 (Trend) : 시계열 데이터에서 장기적으로 나타나는 증가 또는 감소의 전반적인 방향성
B : 계절성(Seasonality)에 대한 설명
C : 잔차(Residual)에 대한 설명
D : 잔차의 일부 특성만을 설명한 것
Q2.

⭐ 정답 : C
| 가법 모형(Additive Model) | 승법 모형(Multiplicative Model) |
| 계절성의 변동 폭이 일정할 때 사용 (Y=T+S+R) | 계절성의 변동 폭이 추세 수준에 비례하여 변할때 사용 (Y=T*S*R) |
Q3.

⭐ 정답 : A
A : result.trend 는 추세 성분
B : result.seasonal 은 계절성 성분
C : result.resid 는 잔차 성분
D : result.observed 는 원본 데이터를 나타냄.
Q4.

⭐ 정답 : D
Residual (잔차)는 Trend와 Seasonality를 제거한 후 남은 불규칙한 변동으로, 예측 불가능한 랜덤한 노이즈를 나타낸다.
→ Residual에서 규칙적인 패턴이 발견된다면 이는 모델이 데이터의 구조를 충분히 포착하지 못했다는 뜻이다.
Trend는 장기적 추세, Seasonality는 주기적 반복 패턴을 의미하며, 이 두 요소를 제거한 후 남은 것이 Residual이다.
Q5.

⭐ 정답 : B
Seasonality : 일정한 주기(계절, 월, 요일 등)로 반복되는 패턴 → B) 아이스크림 판매량이 매년 여름과 겨울에 규칙적으로 증감하는 패턴
A, D : Trend (장기적 추세)의 예시
C : Residual (불규칙 변동)의 예시
🤔
Atani와 오늘 라이브세션에서 다뤄서 시계열 데이터에 대한 개념을 완벽하게 이해할 수 있었다. 또한 추세, 계절성, 잔차의 차이를 구분할 수 있게 되었다. 규칙적인 패턴과 불규칙적인 패턴을 확실하게 구분해서 생각해야겠다 싶었다.
⌨️ 코드카타
● 41번 ●


● 42번 ●


● 43번 ●


● 44번 ●


● 45번 ●


1단계: ord(char) - ord('A') → "기차 칸 번호로 바꾸기"
- ord('Z')는 컴퓨터 방 번호로 90입니다. ord('A')는 65
- 계산해보면: $90 - 65 = 25
- 원리: 'A'를 기준으로 삼아 뺐더니, 'Z'는 알파벳의 25번째 기차 칸이라는 것이 나옴. (알파벳은 0번 'A'부터 25번 'Z'까지 총 26개)
2단계: + n → "기차 출발! 전진하기"
- 25번째 칸에 있던 기차를 n(2칸)만큼 앞으로 밀어줌.
- 계산해보면: $25 + 2 = 27
- 문제 발생: 알파벳 기차 칸은 25번('Z')이 끝인데, 27번 칸은 존재하지 않습니다! 일렬로 타면 기차가 선로를 탈선하게 됨.
3단계: % 26 → "원형 선로로 탈선 막기 (한 바퀴 돌리기)"
- 퍼센트(%) 기호는 나눈 나머지를 구하는 연산자임. 알파벳이 총 26개니까 26으로 나눠줌.
- 계산해보면: 27 % 26 → 27을 26으로 나누면 몫은 1이고 나머지는 1이 됨.
- 원리: 25번('Z')을 지나쳐서 생긴 27번은, 원형 선로를 한 바퀴 돌아서 다시 1번 칸이 됨. (0번이 'A'니까, 1번 칸은 'B' 자리!) 26을 넘어가도 안전하게 다시 처음으로 돌아오게 만듬.
4단계: + ord('A') 그리고 chr(...) → "진짜 컴퓨터 방 번호로 복구해서 문자로 바꾸기"
- 아까 1단계에서 65(ord('A'))를 빼서 기차 칸으로 만들었기 때문에 이제 다시 진짜 컴퓨터 방 번호로 돌려주기 위해 65를 더함.
- 계산해보면: 1번 칸 + 65 = 66
- 최종적으로 chr(66)을 실행하면 컴퓨터 방 번호 66호에 살고 있는 문자 'B'가 나오게 됨!
🤔
오늘부터 레벨3 문제라 그런지 푸는데 오래 걸렸다. 3문제 푸니까 10시였다. 그래도 하루 5문제가 목표였기에 44번, 45번을 풀려고 했는데 45번이 코드를 어떻게 짜야될지 몰라서 지피티의 도움을 좀 받았다. 직관적으로 이해하기 쉽게 정리해서 초보티가 보이지만 이해는 되서 다음에도 알파벳 문제가 나오면 참고할 수 있을 것 같다.
📝 개인 과제


두 코드에서 결측치를 다르게 작성해야하는걸 알게 되었다.
np.nan은 Numpy 라이브러리를 사용하는 것이고, pd.NA는 pandas 라이브러리를 사용하는 것 이기때문이다.

- pd.cut ( ) : 연속적인 숫자 데이터를 여러 개의 구간(bin)으로 나눈다.
ex)
import pandas as pd
score = [45, 65, 82, 95]
bins = [0, 60, 80, 100]
labels = ['낮음', '보통', '높음']
pd.cut(score, bins=bins, labels=labels)
◆ 결과
45 → 낮음
65 → 보통
82 → 높음
95 → 높음
- include_lowest = True : 첫번째 구간의 최소값도 포함시킨다.
ex) bins = [0, 2, 5, 10]
일 때 기본 구간은
(0, 2]
(2, 5]
(5, 10]
→ ( : 포함 안함, ] : 포함함
※ include_lowest = False (기본값)
0 → 어떤 구간에도 포함되지 않음 (NaN)
1 → (0, 2]에 포함
2 → (0, 2]에 포함

- index를 넣어야하는 이유 : 범주 이름을 가지고 있어서 파이 조각의 이름을 표시하기 위해
1. index 없을 때

2. index 있을 때
