[250205] 사전캠프 14일차 아티클 스터디 + Python(map, filter, lambda, class)

이효원·2025년 2월 5일

아티클 스터디

데이터 분석가에게 코딩 테스트가 필요할까?
[주제]

  • 데이터 분석가의 코딩테스트
    [아티클 요약]
  • 코딩테스트에 대해서
    • 코딩 관련 자격증 굉장히 다양
    • 코딩 시험 과정
      • 실제 업무와 유사한 코드 작성
      • 특정 프로그래밍 언어를 사용하여 주어진 문제를 잘 해결할 수 있는지 평가
      • 다양한 프로그래밍 언어를 테스트하기도 함
    • 데이터 분석가 업무 역량은 코딩 테스트만으로 확인하기 어려움
  • 데이터 분석가의 업무
    • 데이터를 분석/활용하여 풀어내는 역할
      • 데이터를 활용해 운영 중인 서비스 고도화
      • 데이터 기반 의사 결정을 위한 전략 및 분석 지원
      • 전사적 목표 달성을 위한 가설 설정 및 검증 위한 실험 설계 및 분석
      • 인사이트 제공을 위한 지표 정의 및 대시보드/리포트 제작
        • 새로운 가치 발견
    • 소방청의 예시 : 국내 사건사고 데이터 시각화
      • 데이터 분석을 통해 사고 위치, 유형 및 발생 빈도 파악
      • 안전 난간 설치 등 개선
      • 출동 건수 22% 감소 및 사상자 수 43% 감소 효과
    • 오바마 캠프 A/B 테스트
      • 다양한 데이터 활용하여 세그먼트 별 효과적인 캠페인 진행
    • 서울 심야버스 노선 최적화 (데이터 기반 의사결정 전략)
      • 유동인구 밀집도 분석 및 기반 노선 최적화
      • 유동 인구 기반 배차간격 조정
  • 기업 내 데이터 분석가의 업무
    • 기업은 위와 같은 성공 사례를 기대함
    • 위 사례의 5가지 공통점 (연관되는 역량)
      • 분석할 수 있는 데이터 준비되어 있음
      • 서비스를 통해 풀고자 하는 문제 명확히 인지 : 문제 정의
      • 복잡한 혹은 최신 논문에 나오는 데이터 분석 기법을 활용하지 않음 : 데이터 분석에 대한 이해
      • 다양한 팀과의 협업을 통해 문제 해결 : 타 직군과의 협업
      • 특별히 어떤 툴을 썼다는 언급 X
  • 정해진 답이 없는 업무
    • 데이터를 활용해 정해진 답이 없는 문제를 해결해야 함
    • 이러한 역량 확인을 위해서는 과제 전형이 더 효과적
    • 데이터 분석을 위해 데이터 수집부터 시작하는 기업도 존재
      • 그러나 수집하는 직군은 데이터 엔지니어로 정의하는 것이 자연스럽다는 의견
    • 문제 풀이의 방법보다, 문제 정의와 만들어 낼 수 있는 결과에 초점
  • 코딩테스트와 데이터 분석
    • 너무 기술적인 관점에만 몰입하는 것은 좋지 않음
    • 데이터 직군은 기술 외에 다양한 역량 필요
    • 데이터 직군 코딩테스트 예시
      • 머신러닝 모델의 평가 지표 계산
      • SQL 활용한 메트릭 계산
      • 텍스트 등의 데이터 파싱 및 전처리
    • 추가적인 역량
      • 통계학 : 상당히 많은 데이터 분석 방법들이 통계학에 기반
      • 심리학 : 고객이 다음 행동을 진행하기 위해서 필요한 보상과 막는 장벽 등을 모델링하고 설계

