001
오늘의 코드카타
36. 문자열 다루기 기본
기본 맞아요...? 어려웠는데.......
문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
- s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
입출력 예
| s | return |
| "a234" | false |
| "1234" | true |

def solution(s):
test = True if len(s) == 4 or len(s) == 6 else False # 1. s 길이가 4나 6 → True, 아니면 False
if test == False:
return False #1-1. 길이 4나 6 아니면 바로 False 리턴
clean = [int(i) if i.isdigit() else i for i in s] # 2. s라는 문자열을 하나씩 i에 담아서 봄 → 숫자면 정수형으로, 아니면 문자 그대로 리스트 담기게 함
for t in clean:
if isinstance(t, str): # 3. i의 타입이 str인지 검사
return False # 하나라도 str이 있으면 바로 False 리턴
return True
일단 이 문제를 풀기 위해서, is~로 시작하는 메서드들을 검색해서 알아봤다. (내 지식으로는 한계가 있었기에...)
근데 .isdigit()는
문자열을 보고, 숫자만 있느냐에 따라 True/False로 출력이 되기 때문에
굳이
clean = [int(i) if i.isdigit() else i for i in s]
이렇게 리스트 안 만들어도 됨 ㅋㅋㅋㅋ
더 간결하게 짜려면
def solution(s):
return True if (len(s) == 4 or len(s) == 6) and s.isdigit() else False
이렇게... 삼항연산자 안에 참 조건을 and로 결합해서 짜면 됨
📖 새롭게 알게 된 것 : 문자열 숫자 검증 메서드
1. .isdecimal() - 순수한 10진수 일반 숫자만 인정
2. .isdigit() - 일반 숫자뿐만 아니라, 특수 형태의 숫자(거듭제곱, 위첨자 등)까지 숫자로 인정
3. .isnumeric() - 일반 숫자, 거듭제곱은 물론이고 분수, 로마 숫자, 다른 문화권의 숫자까지 전부 숫자로 인정
→ 인정 조건 맞으면 True 출력
3번은 굳이 몰라도 될듯?
솔직히 이번 문제는 이거 몰랐으면 풀 수 있었나...? 싶다.
002
오늘 학습한 내용
데이터 분석 심화 주차 1일차!
[ 기초 통계 ]
1. 통계가 왜 필요할까? (감 vs 데이터)
통계: 데이터를 객관적인 수치로 드러내서 합리적인 의사결정을 내릴 수 있게 도와줌.
- '감'에 의존한 판단: "왠지 B라인에서 요즘 불량이 자주 나오는 듯? 장비 고장났나?"
- 데이터 기반 통계 분석: B라인 3개월치 데이터 수집 → A, C라인과 평균, 표준편차 비교 → 원인 증명
감으로 안 하고 통계 분석을 하는 이유는? 누가 와서 재현하더라도 똑같은 결과가 나오게 하기 위함!
환경을 보고 어떤 통계 개념을 적용할지 러프하게 떠올릴 수 있다면 통계 분석 개념을 제대로 이해한 것
(세부적인 건 지금 다 알 필요 없고, 프로젝트하면서 다시 봐도 괜찮음)
2. 데이터의 종류
- 수치형 (Numerical)
- 이산형 (Discrete): 셀 수 있는 것 (예: 불량품 개수, 교대 근무 조, 가동 횟수)
- 연속형 (Continuous): 연속적인 측정값 (예: 설비 온도, 압력, 가공 시간)
- 범주형 (Categorical)
- 순서형 (Ordinal): 순서나 등급이 있는 것 (예: 설비 위험 등급 H/M/L, 품질 1등급/2등급)
- 명목형 (Nominal): 순서 없이 이름만 있는 것 (예: 설비 ID, 부품 종류, 센서 위치 이름, 컬러)
3. 기술 통계: 데이터 요약
1) 위치 추정 (대표값)
| 통계 지표 | 특징 및 수식 | 적절한 상황 |
| Mean (평균) | 총합을 데이터 개수로 나눈 값. 이상치에 영향을 많이 받음. | 값들이 고르게 분포됨 (정규분포) |
| Median (중앙값) | 오름차순 정렬 시 50%에 위치한 값. 이상치에 영향을 받지 않음. | 데이터에 극단적인 값(이상치)이 있음 |
| Mode (최빈값) | 가장 자주 등장하는 값. 2개 이상 존재 가능. | 데이터가 범주형(카테고리형)일 때 |
2) 변이 추정 (산포도)
데이터들이 서로 얼마나 흩어져(다르게) 있는지 확인하는 방법임.
- 범위 (Range): 최대값 - 최소값
- 편차 (Deviation): 개별 값과 평균의 차이 (데이터 값 - 평균값)
- 분산 (Variance): 편차를 제곱해서 평균을 낸 값. 데이터의 전체적인 퍼짐 정도를 봄
- 표준편차 (Standard Deviation): 분산에 제곱근을 취한 것. 원래 데이터와 단위가 같아져서 직관적
- 변동 계수 (CV): 표준편차를 평균으로 나눈 것. 서로 다른 단위의 데이터를 비교할 때 씀
import numpy as np
# 1. 평균 계산
mean_value = np.mean(data)
# 2. 편차 (Deviation)
deviations = data - mean_value
# 3. 분산 (Variance) - 모분산 기준 (불편분산은 ddof=1 사용)
variance = np.mean(deviations ** 2)
# 4. 표준편차 (Standard Deviation)
std_dev = np.sqrt(variance)
# 5. 변동 계수 (CV)
cv = std_dev / mean_value
3) 데이터 분포 탐색 & 시각화
# 도수분포표 & 히스토그램
- 도수: 각 구간에 해당하는 값의 개수
- 상대도수: 전체 중 비율 (총합은 1)
- 누적도수: 이전 구간까지 누적된 도수
- 계급: 범위를 일정 구간으로 나눈 것
# 사분위수 & Boxplot
데이터를 4등분했을 때 25%(Q1), 50%(Q2, 중앙값), 75%(Q3) 위치의 값
# 분위수 계산
Q1 = np.percentile(data, 25) # 제1분위수
Q2 = np.percentile(data, 50) # 제2분위수 (중앙값)
Q3 = np.percentile(data, 75) # 제3분위수
# 사분위 범위 (IQR) 계산
IQR = Q3 - Q1
# 이상치(Outlier) 탐지 기준 경계값
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
# 왜도, 첨도, 정규분포
- 정규분포: 평균 중심 좌우 대칭인 곡선 형태.
- 전체 확률 합은 1. 평균 0, 분산 1이면 표준정규분포.
- 통계학은 데이터가 정규분포를 따르지 않으면 분석 꼬임
- 머신러닝 성능을 올리기 위해서도 데이터를 정규분포 형태로 자주 변환
- 왜도 (Skewness): 좌우 비대칭성 정도.
- + (양수): 오른쪽 꼬리가 김 (Right-skewed)
- 0: 좌우 대칭
- - (음수): 왼쪽 꼬리가 김 (Left-skewed)
- 첨도 (Kurtosis): 뾰족한 정도 (파이썬/엑셀은 0 기준 초과첨도 사용).
- + (양수): 정규분포보다 뾰족함 (첨도 > 3)
- 0: 정규분포와 유사 (첨도 = 3)
- - (음수): 정규분포보다 평평함 (첨도 < 3)
from scipy.stats import skew, kurtosis
skewness = skew(data) # 왜도 계산
kurt = kurtosis(data) # 초과첨도 계산
4) 다변량 및 관계 탐색
- 이진/범주 데이터 탐색: 최빈값을 주로 쓰며, 파이그림이나 막대그래프로 시각화함.
- 상관관계 (Correlation): 두 변수가 서로 관련이 있는지 확인 (상관계수 활용)
⚠️ 인과관계 vs 상관관계:
- 상관관계는 둘이 연관이 있네~ 정도
- 인과관계는 원인과 결과가 명확해야 함 (상관관계가 있다고 무조건 인과관계인 건 아님!)
- 다변량 분석: 여러 변수 간 관계 파악.
- sns.pairplot(df)를 쓰면 모든 변수 조합의 산점도를 그려줌 (대각선은 자기 자신과의 관계라 의미 없어서 히스토그램으로 채워짐)
4. 추론 통계 : 미래 or 전체 예측
표본(일부 데이터)을 통해 모집단(전체 데이터)의 특성을 추정하고 가설을 검정하는 방법
ex) 일부 고객 설문조사로 전체 고객 만족도 추정하기
- 신뢰구간: 모평균이 특정 범위 내에 있을 확률.
- 보통 95% 신뢰구간을 쓰는데, 만약 만족도 75점, 신뢰구간이 70~80점이라면 "실제 전체 평균 만족도가 70~80점 사이에 있을 확률이 95%다"라는 뜻
- 가설검정: 가설이 맞는지 검증하는 것.
- 귀무가설 (H0): 기본 가설 (효과 없다, 변화 없다, 차이 없다). 데이터 분석할 때 기각이 되어야 좋음...!
- 대립가설 (H1): 내가 주장하고 싶은 가설 (효과 있다, 변화 있다, 차이 있다)
- p-value: 귀무가설을 기각할지 말지 결정하는 기준 수치. (예: 오전조 vs 오후조 생산성 차이 분석 시 t-test 같은 걸 활용함)
[ 머신 러닝 ]
19:30 라이브 세션이라 전체 내용을 오늘 다 정리할 수가 음슴...ㅎ
뒤에 정리 못 한 내용은 내일 복습하면서 해보겠슴다
1. 머신러닝?
- 정의: 컴퓨터가 데이터를 학습해서 스스로 패턴과 의미를 찾아내도록 하는 연구 분야
- 제조업에서의 역할: 품질 데이터 자동 분석, 공정 이상 탐지 및 예측, 결함률 감소 → 생산성 향상
2. 머신러닝 학습의 종류
1) 지도 학습 (Supervised Learning)
: 정답(Label, y data)을 알려주고 공부시키는 방법. 예측과 분류가 주 목적
- 분류 (Classification): 데이터를 미리 정해진 그룹(카테고리)으로 나누는 작업.
- 이진 분류 (많이 씀!): 불량/정상, 성공/실패 등 2개로 분류 (예: 로지스틱 회귀, 의사결정 트리, SVM).
- 다중 분류: 제품 종류, 이미지 분류 등 3개 이상으로 분류.
- 회귀 (Regression): 연속적인 숫자 값을 예측하는 작업 (예: 배터리 두께 예측, 날씨/주가/에너지 사용량 예측).
- 선형 회귀: 데이터가 직선 형태라고 가정 (y = ax + b)
- 다항 회귀: 곡선 형태의 비선형 데이터 모델링
- 기타: 릿지/라쏘(규제 추가), 결정트리/랜덤포레스트 회귀, 딥러닝 기반 회귀 등
2) 비지도 학습 (Unsupervised Learning)
: 정답(Label) 없이 데이터의 숨겨진 패턴이나 구조(인사이트)를 발견하는 방법. 정확도 측정이 불가, 주로 EDA(탐색적 데이터 분석)나 전처리 단계에서 사용
- 클러스터링 (군집 분석): 유사한 데이터끼리 그룹으로 묶기 (ex: K-Means, DBSCAN).
- 차원 축소: 수많은 센서 데이터 등 복잡한 특징을 몇 가지 중요한 지표로 압축/요약 (ex: PCA).
- 연관 규칙 학습: 데이터 간의 상관관계 발견 (예: "우유를 사면 빵도 살 확률이 높다"는 장바구니 분석).
3) 강화 학습 (Reinforcement Learning)
- 행동에 따른 보상(Reward)을 최대화하는 방향으로 기계를 학습시킴 (중요도 낮아서 앞으로 학습X)

