Today I Learned

[내일배움캠프 QA/QC 트랙 6기 본캠프] TIL #013 데이터 분석 입문!

JiJi0406 2026. 5. 28. 20:50

001

오늘의 키워드: data 분석 入門

 

프로그래밍 기초 주차가 끝나고 드디어 본격적인 데이터 분석을 배우는 단계로 들어갔다.

 

 

 

 

평소와 같이 오전에는 코드카타 풀고, 데이터 분석이 뭔지, 시각화를 왜 하는지 등등 데이터 분석 입문을 위해 알아야 하는 것들에 대한 내용이 담긴 강의를 들었다.

 

오늘 푼 코드카타 문제는 생각보다 막히는 부분 없이 풀렸는데... 내가 짠 코드가 너무 뚱뚱해서 실행 시간 초과가 뜨는 불상사가...😶‍🌫️

외부 파이썬에서 돌려보면 원하는 결과가 나오기는 하지만 프로그래머스에서는 실패. 못생기고 가독성 떨어지고 효율 나쁜 코드라는 게 이런 거구나 싶었다. (밑에서 더 자세하게 서술)

 

강의는 이번 주차의 학습 목표 설명 위주여서 가볍게 들었고, 오후에 진행된 라이브 세션은... 오늘 VS code 처음 사용해보는 날이라 오류가 많아서 그거 디버깅하느라 놓쳐버려서 못 들었다. 내일 다시보기 뜨면 들어볼 것임. (다시보기를 제공해주심에 감사합니다...🙏)

 


 

002

오늘 배운 내용

 

코드카타 푸는데 좀 걸렸던 문제들 정리해놓으면 나중에 복습하기 좋을 것 같음.

정리 고

 

[오늘의 코드카타] 정수 뒤집고 내림차순 정렬하기 (feat. join, sort)

 

1. 오늘 해결한 문제

주어진 정수 n의 각 자릿수를 큰 것부터 작은 순으로 정렬한 새로운 정수를 리턴하는 함수 만들기. (예: 118372 → 873211)

 

 

2. 내가 작성한 코드

def solution(n):
    answer = 0
    new_list = list(str(n))       # 1. 정수를 문자열 리스트로 쪼개기
    new_list.sort(reverse = True) # 2. 내림차순 정렬하기
    answer = "".join(new_list)    # 3. 리스트를 다시 하나의 문자열로 합치기
    return int(answer)            # 4. 최종적으로 정수(int)형으로 변환해 반환

 

 

3. 코드 한 줄씩 뜯어보기

1) list(str(n)) : 숫자를 하나씩 쪼개기

파이썬에서 정수형(int)은 reverse를 하거나 sort로 정렬할 수 없음.(처음에 이거 까먹고 계속 하다가 안 되니까 계속 뭐여;; 상태였음..ㅎㅎ) 그래서 먼저 str(n)을 통해 문자로 바꾸고, list()로 감싸서 각 자릿수를 하나씩 쪼갠 리스트로 만들어줘야 함.

ex.1234 → '1234' → ['1', '2', '3', '4']

 

2) new_list.sort(reverse=True) : 큰 수부터 내림차순 정렬

.sort() - 리스트를 정렬해주는 메서드. 기본값은 오름차순

괄호 안에 reverse=True 옵션을 넣어주면 내림차순으로 정렬됨.

 

3) "".join(new_list) : 흩어진 문자 합치기

리스트 안에 쪼개져 있는 문자들을 다시 하나의 텍스트로 합쳐야 함. "".join(리스트)를 쓰면 리스트의 요소들이 공백 없이 쭉 이어붙음.

ex. ['4', '3', '2', '1'] → '4321'

 

4) int(answer) : 다시 숫자로 컴백

join을 거쳐서 나온 '4321'은 아직 '문자열' 상태. 문제에서 요구한 최종 정답은 정수(int) 형태이기 때문에, int()로 감싸서 형변환 후 리턴.

 

 

4. 오늘 깨달은 점 & 꿀팁

  • 정수는 바로 정렬하거나 뒤집을 수 없다: 반드시 문자열이나 리스트로 변환하는 과정을 거쳐야 가공할 수 있음
  • join()은 문자열 리스트에만 가능: 리스트 안에 숫자가 들어있으면 join을 못 쓰니까, 미리 문자로 바꿔두는 게 중요

 

 