[인사이트]
다양한 아티클을 통해 데이터 분석가의 업무에 대해서 배우다보니 이제 조금 감이 잡힌 것 같다. 특히 세가지 사례를 통해 더 확실하게 이해할 수 있어서 좋았다. 데이터 분석은 정해진 답이 없는 직무이기 때문에 굉장히 재밌을 것 같고 동시에 어려울 것 같다. 복잡한 분석 기술과 최신 분석툴을 사용한다고 다 좋은 결과가 나오는 것이 아니기 때문에 분석가의 역량이 더 중요하다고 생각했다. 코딩 기술 말고도 통계학을 공부해서 역량을 키워야겠다고 느꼈다. 캠프를 진행하면서 데이터 분석 기술에만 집중하지 않고 문제 전체를 처음부터 끝까지 해결하는 능력을 키워야겠다는 생각이 들었다. 또 아티클에서 추가로 추천하는 ‘데이터 분석가가 되고 싶은 취준생을 위한 안내서’를 읽고 어떤 것들을 준비해야하는지 더 생각해봐야겠다.

Python

간단히 표현

if문 - 삼항연산자

참일 때 값 if 조건 else 거짓일 때 값

# 기본 if 문
num = 3
if num%2 == 0:
    result = "짝수"
else:
    result = "홀수"
# 한 줄로 적기 : 삼항연산자
result = "짝수" if num%2 == 0 else "홀수"

for문

a_list  = [1, 3, 2, 5, 1, 2]
# 기본 for문
b_list = []
for a in a_list:
    b_list.append(a*2)
# 한줄로 적기
b_list = [a*2 for a in a_list]

map, filter, lambda식

map - 리스트의 모든 원소를 조작하기

주어진 함수를 반복 가능한 객체(리스트, 튜플 등) 의 모든 요소에 적용

map(함수, 반복 가능한 객체)

filter

주어진 함수로 조건을 걸어 True인 값만 반환

filter(함수, 반복 가능한 객체)

lamba

이름 없는 간단한 함수를 정의

lambda 인수: 반환값

함께 사용한 예시

# map
numbers1 = [1, 2, 3, 4, 5]
result1 = map(lambda x: x * 2, numbers)
print(list(result1))  # [2, 4, 6, 8, 10]

# filter
numbers2 = [1, 2, 3, 4, 5, 6]
result2 = filter(lambda x: x % 2 == 0, numbers)
print(list(result2))  # [2, 4, 6]

클래스 class

객체 지향 프로그래밍(OOP)의 핵심 개념
: 객체를 생성할 수 있는 청사진(템플릿) 또는 설계도

class ClassName:
    # 속성(변수) 
    '''__init__(self): 클래스의 생성자로, 객체가 생성될 때 호출됩니다. 
    객체의 초기 속성을 설정하는 데 사용됩니다.'''
    def __init__(self, 매개변수1, 매개변수2):
        self.속성1 = 매개변수1
        self.속성2 = 매개변수2
        '''self: 현재 객체를 가리키는 참조 변수로, 
        클래스 내부에서 객체의 속성에 접근할 때 사용됩니다.'''

    # 메서드(함수)
    def method_name(self):
        # 메서드에서 할 일
        pass

클래스 변수: 모든 인스턴스에서 공유되는 변수.
인스턴스 변수: 각 인스턴스마다 독립적으로 존재하는 변수.
상속 (Inheritance) : 기존 클래스(부모 클래스)를 기반으로 새로운 클래스(자식 클래스)를 만들 때 사용. 자식 클래스는 부모 클래스의 속성과 메서드를 상속받아 재사용함.

느낀점

args랑 kwargs는 그냥 눈으로만 보고 넘어갔다. 강의가 짧은데 내용이 많아서 이해가 쉽지 않았다. GPT한테 열심히 물어보면서 공부했다. 남은 시간 동안 문제 많이 풀어서 파이썬이랑 sql에 최대한 익숙해지고 싶다. HSK 때문에 SQLD 공부할 시간이 없다... 어떻게든 되겠지.

0개의 댓글