Today's Goals
1. SQL 꾸준한 연습
2. 파이썬 기억 돌려내 - 코드카타 시작, 파이썬 강의, 개인 과제
3. 데이터 리터러시 강의 완강
기초 문제를 직접 코드를 쓰면서 풀어가니 다시 자신감을 회복한 간사한 인간...
파이썬 공부하면서 SQL도 끊김 없이 꾸준히 가져갈 것
1. SQL 연습
[null이 포함된 컬럼에서 특정 값이 아닌 경우 모두 찾아내기]
- 단순히 조건에서 column != 2만 걸면 2가 아니면서 null 또한 아닌 값을 추출하게 됨
- 따라서 null인 값도 조건에 추가해 주어야 함
select name
from Customer
where referee_id is null or referee_id != 2
- 추가로, 애초에 null값을 2가 아닌 값으로 변경하여 != 조건만 걸어주는 방법도 있음
SELECT name
FROM customer
WHERE COALESCE(referee_id,0) != 2;
2. 파이썬 자신감 회복기
Python 코드카타
[=와 == 차이!!!!!!]
- =는 할당의 의미, A는 B와 같다라는 의미를 주려면 ==를 써야하는 것을 주의!!!!!!!(안그럼 오류남)
[반복적으로 업데이트되는 변수는 초기값 지정 필수]
def solution(n):
answer = 0
for i in range(n+1) :
if i % 2 == 0 :
answer += i
return answer
- 위 함수는 answer 값에 반복적인 업데이트가 진행됨 > 반복문 실행 전에 answer의 초기값 설정 필요
[range함수의 마지막 값?]
- range 함수는 끝 값으로 지정한 값의 바로 직전까지만 반환됨
- range(10)은 9까지만 반환하는 것
Python 개인 과제(~문제5)
[리스트에서 n번째 값 x임을 출력하기 - 특정값의 index 찾기]
- 리스트명.index(특정 값) : 리스트 안에서 특정 값의 인덱스(위치)를 알 수 있음
- for index,value in enumerate(리스트명, start=인덱스시작값) : 인덱스와 그 위치의 값이 쌍을 이루어 결과로 출력됨
- start의 기본값은 0, 1번째 값이라고 직관적으로 알고 싶다면 start=1을 해주면 됨
[딕셔너리 사용법]
02-5 딕셔너리 자료형
사람은 누구든지 "이름" = "홍길동", "생일" = "몇 월 며칠" 등과 같은 방식으로 그 사람이 가진 정보를 나타낼 수 있다. 파이썬은 영리하게도 이러한 대응 관계를 나타낼 …
wikidocs.net
[Python 입문 강좌 - 11] 파이썬 딕셔너리(Dictionary) 정리 및 사용법
더보기 ##파이썬 입문 목차 1. 파이썬 이란? 2-1. 파이썬 윈도우 설치 2-2. 파이썬 맥북 설치 2-3. 윈도우 파이썬 IDE 파이참 설치하기 2-4. 맥북 파이썬 IDE 파이참 설치하기 3. 파이썬 변수(Variable)의 정
ctkim.tistory.com
- 딕셔너리에서 키, 값, 키-값 을 추출하기 위해서는 dict.keys(), dict.values(), dict.items()를 쓰면됨
- 그 결과는 모두 리스트로 출력됨(키와 값은 각각 하나의 요소 단위로, 키-값은 (키,값) 쌍 단위로 리스트에 들어감)
[return과 print의 차이]
오늘 나의 최대 고민과 질문이었음- return은 특정 연산, 값 등을 반환하는 것, print는 눈에 보이게 출력하는 것
- return : 정의된 함수 안에서 모든 연산이 계산되기만 하면 되고, 출력까진 필요없는, 즉, 함수의 결과값을 다른 코드 안에서 사용해야 하는 경우에 적당
- print : 정의된 함수 안의 모든 연산이 이루어지고, 그 결과값이 출력되는거까지 하나의 과정인 함수일 때 적당(디버깅 필요한 경우?)
- 예1 : 숫자 연산을 하는 함수를 만들어서 최종 결과를 print로 출력하도록 정의를 한다면, 최종 출력값은 문자형이 됨. > 숫자를 매개변수로 받는 다른 함수에서 해당 함수를 사용할 때 (함수2(함수1(a))) 문제 발생
- 숫자를 print하면 문자가 되는 것은 print(num)이 print(str(sum))과 같은 기능이기 때문 > num자체의 type 변화는 없지만 print된 값은 str type이 됨
Python 종합반 강의
[리스트 캄프리헨션]
- 리스트 안에 반복문과 조건문을 작성하여 간결하게 리스트를 생성하는 법
- 굳이 사용하려고 할 필요는 없음
# 기본적인 구조
[표현식 for 항목 in iterable if 조건문]
# 예시: 1부터 10까지의 숫자를 제곱한 리스트 생성
squares = [x**2 for x in range(1, 11)]
print(squares) # 출력: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# 예시: 리스트에서 짝수만 선택하여 제곱한 리스트 생성
even_squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print(even_squares) # 출력: [4, 16, 36, 64, 100]
# 예시: 문자열 리스트에서 각 문자열의 길이를 저장한 리스트 생성
words = ["apple", "banana", "grape", "orange"]
word_lengths = [len(word) for word in words]
print(word_lengths) # 출력: [5, 6, 5, 6]
# 예시: 리스트 컴프리헨션을 중첩하여 2차원 리스트 생성
matrix = [[i for i in range(1, 4)] for j in range(3)]
print(matrix) # 출력: [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
[lambda 함수]
- 일반 함수보다 간결하게 작성 가능한 방법
- 이름을 정할 필요가 없고, 바로 변수를 지정하고 수식을 쓰면 됨
- 코드의 해당 위치에서 일회성 개념으로 쓸 때 좋아서 일반적인 파이썬 코딩이 아닌 데이터 분석에서 유용함
add = lambda x, y: x + y
print(add(3, 5)) # 출력: 8
[map과 filter에서 lambda함수의 차이]
- filter는 lambda에서 정의하는 함수가 필터링할 조건이 됨(조건에 충족하면 추출)
- map은 lambda에서 정의하는 함수가 매개변수를 받아 계산됨(함수 계산 결과 매핑)
filter(조건 함수, 반복 가능한 데이터)
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # 출력: [2, 4, 6, 8, 10]
map(함수, 반복 가능한 데이터)
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers) # 출력: [1, 4, 9, 16, 25]
3. 데이터 리터러시
[데이터 리터러시란]
- 데이터 리터러시? 데이터를 읽고, 이해하고, 분석하는 능력(올바른 질문으로 연결됨)
[문제 정의 방법]
- 문제 정의 방법 1 , MECE : 상호 배타적이지만, 전체적으로 포괄적인 그룹화(빠지는 요소 없이, 겹치는 요소 없이 문제의 구성요소를 그룹화 할 수 있어야 함)
- 문제 정의 방법 2 , 로직 트리 : 문제를 상위 문제에서 하위 문제로, 계층적 세분화 하는 방법
[지표의 정의]
- 지표란? 목표나 성과 측정을 위한 기준(구체적이고 측정 가능해야 함) > 목표 달성을 위한 핵심 정보를 제공해야 함(원하는 결과를 지표로 설정)
[지표1, 활성유저( Active User)]
- 활성의 의미는 정의하기 나름 : 사이트 진입, 진입 후 추가 행동, 최종 액션(구매 등) 수행 등
- 활성 기준을 상황에 맞게 정하고(전략 방향이 달라짐), 이러한 정의에 기반해 이탈 유저가 정해짐
- 예시 : 전체 Active User, 서비스별 Active User, DAU(Daily Active User), WAU(Weekly Active User), MAU(Monthly Active User), 이탈유저(전체 DAU에 잡히지만 각 서비스 DAU로 잡히지 않는), CVR(Conversion Rate, 특정 행동 후 전환 비율), CTR(Click Through Rate, 어떤 페이지 접속 후 특정 요소 클릭 비율)
[지표2, 재방문율(Retention Ratio)]
- 리텐션이라고도 함, 기본적으로는 방문이 기준이지만 활성 유저처럼 다른 기준으로 정의 가능
- 기울기가 점점 완만해지는 그래프가 좋은 서비스
- N-Day 리텐션 : 최초 사용일 기준 N일 후 재방문 비율, 카카오/인스타와 같은 습관적/반복적 사용 서비스에 적합
- Unbounded 리텐션 : 특정 날짜 포함하여 그 이후에 한번이라도 재방문한 비율, 빈도가 높지 않은 쇼핑몰/채용사이트 등에 적합
- Bracket 리텐션: 설정한 특정 기간을 기준으로 재방문율 측정, 예를 들면 4구간으로 나누는데 1구간은 DAY0, 2구간은 DAY1-3, 3구간은 DAY4-6 이런식, 유저가 각 구간내에 한번이라도 재방문하면 그 구간에서는 재방문한 고객이 되는 것, 사용 주기가 긴 주기적 서비스인 식료품 배달/세차 서비스 등에 적합함
[지표3, 퍼널(Funnel)]
- 이탈 시점을 알기 위해 유입에서 충성까지 고객 단계를 구조화하고, 각 단계의 전환율 측정
- AARRR : 퍼널을 활용하는 프레임워크, 유입(Acquisition), 활성화(Activation), 재방문/재구매(Retention), 수익(Revenue), 추천(Referral)
[지표4, 고객 평생 가치(LTV, Life Time Value)]
- 유저 한명이 생애주기(서비스 시작부터 이탈까지 기간) 동안 가져다줄 이익을 정량화한 것 (높을수록 서비스와 유저의 관계가 좋고 충성도가 높은 것을 의미)
- LTV 산출 방법은 아주 다양하고, 서비스 관점에 따라 고민 필요
- 예측 데이터이므로 꾸준한 모니터링 필수
- 조직은 LTV 증대를 위해 결론적으로 객단가 상승, 재구매 빈도 향상, 이탈률 감소 등등을 목표로 하는 전략을 세움
[지표5, 북극성 지표]
- 서비스의 성공(전략의 핵심)을 의미하며, 유저에게 주는 핵심 가치를 잘 나타내야 함
- 인스타와 넷플릭스 같은 광고,사용료 기반의 서비스의 북극성 지표는 사용시간
- 이커머스와 에어비앤비 같은 판매액,수수료 기반 서비스의 북극성 지표는 거래량
- 슬랙과 줌 같은 사용료 기반의 서비스의 북극성 지표는 효용
- 북극성 지표를 통해 조직 전체의 방향성 통일할 수 있음
'데이터 부트캠프 - Today I Learned' 카테고리의 다른 글
[스파르타 내일배움캠프 / 데이터 분석 트랙] WIL(Weekly I Learned)_3주차 (1) | 2024.12.15 |
---|---|
[스파르타 내일배움캠프 / 데이터 분석 트랙] TIL(Today I Learned)_3주차_24.12.13 (0) | 2024.12.15 |
[스파르타 내일배움캠프 / 데이터 분석 트랙] TIL(Today I Learned)_3주차_24.12.11 (1) | 2024.12.11 |
[스파르타 내일배움캠프 / 데이터 분석 트랙] TIL(Today I Learned)_3주차_24.12.10 (0) | 2024.12.10 |
[스파르타 내일배움캠프 / 데이터 분석 트랙] TIL(Today I Learned)_3주차_24.12.09 (2) | 2024.12.09 |