[VOD 강의] 데이터 전처리 & 시각화 

- 챕터 1, 챕터 2 수강 완료

 

데이터 분석이란?

"데이터를 불러와서, 보기 좋게 정리한 뒤, 의미 있는 결론을 내는 과정"

 

시각화의 목적은 예쁜 그래프 만들기가 아니라 설득

그래서 그래프 그리기 전에 "무엇을 보여줄 것인가"를 먼저 정의해야 함.

가장 중요한 건? 데이터 전처리. 데이터 자체가 잘못되면 아무리 잘 그려도 의미 없음(GIGO).

실제 현업에서 분석 시간의 대부분이 전처리에 쓰인다고...

2025 채용 JD 보면 공통적으로 Python + 시각화 툴(Tableau / Power BI / Matplotlib) 역량을 요구하는 추세. 엑셀만으로는 부족함. 열심히 하좌

 

 

[아티클 스터디]


1. 관계형 데이터베이스
 1) 정의
  : 데이터를 행과 열의 테이블 형태로 저장하여 서로 관계있는 데이터를 관리하는 방식

 2) 중요한 이유
 - 관계형 데이터베이스 양식을 지키고 있는 데이터 → 다른 데이터와 연결하기 쉬움
 - 보유한 다른 데이터와 유기적으로 연결하여 더 넓은 시야를 가질 수 있도록 데이터 분석하려면 관계형 데이터베이스 양식을 따라야 하는 것이 선제 조건

2. 보유한 데이터를 테이블이라 부를 수 있는가?
- 테이블 : 관계형 데이터베이스에서 데이터의 기본 단위
 - 테이블이 되기 위한 구성 조건 모두 충족 → 관계형 데이터베이스 양식

 1) 키(Key)
 : 테이블에는 key가 존재
 - 키(Key): 데이터의 속성(열) 중 식별자로 이용 가능한 속성
 ex. 국민 정보 데이터 안에 이름, 주민번호, 나이, 성별 등의 정보 중 주민번호가 키(개인을 식별할 수 있기 때문)
 - 데이터에 키가 없으면? 
 ⓐ 데이터가 어떤 개인 or 상황 의미하는지 파악 불가
 ⓑ 데이터 분석/인사이트 도출 후 결과를 실제 상황에 적용 불가
 ⓒ 다른 데이터 테이블과 결합 불가

 2) 유일성, 무결성
 : 키로 추정되는 속성 존재 → 진짜 키의 조건을 제대로 만족하는지 살펴봄
 ⓐ 유일성: 하나의 키가 하나의 식별 값을 정확히 식별할 수 있어야 함
 ⓑ 무결성: 데이터에서 키값이 비어 있거나 중복되지 않아야 함

3. 결론
 - 양질의 데이터를 판별하기 위해 Key의 후보군을 찾고, 키가 유일성과 무결성을 만족시키고 있는지 보면 됨
 - 정확히 조건을 만족하는 키가 없다면 해당 데이터는 활용이 힘든 저품질의 데이터로 판별

 

 


003

오늘의 시행착오

 

 

코드도 다이어트가 필요하다

 

뚱뚱하고 복잡한 코드는 프로그래머스에서 실행 시간 초과로 실패가 뜬다는 걸 오늘 직접 경험했다 😇

 

 

 

 

1. 내가 짠 코드 (if-elif-else)
a와 b 중 어느 쪽이 큰지 비교하기 위해 if-elif-else 조건문을 여러 개 작성했더니 코드가 길어지고 가독성도 떨어졌음.

한마디로 밤티 코드

 

2. 다른 분이 짠 코드

 
# 개선 방식 (min, max 활용)
for i in range(min(a, b), max(a, b)+1):
    answer += i
    return answer

 

min(a, b)로 시작값을 잡고, max(a, b)로 끝값을 잡으면 a와 b의 대소 관계에 상관없이 단 하나의 for문으로 예외 케이스까지 전부 처리 가능하다. 훨씬 간결하고 가독성도 좋음.