.........
와 잠만 너무 힘든데
저번주는 계속 프로젝트만 하다가 (물론 이것도 쉽지 않았다만)
오랜만에 다시 학습 주차 들어오니까 빡세다 빡세
라이브 3개 + VOD 강의 하나 듣고 정리까지 끝낸 하루....
후....,.
ㅎㅎ..
잠시만요
TIL 끝내기 전에 자랑 한 번 하고 가겠습니다.

마지막 줄 보이세요?ㅎㅎ
많은 분들께 발표 칭찬을 받았는데...
그럴 때마다 좀 부끄럽긴 했지만 기분은 좋았습니다.
(칭찬 받으면 고장나는 타입)


한 페이지에 모아놓고 보니까 뿌듯하네 ㅎㅎ
새로 바뀐 팀에서 심화 프로젝트도 화이팅 👊

+ tmi: 저 어벤져스 안 봐서 하나도 모르는데...
검색해보니까 블랙위도우가 제일 따라하기 쉬워보이길래
저걸로 했어요
'Today I Learned' 카테고리의 다른 글
| [내일배움캠프 QA/QC 6기] TIL #028 (0) | 2026.06.19 |
|---|---|
| [내일배움캠프 QA/QC 6기] TIL #027 (1) | 2026.06.18 |
| [내일배움캠프 QA/QC 6기] TIL #025 커리어 데이 (0) | 2026.06.16 |
| [내일배움캠프 QA/QC 6기] TIL #024 기초 프로젝트 끝!! (1) | 2026.06.15 |
| [내일배움캠프 QA/QC 6기] TIL #023 (0) | 2026.06.12 |